Éloi Rivard
5aaccca4cf
fix: display an error message when trying to remove the last user from a group
2024-04-08 14:44:15 +02:00
Éloi Rivard
1fbb074cc5
refactor: user permissions lazy loading
2024-04-07 15:21:32 +02:00
Éloi Rivard
e02b54f327
refactor: locally store the model names in lowercase
2024-04-06 18:21:50 +02:00
Éloi Rivard
fbd0d3029e
refactor: rename User read/write/permissions attributes
2024-04-01 14:59:56 +02:00
Éloi Rivard
06049d27a4
feat: better error messages when Canaille is launched without configuration
2024-03-29 19:31:01 +01:00
Éloi Rivard
a6bd3e6002
chore: remove unused guard
2024-03-29 12:00:20 +01:00
Éloi Rivard
8625318341
feat: use pydantic to validate the configuration
2024-03-28 17:44:26 +01:00
Éloi Rivard
265f266638
chore: use the standard tomllib python module instead of toml
starting from python 3.11
2024-03-26 13:57:14 +01:00
Éloi Rivard
4edffcaa9f
chore: use isort instead of reoder-python-imports
2024-03-15 19:58:37 +01:00
Éloi Rivard
395b6ab4f3
chore: add docformatter pre-commit
2023-12-28 18:31:57 +01:00
Éloi Rivard
e8b620588e
refactor: LDAP backend initialization
2023-12-27 10:57:22 +01:00
Éloi Rivard
6dac4a1ca8
tests: fix github CI, again
2023-12-24 13:14:38 +01:00
Éloi Rivard
92c2e864af
tests: fix github CI
2023-12-24 13:03:35 +01:00
Éloi Rivard
445d854af1
feat: THEME can be a relative path
2023-12-22 18:00:07 +01:00
Éloi Rivard
52fc93a481
refactor: avoid to directly use the 'configuration' fixture in tests
2023-12-19 18:28:04 +01:00
Éloi Rivard
7c06d8d51e
refactor: custom error pages are only loaded when themer is loaded
2023-12-15 11:58:25 +01:00
Éloi Rivard
214b16db37
fix: another mimetype guard
2023-12-15 11:02:31 +01:00
Éloi Rivard
3255eaa31c
fix: a crash when no ACL was defined
2023-12-15 10:50:53 +01:00
Éloi Rivard
11f969a71f
fix: don't crash when mimetype detection fails
2023-12-15 10:25:08 +01:00
Éloi Rivard
88aa9e27fb
fix: get_mail_domain ignores the server port
2023-12-14 19:24:09 +01:00
Éloi Rivard
02a7e84833
feat: raise an exception when toml is not installed and a configuration file is passed in the environment
2023-12-14 16:04:46 +01:00
Éloi Rivard
410d464242
refactor: force objects to be string for hashing
2023-11-28 18:51:28 +01:00
Éloi Rivard
e504c73b38
chore: remove useless var
2023-11-22 12:30:17 +01:00
Éloi Rivard
b6cfa1517c
refactor: form model attributes coercion
2023-11-22 11:30:30 +01:00
Éloi Rivard
3752693480
refactor: use wtforms readonly validator
2023-11-21 18:34:59 +01:00
Éloi Rivard
1fd8af2cf4
refactor: models attributes cardinality is closer to SCIM models
2023-11-17 21:21:25 +01: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
a2e3fce204
feat: flask-babel and pytz are now part of the front extras
2023-09-01 10:46:56 +02:00
Éloi Rivard
8b98726348
refactor: User.login and User.logout methods moved to app.flask module
2023-08-23 14:56:56 +02:00
Éloi Rivard
96ccf12ad9
feat: split installation in different extras packages
2023-08-17 14:34:30 +02:00
Éloi Rivard
5a9df64f68
feat: implement registration process
2023-08-15 16:31:44 +02:00
Éloi Rivard
b60dbebd28
Merge branch 'main' into registration
2023-08-15 00:48:49 +02:00
Éloi Rivard
191791ac72
fix: import render_template from flask_themer instead of flask
2023-08-14 15:45:25 +02:00
Éloi Rivard
c895366684
refactor: store user profile in g.user
2023-08-13 22:08:28 +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
1352752db8
refactor: utilities for form field readonliness
2023-07-24 18:07:35 +02:00
Éloi Rivard
4347fb572a
chore: rename HTMXForm to Form
2023-07-23 23:38:11 +02: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
54abdaea3b
Dynamic model registration
2023-07-12 12:34:00 +02:00
Éloi Rivard
2da4c92d9e
check command considers default backup values
...
at least until #138 is implement ...
2023-07-10 19:50:05 +02:00
Éloi Rivard
e37aab6cbc
check command fix
...
the check command needs a backend context
2023-07-10 18:52:12 +02:00
Éloi Rivard
4f42798e39
Refactored keypair management
2023-07-01 19:06:26 +02:00
Éloi Rivard
52482ca19c
Implements flask OIDC converters
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
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
bb95978376
Boosts webpages with HTMX
...
Fixes #144
Fixes #145
2023-06-26 17:17:07 +02:00
Éloi Rivard
8617fc0f2b
Implement multiple fields
2023-06-22 16:56:44 +02:00