Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

- [PR-375](https://github.com/itk-dev/os2loop/pull/375)
Added Cura login module

## [1.2.5]

- [374](https://github.com/itk-dev/os2loop/pull/374)
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ for further details.
## Coding standards

```sh
docker compose exec phpfpm composer coding-standards-apply
docker compose exec phpfpm composer coding-standards-check
docker compose exec phpfpm vendor/bin/phpcs
docker compose exec phpfpm vendor/bin/phpcbf
```

```sh
Expand Down
15 changes: 13 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@
"drupal/viewsreference": "^2.0@beta",
"drupal/xls_serialization": "^2.0",
"drush/drush": "^13.0",
"jjj/chosen": "^2.2"
"jjj/chosen": "^2.2",
"os2loop/os2loop_cura_login": "^1.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^1.0",
Expand Down Expand Up @@ -102,11 +103,21 @@
"type": "vcs",
"url": "https://git.drupalcode.org/project/theme_switcher"
},
"os2loop/os2loop_cura_login": {
"type": "path",
"url": "web/profiles/custom/os2loop/modules/os2loop_cura_login",
"options": {
"symlink": true,
"versions": {
"os2loop/os2loop_cura_login": "1.0"
}
}
},
"os2loop/os2loop_fixtures": {
"type": "path",
"url": "web/profiles/custom/os2loop/modules/os2loop_fixtures",
"options": {
"symlink": false,
"symlink": true,
"versions": {
"os2loop/os2loop_fixtures": "1.0"
}
Expand Down
96 changes: 93 additions & 3 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
composer.lock
vendor/
59 changes: 59 additions & 0 deletions web/profiles/custom/os2loop/modules/os2loop_cura_login/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Cura login

Use `https://os2loop.example.com/os2loop-cura-login/start` as `linkURL` (or is it `formPostUrl`?) in the Cura link
configuration.

## How does it work?

Cura will make a `POST` `multipart/form-data` request to `/os2loop-cura-login/start` with a `payload` parameter containing
a JWT like

``` json
{
"header" : {
"alg" : "HS256"
},
"payload" : {
"brugerId" : "az…",
"organisationsNavn" : "Digitalisering",
"brugerensNavn" : "…",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dansk json ser skørt ud

"sorid" : "aarhus",
"exp" : 1756978913
},
"signature" : "…"
}
```

However, it can also make a `GET` request to `/os2loop-cura-login/start/{payload}` or
`/os2loop-cura-login/start/payload={payload}`.

## Example

``` shell
curl "http://$(docker compose port nginx 8080)/os2loop-cura-login/start"
```

``` shell
drush os2loop-cura-login:get-login-url --help
```

``` shell name=drush-get-login-url
drush os2loop-cura-login:get-login-url az000000 --get=jwt --destination=/user \
--algorithm="$(drush config:get --format string os2loop_cura_login.settings cura.signing_algorithm --include-overridden)" \
--secret="$(drush config:get --format string os2loop_cura_login.settings cura.signing_secret --include-overridden)"
```

## Development and debugging

``` php
# settings.local.php
$config['os2loop_cura_login.settings']['general']['log_level'] = \Drupal\Core\Logger\RfcLogLevel::DEBUG;
```

Run

``` shell
drush config:get os2loop_cura_login.settings --include-overridden
```

to show the current module config.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "os2loop/os2loop_cura_login",
"description": "drupal/os2loop_cura_login",
"type": "os2loop-custom-module",
"license": "GPL-2.0+",
"authors": [
{
"name": "Mikkel Ricky",
"email": "rimi@aarhus.dk"
}
],
"require": {
"firebase/php-jwt": "^6.11"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Schema for the configuration files of the OS2Loop Cura login module.
os2loop_cura_login.settings:
type: config_object
label: 'OS2Loop Cura login settings'
mapping:
example:
type: string
label: 'Example'
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: "OS2Loop Cura login"
type: module
description: "OS2Loop Cura login"
package: "OS2Loop"
core_version_requirement: ^10 || ^11
dependencies:
- drupal:user
- openid_connect:openid_connect

configure: os2loop_cura_login.settings
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
os2loop_cura_login.settings:
title: "OS2Loop Cura login settings"
route_name: os2loop_cura_login.settings
description: "Configure OS2Loop Cura login settings"
parent: os2loop.group.admin
weight: 100
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
os2loop_cura_login.start:
path: "/os2loop-cura-login/start"
defaults:
_title: "Start Cura login with POST or GET"
_controller: '\Drupal\os2loop_cura_login\Controller\Os2loopCuraLoginController::start'
methods: [GET, POST]
requirements:
_user_is_logged_in: "FALSE"
options:
no_cache: TRUE

os2loop_cura_login.start_get_jwt:
path: "/os2loop-cura-login/start/{jwt}"
defaults:
_title: "Start Cura login with JWT in request path"
_controller: '\Drupal\os2loop_cura_login\Controller\Os2loopCuraLoginController::start'
methods: [GET]
requirements:
_user_is_logged_in: "FALSE"
options:
no_cache: TRUE

os2loop_cura_login.authenticate:
path: "/os2loop-cura-login/authenticate/{jwt}"
defaults:
_title: "Authenticate with Cura login"
_controller: '\Drupal\os2loop_cura_login\Controller\Os2loopCuraLoginController::authenticate'
methods: [GET]
requirements:
_user_is_logged_in: "FALSE"
options:
no_cache: TRUE

os2loop_cura_login.settings:
path: "/admin/config/os2loop/os2loop_cura_login/settings"
defaults:
_form: '\Drupal\os2loop_cura_login\Form\SettingsForm'
_title: "OS2Loop Cura login settings"
requirements:
_permission: "administer site settings"
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
services:
_defaults:
autowire: true

logger.channel.os2loop_cura_login:
parent: logger.channel_base
arguments: ["os2loop_cura_login"]

Drupal\os2loop_cura_login\Settings:

Drupal\os2loop_cura_login\CuraHelper:

Drupal\os2loop_cura_login\IdPHelper:

Drupal\os2loop_cura_login\UserHelper:
Loading