Commit graph

615 commits

Author SHA1 Message Date
Éloi Rivard
09673fdf4d
tests: fix UTCDatetime form field unit tests during light saving 2023-11-16 17:42:04 +01:00
Éloi Rivard
40b868cfee
tests: multiple emails and phone_numbers 2023-10-02 21:58:46 +02:00
Éloi Rivard
88dcf94750
Revert "tests: domain is localhost.local"
This reverts commit 44aed27719.
2023-10-01 15:42:16 +02:00
Éloi Rivard
44aed27719
tests: domain is localhost.local 2023-09-20 09:54:17 +02:00
Éloi Rivard
a2fb88fb05
tests: fix CI 2023-09-15 18:01:17 +02:00
Éloi Rivard
46c795b3b5
refactor: only load oidc module if OIDC is configured 2023-09-15 17:56:23 +02:00
Éloi Rivard
a7b3d4be88
feat: user login redirections
if users login during the authorization phase, they
get redirected to the authorization page afterwards
2023-09-01 09:12:40 +02:00
Éloi Rivard
8be771e41d
tests: fix CI 2023-08-31 22:44:06 +02:00
Éloi Rivard
21ea0238b5
OIDC jwks endpoint do not return empty kid claim 2023-08-26 19:59:44 +02:00
Éloi Rivard
553595c5ed
doc: model documentation 2023-08-17 16:11:24 +02:00
Éloi Rivard
588ec8792e
Implement a dummy inmemory backend 2023-08-17 12:33:45 +02:00
Éloi Rivard
2909357b9c
fix: typo 2023-08-16 17:34:53 +02:00
Éloi Rivard
6ede3b75cb
tests: disable javascript in template rendering 2023-08-16 17:33:59 +02:00
Éloi Rivard
39a5eafd71
tests: fix a variable in ldap tests 2023-08-16 16:55:21 +02:00
Éloi Rivard
ccaba0b9d5
feat: registration email admin debug page 2023-08-15 17:00:38 +02:00
Éloi Rivard
5a9df64f68
feat: implement registration process 2023-08-15 16:31:44 +02:00
Éloi Rivard
e55b56419d
refactor: extract auth.py from account.py 2023-08-14 16:15:41 +02:00
Éloi Rivard
d27aab8651
refactor: the core module has its own main blueprint 2023-08-14 13:52:24 +02:00
Éloi Rivard
c895366684
refactor: store user profile in g.user 2023-08-13 22:08:28 +02:00
Éloi Rivard
1f9d148c0d
chore: bump to python-slapd 0.1.4 2023-08-13 16:06:16 +02:00
Éloi Rivard
fd24c704c0
feat: implement email verification 2023-08-06 11:58:16 +02:00
Éloi Rivard
8fe8494587
feat: validate phone numbers 2023-08-03 19:08:34 +02:00
Éloi Rivard
9940a98188
refactor: profile button action renaming 2023-07-30 23:08:29 +02:00
Éloi Rivard
97c6a3ea38
tests: adds a fixture that automatically compiles babel catalogs 2023-07-25 09:56:23 +02:00
Éloi Rivard
1352752db8
refactor: utilities for form field readonliness 2023-07-24 18:07:35 +02:00
Éloi Rivard
59bc6e18d7 Merge branch 'issue-158-modals' into 'main'
modals are HTML pages instead of JS elements

See merge request yaal/canaille!144
2023-07-18 16:39:35 +00:00
Éloi Rivard
b4908d5e57
modals are HTML pages instead of JS elements
This will help providing the very same user experience for users with
and without javascript. We will still be able to re-enable javascript
modals in the future, but this should be done from the ground up, HTML
first and javascript after.
2023-07-18 18:34:10 +02:00
Éloi Rivard
a631946cb5
remove unnecessary application context in unit tests 2023-07-18 16:34:32 +02:00
Éloi Rivard
54abdaea3b Dynamic model registration 2023-07-12 12:34:00 +02:00
Éloi Rivard
fd66f86a72 USER_FILTER is parsed with jinja 2023-07-04 18:34:16 +02:00
Éloi Rivard
1a0a8096eb Enable jinja2 strict mode in unit tests 2023-07-01 19:56:13 +02:00
Éloi Rivard
4f42798e39 Refactored keypair management 2023-07-01 19:06:26 +02:00
Éloi Rivard
f686121f0d Wording 2023-06-30 18:12:14 +02:00
Éloi Rivard
021c1b3d11 Pagination pluralization 2023-06-30 18:12:13 +02:00
Éloi Rivard
7ff2360174 send reset emails to all the user emails 2023-06-29 17:47:01 +02:00
Éloi Rivard
7bce9b9a74 ldap backend: make sure to escape special chars in object identifiers 2023-06-29 15:55:39 +02:00
Éloi Rivard
3ecb8b4722 Implements a flask Group converter 2023-06-29 15:55:39 +02:00
Éloi Rivard
f504bb3a66 Implements a flask User converter 2023-06-29 15:55:39 +02:00
Éloi Rivard
e4e49da44a Renamed configuration entries
- USER_ID_ATTRIBUTE is now USER_RDN
- GROUP_ID_ATTRIBUTE is now GROUP_RDN
2023-06-29 15:55:39 +02:00
Éloi Rivard
57af18d557 Use a unique identifier to indentify users in URLS
Previously we used the uid since we supposed this value was always
valid, but some users user the mail attribute as the User RDN in their
OpenLDAP installation, and do not have a uuid.
2023-06-29 15:55:39 +02:00
Éloi Rivard
4551dc3f60 Add unit test for user with different RDN 2023-06-29 15:55:39 +02:00
Éloi Rivard
4eda4f6c99 inline validation keep the profile indicator icons 2023-06-28 15:42:35 +02:00
Éloi Rivard
45ec950f5f Fixed FieldList readonly state 2023-06-28 13:26:15 +02:00
Éloi Rivard
7b9e97f5e4 Defer and clean up JS scripts 2023-06-26 18:00:58 +02:00
Éloi Rivard
c091ca19cf Removed html5shiv 2023-06-26 17:48:25 +02:00
Éloi Rivard
0342e30ec0 Fixed strings inadvertently refactored 2023-06-22 18:12:54 +02:00
Éloi Rivard
b7e1590510 User emails and phone numbers are now multiple 2023-06-22 17:55:26 +02:00
Éloi Rivard
8617fc0f2b Implement multiple fields 2023-06-22 16:56:44 +02:00
Éloi Rivard
361fda0386 Renamed User.phone_number in User.phone_numbers 2023-06-22 15:33:03 +02:00
Éloi Rivard
b5bd497d0e Implemented User.preferred_email 2023-06-22 15:24:13 +02:00
Éloi Rivard
371f806695 Renamed User.email in User.emails 2023-06-22 15:15:46 +02:00
Éloi Rivard
0cbac78624 htmx: return a 400 error when a request sends an invalid form 2023-06-21 15:59:28 +02:00
Éloi Rivard
8061042e46 client admin test refactoring 2023-06-20 09:32:43 +02:00
Éloi Rivard
a9d9d43152 Configuration entries can be loaded from files.
Co-authored-by: Sofi <sofi+git@mailbox.org>
2023-06-15 18:38:37 +02:00
Éloi Rivard
23e9e7e71a Renamed Backend in BaseBackend 2023-06-05 18:10:37 +02:00
Éloi Rivard
14ccb69762 backend fixture is parametrizable 2023-06-03 23:39:38 +02:00
Éloi Rivard
422af73b89 moved slapd_server in the ldap unit tests module 2023-06-03 23:39:38 +02:00
Éloi Rivard
e3aede6645 Fixed a unit test control value 2023-06-03 23:38:45 +02:00
Éloi Rivard
fa7c68ff5b Moved CustomSlapdObject class into the ldap test module 2023-06-03 18:35:59 +02:00
Éloi Rivard
c7f23e845c datetime-local input fields are transformed in UTC server-side 2023-06-01 13:53:32 +02:00
Éloi Rivard
e20fb23e6f typo 'successfuly' -> 'successfully' 2023-05-30 09:44:11 +02:00
Éloi Rivard
38ee26db83 refactored User locking mechanism 2023-05-26 17:48:50 +02:00
Éloi Rivard
17c2f7a5cd Implemented LDAP ppolicy support. 2023-05-26 15:23:43 +02:00
Éloi Rivard
d8158d6a72 Use ruff linter 2023-05-25 13:37:58 +02:00
Éloi Rivard
8ed10da81e Removed duplicate test 2023-05-24 14:10:45 +02:00
Éloi Rivard
a92542cd81 Moved models specificities in the backend module 2023-05-20 21:24:14 +02:00
Éloi Rivard
fd493fb8d0 check command unit test looks for a invalid SMTP server instead of a invalid LDAP server 2023-05-20 20:11:19 +02:00
Éloi Rivard
c75108344b Moved login placeholder mechanism in the backend module 2023-05-20 20:07:40 +02:00
Éloi Rivard
033d436878 Moved LDAP schema installation in the ldap backend module 2023-05-20 20:04:23 +02:00
Éloi Rivard
c1d1706007 Moved every model import to canaille.models 2023-05-20 20:02:00 +02:00
Éloi Rivard
0b3362f4c5 Remove useless calls to slapd_server fixture 2023-05-20 18:28:31 +02:00
Éloi Rivard
6f637b8129 Refactored the unit test backend fixtures 2023-05-20 17:17:46 +02:00
Éloi Rivard
475a6d153c add pytest-flask dependency 2023-05-20 16:42:35 +02:00
Éloi Rivard
30282e633b The LDAP Backend is now a class 2023-05-20 12:08:04 +02:00
Éloi Rivard
8c33649872 Avoid direct call to ldap in logging unit tests 2023-05-19 19:35:10 +02:00
Éloi Rivard
2b0b5a5213 Avoid direct call to ldap in configuration unit tests 2023-05-19 19:28:56 +02:00
Éloi Rivard
d2bb1aebeb Additional User unit tests 2023-05-18 16:43:23 +02:00
Éloi Rivard
7b76d8f003 Model unit test fix 2023-05-18 16:35:14 +02:00
Éloi Rivard
4f9dac8782 Tests the model mechanism 2023-05-17 18:19:05 +02:00
Éloi Rivard
61f2280f34 unit test explicit object reloading 2023-05-17 16:23:54 +02:00
Éloi Rivard
77c5d7ac7a Improved account unit tests 2023-05-17 16:20:37 +02:00
Éloi Rivard
d66619a01c OIDC lifetimes are not casted to string anymore 2023-05-17 09:29:32 +02:00
Éloi Rivard
b346b0db8a Use generic Consent.consent_id instead of LDAP Consent.cn attribute 2023-05-17 08:54:13 +02:00
Éloi Rivard
00b5997a61 Avoid calls to LDAPUser.may and LDAPUser.must 2023-05-16 22:18:38 +02:00
Éloi Rivard
5836a0bd61 Use generic 'formatted_name' attribute instead of LDAP 'name' 2023-05-16 18:01:48 +02:00
Éloi Rivard
28e7d1c662 LDAPObject __getattr__ filters None values 2023-05-16 16:05:09 +02:00
Éloi Rivard
8998fe9b62 Explicit arguments when using Model.get 2023-05-16 11:29:40 +02:00
Éloi Rivard
8162bd3e24 Fixes calls to the LDAP 'Group.member' attribute 2023-05-13 00:24:24 +02:00
Éloi Rivard
bace94b1f5 Explicit Group.get attributes 2023-05-13 00:19:32 +02:00
Éloi Rivard
1695331772 Fixes a call to the LDAP 'jpegPhoto' attribute 2023-05-12 20:02:19 +02:00
Éloi Rivard
65013403a1 Fixes a call to the LDAP 'userPassword' attribute 2023-05-12 20:00:13 +02:00
Éloi Rivard
6c5053afb1 Fixes a call to a LDAP named attribute, again 2023-05-12 18:51:50 +02:00
Éloi Rivard
02b553b9db remove unnecessary step in the password reset unit test 2023-05-11 16:27:13 +02:00
Éloi Rivard
88179b23b8 fix non-generic model attribute calls 2023-05-11 16:02:32 +02:00
Éloi Rivard
abf9a23ac8 unit tests: only use user_name to authenticate users 2023-05-11 15:33:34 +02:00
Éloi Rivard
6e6d15fec1 Fixed password initialization mail recipients 2023-05-05 10:53:48 +02:00
Éloi Rivard
e8e6060c74 ACL group filter can be simple group name instead of full dn 2023-05-02 16:25:00 +02:00
Éloi Rivard
fa62c16768 Moved canaille.ldap_backend to canaille.backends.ldap 2023-04-18 20:22:55 +02:00
Éloi Rivard
c4676ec572 Update User group when save is called 2023-04-17 18:43:43 +02:00
Éloi Rivard
edb64cbfe1 ACL filters are no more LDAP filters but user attribute mappings. 2023-04-14 19:53:16 +02:00
Éloi Rivard
4bfbeccc1c Fixed empty models attributes registration 2023-04-13 18:02:20 +02:00
Éloi Rivard
850d274157 Flaskutil tests avoid to use ldap configuration options 2023-04-10 23:08:09 +02:00
Éloi Rivard
0376a3bab8 Cleartext password in unit tests 2023-04-10 21:42:14 +02:00
Éloi Rivard
e2b96af1ee Moved LDAP configuration entry to BACKENDS.LDAP 2023-04-10 20:31:54 +02:00
Éloi Rivard
cc45ed4be9 OIDC.JWT.MAPPING configuration option is really optional 2023-04-10 20:09:47 +02:00
Éloi Rivard
7cd078bf81 Correctly read OIDC dynamic registration config entries 2023-04-10 19:28:26 +02:00
Éloi Rivard
61f5d25f2f Creates a OIDC configuration section for all the OIDC related entries 2023-04-10 16:24:43 +02:00
Éloi Rivard
65efece01e Renamed LDAPObject.initialize in LDAPObject.install 2023-04-09 23:17:24 +02:00
Éloi Rivard
83f67331d3 Split commands in their dedicated modules 2023-04-09 21:58:11 +02:00
Éloi Rivard
79f12b1d0a 'app' submodule 2023-04-09 15:52:55 +02:00
Éloi Rivard
855747a79f Ensure command return codes are tested 2023-04-09 15:47:47 +02:00
Éloi Rivard
a38ef06356 Re-organized commands tests 2023-04-09 14:35:58 +02:00
Éloi Rivard
08f8bfbfdb Moved user and group management in the core submodule 2023-04-09 13:34:38 +02:00
Éloi Rivard
4c454f6de4 Removed unused imports 2023-04-09 02:13:34 +02:00
Éloi Rivard
01ed1d8013 Avoid to explicitly call User.load_groups 2023-04-09 00:14:51 +02:00
Éloi Rivard
c8b76dc845 Use LDAPObject.reload in tests instead of LDAPObject.get 2023-04-08 21:36:21 +02:00
Éloi Rivard
b413344385 Properly delete users in ldap unit tests 2023-04-08 20:14:30 +02:00
Éloi Rivard
e738faf52b Group methods refactoring 2023-04-08 00:33:42 +02:00
Éloi Rivard
52f7276527 Explicitly use User.formatted_name instead of User.name 2023-04-07 22:45:42 +02:00
Éloi Rivard
087ec1ef58 Fixed remaining ldap attribute calls 2023-04-07 22:38:01 +02:00
Éloi Rivard
706d50449a Split the User.get method 2023-04-07 21:24:09 +02:00
Éloi Rivard
1a079fcd45 Added a group deletion test 2023-04-07 21:14:26 +02:00
Éloi Rivard
db3a4a74ff Renamed user attributes to match SCIM naming convention 2023-04-07 20:12:24 +02:00
Éloi Rivard
92ab563489 Fixes wtforms validator translations 2023-04-02 13:30:51 +02:00
Éloi Rivard
d53fdde986 Refactored utils 2023-04-02 00:32:27 +02:00
Éloi Rivard
1f1bb353e0 Dynamic form validation with htmx 2023-03-30 23:22:58 +02:00
Éloi Rivard
2fb0085d7b OIDC client form renaming 2023-03-30 00:40:25 +02:00
Éloi Rivard
78a129d494 Forms validate URIs 2023-03-29 21:33:47 +02:00
Éloi Rivard
b82852d788 Fixed the CI 2023-03-29 19:46:05 +02:00
Éloi Rivard
f97dc3b2c6 CSRF protection everywhere 2023-03-28 20:30:29 +02:00
Éloi Rivard
98df762666 Fixed user uid and email unicity at creation 2023-03-27 23:16:32 +02:00
Éloi Rivard
7e0e0d6068 Profile edition refactoring 2023-03-22 08:52:00 +01:00
Éloi Rivard
bacbb9a3bb Avoid to display flash messages twice when impersonating or sending a password initialization mail 2023-03-21 22:01:32 +01:00
Éloi Rivard
dd394391c8 Added last_modified and etag headers on the user photos 2023-03-18 01:29:04 +01:00
Éloi Rivard
61940844e6 Properly handle LDAP date timezones 2023-03-18 00:39:32 +01:00
Éloi Rivard
8e84b016da Organization field support 2023-03-17 17:36:23 +01:00
Éloi Rivard
24f0417460 Split the profile page in two 2023-03-16 18:45:35 +01:00
Éloi Rivard
0f93029d2a Split the consent page in two 2023-03-16 18:45:35 +01:00
Éloi Rivard
69c67345c2 Introduced a submenu 2023-03-16 18:45:34 +01:00
Éloi Rivard
5aad527454 Unit tests use WebTest .mustcontain method when possible 2023-03-16 16:25:14 +01:00
Éloi Rivard
94af1744ba pre-commit update 2023-03-14 12:08:37 +01:00
Éloi Rivard
6474d39fac Removes useless tests initializations 2023-03-12 20:18:49 +01:00
Éloi Rivard
fb1c6446fa Users can only search other users based on the fields they can read or write 2023-03-12 19:04:39 +01:00
Éloi Rivard
2c4c3fb37e Title edition support 2023-03-11 22:34:29 +01:00
Éloi Rivard
4170242073 Address edition support (but not in the OIDC claims yet) 2023-03-11 20:12:50 +01:00
Éloi Rivard
822988536d LDAPObject can have several objectClass 2023-03-11 19:46:12 +01:00
Éloi Rivard
048cbd2d59 Group test refactoring 2023-03-11 19:12:58 +01:00
Éloi Rivard
402e60325c departmentNumber edition support #129 2023-03-11 12:55:03 +01:00
Éloi Rivard
3406428f13 Renamed group attributes to match SCIM naming convention 2023-03-11 12:54:27 +01:00
Éloi Rivard
971cf317c9 Used 'id' instead of 'dn' 2023-03-10 18:14:15 +01:00
Éloi Rivard
e802e3d5e2 Consent cn alias 2023-03-10 00:38:16 +01:00
Éloi Rivard
3d37073f18 Fixed unit tests 2023-03-09 20:58:45 +01:00
Éloi Rivard
46a346a0d0 Table search implementation 2023-03-09 19:31:59 +01:00
Éloi Rivard
fbf449edd6 LDAPObject fuzzy search 2023-03-09 19:31:59 +01:00
Éloi Rivard
091270df53 LDAPObject pagination performance improvements
Creates a LDAPObjectQuery class that is returned by LDAPObject.filter
This avoids to create objects for each ldap result, but only for the
asked slice. It also store the whole results length so `len` calls are
a bit faster.
2023-03-09 19:31:59 +01:00
Éloi Rivard
e5d968d4f5 Every list of items is paginated server-side. 2023-03-09 19:31:59 +01:00
Éloi Rivard
36cc47e40d Moved jinja macros in their own directory 2023-03-09 18:10:28 +01:00
Éloi Rivard
681c311d05 Forgotten password test improvement
Search for error messages in flashes instead of directly in the HTML.
2023-03-09 18:10:28 +01:00
Éloi Rivard
990c624c32 Save one LDAP connection when calling save() 2023-03-09 13:00:17 +01:00
Éloi Rivard
d0f6c341f3 LDAPObject refactoring 2023-03-09 01:14:07 +01:00
Éloi Rivard
53581404ab LDAPObject dn attributes are automatically initialized 2023-03-08 23:53:53 +01:00
Éloi Rivard
d201d6f617 Lazy conversion of LDAP to python format for LDAPObject attributes 2023-03-08 18:54:27 +01:00
Éloi Rivard
7e42467bfc Renamed LDAPObject.rdn in LDAPObject.rdn_attribute 2023-03-08 18:50:33 +01:00
Éloi Rivard
5d9a41f18b Delayed LDAPObject may and must initialization 2023-03-08 00:53:27 +01:00
Éloi Rivard
c5b11d2fb3 Merge LDAPObject.all and LDAPObject.filter in LDAPObject.query 2023-03-07 17:58:27 +01:00
Éloi Rivard
cc65d78719 Renames LDAPObject.ldap in LDAPObject.ldap_connection 2023-03-07 17:55:32 +01:00
Éloi Rivard
a368b36d9c Better populate test cleaning 2023-03-07 17:27:31 +01:00
Éloi Rivard
d345218557 Updated to flask-babel 3 2023-03-01 15:32:40 +01:00
Éloi Rivard
a57c86cc2c SMTP SSL fixes 2023-02-28 10:07:08 +01:00
Éloi Rivard
9d3cd71164 Explicit form names in unit tests 2023-02-26 22:23:57 +01:00
Éloi Rivard
2c2797fbad A populate command can be used to fill the database with random users generated with faker. 2023-02-26 19:48:07 +01:00
Éloi Rivard
b850f51ef0 Tests ensures users created during the test are deleted in the end 2023-02-26 19:47:27 +01:00
Éloi Rivard
7458868f77 Pre-consented clients are displayed in the user consent list, and their consents can be revoked. 2023-02-14 21:56:47 +01:00
Éloi Rivard
d551b1ab35 Revoked consents can be restored 2023-02-14 19:05:43 +01:00
Éloi Rivard
ea9f6ebe00 Use full ldap 'givenName' instead of 'gn' 2023-02-04 22:23:58 +01:00
Éloi Rivard
3359b51d9b Implements admin token deletion 2023-02-04 18:41:49 +01:00
Éloi Rivard
b94c5b468c Reworked admin token page 2023-02-03 18:44:09 +01:00
Éloi Rivard
0cdbcbc2fa Removed debug prints 2023-01-30 20:01:22 +01:00
Éloi Rivard
b059e6e719 Client deletion also delete related objects 2023-01-30 19:58:25 +01:00
Éloi Rivard
c1b3a64757 Use pyquery in i18n tests 2023-01-29 23:06:12 +01:00
Éloi Rivard
08827d3714 Checks flask flashed messages with flask_webtest Response.flashes 2023-01-28 19:02:00 +01:00
Éloi Rivard
63f927830a Fixed dynamic client registration scope management 2023-01-28 14:04:04 +01:00
Éloi Rivard
7b684aed4a preferredLanguage is a single value 2023-01-24 18:15:26 +01:00
Éloi Rivard
c470e7f134 Explicitely set Consent cn 2023-01-23 18:55:27 +01:00
Éloi Rivard
acd54e4afb Dedicated connectivity test email 2023-01-22 12:49:15 +01:00
Éloi Rivard
ba83ab0a20 Merge branch 'html-locale' into 'main'
Set the correct locale in the HTML main tag.

Closes #122

See merge request yaal/canaille!87
2023-01-18 17:08:24 +00:00
Éloi Rivard
d7c84079e3 Set the correct locale in the HTML main tag. 2023-01-18 18:02:18 +01:00
Éloi Rivard
9d44967cad Wording and punctuation fixes 2023-01-15 09:31:44 +01:00
Éloi Rivard
d8bcb0bdf0 Ensures the token expires_in claim and the access_token exp claim have the same value. 2023-01-14 14:59:13 +01:00
Éloi Rivard
7cb2da3ca3 refactoring: start to split the canaille installation between submodules 2022-12-29 02:11:56 +01:00
Éloi Rivard
a66ac32689 refactoring: moved the authlib related test configuration in the oidc module 2022-12-29 02:06:54 +01:00
Éloi Rivard
adec1acbaa refactoring: removed useless imports 2022-12-29 01:53:08 +01:00
Éloi Rivard
cae49fcec9 avoid ldap related session variable names 2022-12-29 01:10:07 +01:00
Éloi Rivard
cd1d0a30d5 added 'autoflake' to the precommit tool list 2022-12-29 00:41:32 +01:00
Éloi Rivard
32f6595c02 objectClass is not mandatory for User and Group creation 2022-12-29 00:29:26 +01:00
Éloi Rivard
64ac2af981 Merge branch 'endsession-bugfix' into 'main'
OIDC end_session was not returning the `state` parameter in the `post_logout_redirect_uri`

See merge request yaal/canaille!82
2022-12-27 21:16:52 +00:00
Éloi Rivard
c1ae5e059c refactoring: edited mail error test to improve coverage 2022-12-27 22:09:53 +01:00
Éloi Rivard
5793a73801 OIDC end_session was not returning the state parameter in the post_logout_redirect_uri 2022-12-27 21:48:44 +01:00
Éloi Rivard
63bb459d16 unit tests: mails configuration without credentials 2022-12-27 21:37:58 +01:00
Éloi Rivard
630d602a7a groups minor refactoring 2022-12-27 21:32:21 +01:00