doc: slightly improved the SCIM documentation

This commit is contained in:
Éloi Rivard 2024-12-12 09:56:22 +01:00
parent 3165ca25ca
commit 55b1d7a7f3
No known key found for this signature in database
GPG key ID: 7EDA204EA57DD184
3 changed files with 212 additions and 112 deletions

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-12-08 11:58+0100\n" "POT-Creation-Date: 2024-12-12 09:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.16.0\n"
#: canaille/app/flask.py:53 #: canaille/app/flask.py:55
msgid "No SMTP server has been configured" msgid "No SMTP server has been configured"
msgstr "" msgstr ""
@ -84,8 +84,8 @@ msgstr ""
msgid "John Doe" msgid "John Doe"
msgstr "" msgstr ""
#: canaille/backends/ldap/backend.py:178 canaille/core/endpoints/forms.py:165 #: canaille/backends/ldap/backend.py:178 canaille/core/endpoints/forms.py:166
#: canaille/core/endpoints/forms.py:426 #: canaille/core/endpoints/forms.py:427
msgid "jdoe" msgid "jdoe"
msgstr "" msgstr ""
@ -135,6 +135,10 @@ msgstr ""
msgid "Compromised password check failure on {website_name}" msgid "Compromised password check failure on {website_name}"
msgstr "" msgstr ""
#: canaille/core/endpoints/admin.py:347 canaille/core/mails.py:258
msgid "One-time password authentication on {website_name}"
msgstr ""
#: canaille/core/endpoints/account.py:92 canaille/core/endpoints/account.py:118 #: canaille/core/endpoints/account.py:92 canaille/core/endpoints/account.py:118
msgid "You will receive soon an email to continue the registration process." msgid "You will receive soon an email to continue the registration process."
msgstr "" msgstr ""
@ -159,12 +163,12 @@ msgstr ""
msgid "Your account has already been created." msgid "Your account has already been created."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:279 #: canaille/core/endpoints/account.py:280
msgid "You are already logged in, you cannot create an account." msgid "You are already logged in, you cannot create an account."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:300 canaille/core/endpoints/forms.py:316 #: canaille/core/endpoints/account.py:301 canaille/core/endpoints/forms.py:317
#: canaille/core/endpoints/forms.py:444 canaille/core/templates/groups.html:5 #: canaille/core/endpoints/forms.py:445 canaille/core/templates/groups.html:5
#: canaille/core/templates/groups.html:23 #: canaille/core/templates/groups.html:23
#: canaille/core/templates/partial/group-members.html:15 #: canaille/core/templates/partial/group-members.html:15
#: canaille/core/templates/partial/users.html:18 #: canaille/core/templates/partial/users.html:18
@ -172,114 +176,119 @@ msgstr ""
msgid "Groups" msgid "Groups"
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:338 #: canaille/core/endpoints/account.py:339
#: canaille/core/endpoints/account.py:431 #: canaille/core/endpoints/account.py:432
msgid "User account creation failed." msgid "User account creation failed."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:349 #: canaille/core/endpoints/account.py:350
msgid "Your account has been created successfully." msgid "Your account has been created successfully."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:364 #: canaille/core/endpoints/account.py:365
#: canaille/core/endpoints/account.py:386 #: canaille/core/endpoints/account.py:387
msgid "The email confirmation link that brought you here is invalid." msgid "The email confirmation link that brought you here is invalid."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:371 #: canaille/core/endpoints/account.py:372
msgid "The email confirmation link that brought you here has expired." msgid "The email confirmation link that brought you here has expired."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:378 #: canaille/core/endpoints/account.py:379
msgid "The invitation link that brought you here was invalid." msgid "The invitation link that brought you here was invalid."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:393 #: canaille/core/endpoints/account.py:394
msgid "This address email have already been confirmed." msgid "This address email have already been confirmed."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:400 #: canaille/core/endpoints/account.py:401
msgid "This address email is already associated with another account." msgid "This address email is already associated with another account."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:407 #: canaille/core/endpoints/account.py:408
msgid "Your email address have been confirmed." msgid "Your email address have been confirmed."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:441 #: canaille/core/endpoints/account.py:442
msgid "User account creation succeed." msgid "User account creation succeed."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:617 #: canaille/core/endpoints/account.py:618
#: canaille/core/endpoints/account.py:786 #: canaille/core/endpoints/account.py:804
msgid "Profile edition failed." msgid "Profile edition failed."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:627 #: canaille/core/endpoints/account.py:628
#: canaille/core/endpoints/account.py:804 #: canaille/core/endpoints/account.py:822
msgid "Profile updated successfully." msgid "Profile updated successfully."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:635 #: canaille/core/endpoints/account.py:636
msgid "Email addition failed." msgid "Email addition failed."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:640 #: canaille/core/endpoints/account.py:641
msgid "" msgid ""
"An email has been sent to the email address. Please check your inbox and " "An email has been sent to the email address. Please check your inbox and "
"click on the verification link it contains" "click on the verification link it contains"
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:647 #: canaille/core/endpoints/account.py:648
msgid "Could not send the verification email" msgid "Could not send the verification email"
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:657 #: canaille/core/endpoints/account.py:658
msgid "Email deletion failed." msgid "Email deletion failed."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:660 #: canaille/core/endpoints/account.py:661
msgid "The email have been successfully deleted." msgid "The email have been successfully deleted."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:697 #: canaille/core/endpoints/account.py:698
msgid "" msgid ""
"A password initialization link has been sent at the user email address. " "A password initialization link has been sent at the user email address. "
"It should be received within a few minutes." "It should be received within a few minutes."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:704 canaille/core/endpoints/auth.py:159 #: canaille/core/endpoints/account.py:705 canaille/core/endpoints/auth.py:183
msgid "Could not send the password initialization email" msgid "Could not send the password initialization email"
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:715 #: canaille/core/endpoints/account.py:716
msgid "" msgid ""
"A password reset link has been sent at the user email address. It should " "A password reset link has been sent at the user email address. It should "
"be received within a few minutes." "be received within a few minutes."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:722 #: canaille/core/endpoints/account.py:723
msgid "Could not send the password reset email" msgid "Could not send the password reset email"
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:738 #: canaille/core/endpoints/account.py:739
msgid "The account has been locked" msgid "The account has been locked"
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:749 #: canaille/core/endpoints/account.py:750
msgid "The account has been unlocked" msgid "The account has been unlocked"
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:824 #: canaille/core/endpoints/account.py:763
msgid "One-time password authentication has been reset"
msgstr ""
#: canaille/core/endpoints/account.py:842
#, python-format #, python-format
msgid "The user %(user)s has been successfully deleted" msgid "The user %(user)s has been successfully deleted"
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:841 #: canaille/core/endpoints/account.py:859
msgid "Locked users cannot be impersonated." msgid "Locked users cannot be impersonated."
msgstr "" msgstr ""
#: canaille/core/endpoints/account.py:845 canaille/core/endpoints/auth.py:112 #: canaille/core/endpoints/account.py:863 canaille/core/endpoints/auth.py:134
#: canaille/core/endpoints/auth.py:367
#, python-format #, python-format
msgid "Connection successful. Welcome %(user)s" msgid "Connection successful. Welcome %(user)s"
msgstr "" msgstr ""
@ -289,10 +298,10 @@ msgstr ""
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: canaille/core/endpoints/admin.py:29 canaille/core/endpoints/forms.py:98 #: canaille/core/endpoints/admin.py:29 canaille/core/endpoints/forms.py:99
#: canaille/core/endpoints/forms.py:121 canaille/core/endpoints/forms.py:210 #: canaille/core/endpoints/forms.py:122 canaille/core/endpoints/forms.py:211
#: canaille/core/endpoints/forms.py:412 canaille/core/endpoints/forms.py:438 #: canaille/core/endpoints/forms.py:413 canaille/core/endpoints/forms.py:439
#: canaille/core/endpoints/forms.py:462 canaille/core/endpoints/forms.py:478 #: canaille/core/endpoints/forms.py:463 canaille/core/endpoints/forms.py:479
msgid "jane.doe@example.com" msgid "jane.doe@example.com"
msgstr "" msgstr ""
@ -312,115 +321,117 @@ msgstr ""
msgid "Email confirmation on {website_name}" msgid "Email confirmation on {website_name}"
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:57 canaille/core/endpoints/auth.py:89 #: canaille/core/endpoints/auth.py:64 canaille/core/endpoints/auth.py:96
#: canaille/core/endpoints/auth.py:101 #: canaille/core/endpoints/auth.py:108
msgid "Login failed, please check your information" msgid "Login failed, please check your information"
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:72 #: canaille/core/endpoints/auth.py:79 canaille/core/endpoints/auth.py:291
#: canaille/core/endpoints/auth.py:320 canaille/core/endpoints/auth.py:399
#: canaille/core/endpoints/auth.py:439
msgid "Cannot remember the login you attempted to sign in with" msgid "Cannot remember the login you attempted to sign in with"
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:127 #: canaille/core/endpoints/auth.py:151
#, python-format #, python-format
msgid "You have been disconnected. See you next time %(user)s" msgid "You have been disconnected. See you next time %(user)s"
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:152 #: canaille/core/endpoints/auth.py:176
msgid "" msgid ""
"A password initialization link has been sent at your email address. You " "A password initialization link has been sent at your email address. You "
"should receive it within a few minutes." "should receive it within a few minutes."
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:175 #: canaille/core/endpoints/auth.py:199
msgid "Could not send the password reset link." msgid "Could not send the password reset link."
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:179 #: canaille/core/endpoints/auth.py:203
msgid "" msgid ""
"A password reset link has been sent at your email address. You should " "A password reset link has been sent at your email address. You should "
"receive it within a few minutes." "receive it within a few minutes."
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:191 #: canaille/core/endpoints/auth.py:215
#, python-format #, python-format
msgid "" msgid ""
"The user '%(user)s' does not have permissions to update their password. " "The user '%(user)s' does not have permissions to update their password. "
"We cannot send a password reset email." "We cannot send a password reset email."
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:213 #: canaille/core/endpoints/auth.py:237
msgid "We encountered an issue while we sent the password recovery email." msgid "We encountered an issue while we sent the password recovery email."
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:236 #: canaille/core/endpoints/auth.py:260
msgid "The password reset link that brought you here was invalid." msgid "The password reset link that brought you here was invalid."
msgstr "" msgstr ""
#: canaille/core/endpoints/auth.py:245 #: canaille/core/endpoints/auth.py:269
msgid "Your password has been updated successfully" msgid "Your password has been updated successfully"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:32 #: canaille/core/endpoints/forms.py:33
msgid "The user name '{user_name}' already exists" msgid "The user name '{user_name}' already exists"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:41 #: canaille/core/endpoints/forms.py:42
msgid "The email '{email}' is already used" msgid "The email '{email}' is already used"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:48 #: canaille/core/endpoints/forms.py:49
msgid "The group '{group}' already exists" msgid "The group '{group}' already exists"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:57 #: canaille/core/endpoints/forms.py:58
msgid "The login '{login}' does not exist" msgid "The login '{login}' does not exist"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:64 #: canaille/core/endpoints/forms.py:65
msgid "The user you are trying to remove does not exist." msgid "The user you are trying to remove does not exist."
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:69 #: canaille/core/endpoints/forms.py:70
msgid "The user '{user}' has already been removed from the group '{group}'" msgid "The user '{user}' has already been removed from the group '{group}'"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:87 #: canaille/core/endpoints/forms.py:88
msgid "" msgid ""
"The group '{group}' cannot be removed, because it must have at least one " "The group '{group}' cannot be removed, because it must have at least one "
"user left." "user left."
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:95 canaille/core/endpoints/forms.py:118 #: canaille/core/endpoints/forms.py:96 canaille/core/endpoints/forms.py:119
#: canaille/core/templates/partial/group-members.html:9 #: canaille/core/templates/partial/group-members.html:9
#: canaille/core/templates/partial/users.html:9 #: canaille/core/templates/partial/users.html:9
msgid "Login" msgid "Login"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:108 canaille/core/endpoints/forms.py:130 #: canaille/core/endpoints/forms.py:109 canaille/core/endpoints/forms.py:131
#: canaille/core/endpoints/forms.py:264 #: canaille/core/endpoints/forms.py:265
#: canaille/core/templates/profile_settings.html:63 #: canaille/core/templates/profile_settings.html:63
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:137 canaille/core/endpoints/forms.py:276 #: canaille/core/endpoints/forms.py:138 canaille/core/endpoints/forms.py:277
msgid "Password confirmation" msgid "Password confirmation"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:140 canaille/core/endpoints/forms.py:279 #: canaille/core/endpoints/forms.py:141 canaille/core/endpoints/forms.py:280
msgid "Password and confirmation do not match." msgid "Password and confirmation do not match."
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:159 #: canaille/core/endpoints/forms.py:160
msgid "Automatic" msgid "Automatic"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:164 #: canaille/core/endpoints/forms.py:165
msgid "Username" msgid "Username"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:168 canaille/core/endpoints/forms.py:368 #: canaille/core/endpoints/forms.py:169 canaille/core/endpoints/forms.py:369
#: canaille/core/endpoints/forms.py:382 #: canaille/core/endpoints/forms.py:383
#: canaille/core/templates/partial/group-members.html:12 #: canaille/core/templates/partial/group-members.html:12
#: canaille/core/templates/partial/groups.html:6 #: canaille/core/templates/partial/groups.html:6
#: canaille/core/templates/partial/users.html:12 #: canaille/core/templates/partial/users.html:12
@ -429,168 +440,177 @@ msgstr ""
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:170 #: canaille/core/endpoints/forms.py:171
msgid "Title" msgid "Title"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:170 #: canaille/core/endpoints/forms.py:171
msgid "Vice president" msgid "Vice president"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:173 #: canaille/core/endpoints/forms.py:174
msgid "Given name" msgid "Given name"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:175 #: canaille/core/endpoints/forms.py:176
msgid "John" msgid "John"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:181 #: canaille/core/endpoints/forms.py:182
msgid "Family Name" msgid "Family Name"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:184 #: canaille/core/endpoints/forms.py:185
msgid "Doe" msgid "Doe"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:190 #: canaille/core/endpoints/forms.py:191
msgid "Display Name" msgid "Display Name"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:193 #: canaille/core/endpoints/forms.py:194
msgid "Johnny" msgid "Johnny"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:200 canaille/core/endpoints/forms.py:468 #: canaille/core/endpoints/forms.py:201 canaille/core/endpoints/forms.py:469
#: canaille/core/templates/profile_edit.html:176 #: canaille/core/templates/profile_edit.html:176
msgid "Email addresses" msgid "Email addresses"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:206 canaille/core/endpoints/forms.py:458 #: canaille/core/endpoints/forms.py:207 canaille/core/endpoints/forms.py:459
msgid "" msgid ""
"This email will be used as a recovery address to reset the password if " "This email will be used as a recovery address to reset the password if "
"needed" "needed"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:220 #: canaille/core/endpoints/forms.py:221
msgid "Phone numbers" msgid "Phone numbers"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:221 #: canaille/core/endpoints/forms.py:222
msgid "555-000-555" msgid "555-000-555"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:228 #: canaille/core/endpoints/forms.py:229
msgid "Address" msgid "Address"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:230 #: canaille/core/endpoints/forms.py:231
msgid "132, Foobar Street, Gotham City 12401, XX" msgid "132, Foobar Street, Gotham City 12401, XX"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:234 #: canaille/core/endpoints/forms.py:235
msgid "Street" msgid "Street"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:236 #: canaille/core/endpoints/forms.py:237
msgid "132, Foobar Street" msgid "132, Foobar Street"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:240 #: canaille/core/endpoints/forms.py:241
msgid "Postal Code" msgid "Postal Code"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:246 #: canaille/core/endpoints/forms.py:247
msgid "Locality" msgid "Locality"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:248 #: canaille/core/endpoints/forms.py:249
msgid "Gotham City" msgid "Gotham City"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:252 #: canaille/core/endpoints/forms.py:253
msgid "Region" msgid "Region"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:254 #: canaille/core/endpoints/forms.py:255
msgid "North Pole" msgid "North Pole"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:258 #: canaille/core/endpoints/forms.py:259
msgid "Photo" msgid "Photo"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:262 #: canaille/core/endpoints/forms.py:263
#: canaille/core/templates/profile_add.html:56 #: canaille/core/templates/profile_add.html:56
#: canaille/core/templates/profile_edit.html:64 #: canaille/core/templates/profile_edit.html:64
msgid "Delete the photo" msgid "Delete the photo"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:287 #: canaille/core/endpoints/forms.py:288
msgid "User number" msgid "User number"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:289 canaille/core/endpoints/forms.py:295 #: canaille/core/endpoints/forms.py:290 canaille/core/endpoints/forms.py:296
msgid "1234" msgid "1234"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:293 #: canaille/core/endpoints/forms.py:294
msgid "Department" msgid "Department"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:299 #: canaille/core/endpoints/forms.py:300
msgid "Organization" msgid "Organization"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:301 #: canaille/core/endpoints/forms.py:302
msgid "Cogip LTD." msgid "Cogip LTD."
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:305 #: canaille/core/endpoints/forms.py:306
msgid "Website" msgid "Website"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:307 #: canaille/core/endpoints/forms.py:308
msgid "https://mywebsite.tld" msgid "https://mywebsite.tld"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:312 #: canaille/core/endpoints/forms.py:313
msgid "Preferred language" msgid "Preferred language"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:322 #: canaille/core/endpoints/forms.py:323
msgid "users, admins …" msgid "users, admins …"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:347 #: canaille/core/endpoints/forms.py:348
msgid "Account expiration" msgid "Account expiration"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:371 #: canaille/core/endpoints/forms.py:372
msgid "group" msgid "group"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:375 canaille/core/endpoints/forms.py:392 #: canaille/core/endpoints/forms.py:376 canaille/core/endpoints/forms.py:393
#: canaille/core/templates/partial/groups.html:7 #: canaille/core/templates/partial/groups.html:7
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:406 canaille/core/endpoints/forms.py:431 #: canaille/core/endpoints/forms.py:407 canaille/core/endpoints/forms.py:432
msgid "Email address" msgid "Email address"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:425 #: canaille/core/endpoints/forms.py:426
msgid "User name" msgid "User name"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:429 #: canaille/core/endpoints/forms.py:430
msgid "Username editable by the invitee" msgid "Username editable by the invitee"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:471 #: canaille/core/endpoints/forms.py:472
msgid "New email address" msgid "New email address"
msgstr "" msgstr ""
#: canaille/core/endpoints/forms.py:488
#: canaille/core/templates/mails/email_otp.txt:5
msgid "One-time password"
msgstr ""
#: canaille/core/endpoints/forms.py:494
msgid "123456"
msgstr ""
#: canaille/core/endpoints/groups.py:40 #: canaille/core/endpoints/groups.py:40
msgid "Group creation failed." msgid "Group creation failed."
msgstr "" msgstr ""
@ -744,7 +764,7 @@ msgstr ""
#: canaille/core/templates/group.html:65 #: canaille/core/templates/group.html:65
#: canaille/core/templates/profile_edit.html:164 #: canaille/core/templates/profile_edit.html:164
#: canaille/core/templates/profile_settings.html:166 #: canaille/core/templates/profile_settings.html:172
#: canaille/oidc/templates/client_edit.html:81 #: canaille/oidc/templates/client_edit.html:81
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
@ -869,10 +889,13 @@ msgstr ""
#: canaille/core/templates/login.html:45 #: canaille/core/templates/login.html:45
#: canaille/core/templates/mails/registration.txt:5 #: canaille/core/templates/mails/registration.txt:5
#: canaille/core/templates/setup-2fa.html:53
msgid "Continue" msgid "Continue"
msgstr "" msgstr ""
#: canaille/core/templates/password.html:21 #: canaille/core/templates/password.html:21
#: canaille/core/templates/setup-2fa.html:21
#: canaille/core/templates/verify-2fa.html:21
#, python-format #, python-format
msgid "Sign in as %(username)s" msgid "Sign in as %(username)s"
msgstr "" msgstr ""
@ -882,6 +905,7 @@ msgid "Please enter your password for this account."
msgstr "" msgstr ""
#: canaille/core/templates/password.html:39 #: canaille/core/templates/password.html:39
#: canaille/core/templates/verify-2fa.html:39
#, python-format #, python-format
msgid "I am not %(username)s" msgid "I am not %(username)s"
msgstr "" msgstr ""
@ -957,6 +981,7 @@ msgid "Send a verification email to validate this address."
msgstr "" msgstr ""
#: canaille/core/templates/profile_edit.html:221 #: canaille/core/templates/profile_edit.html:221
#: canaille/core/templates/verify-2fa.html:40
msgid "Verify" msgid "Verify"
msgstr "" msgstr ""
@ -1040,27 +1065,40 @@ msgstr ""
msgid "The user won't be able to connect until their account is unlocked." msgid "The user won't be able to connect until their account is unlocked."
msgstr "" msgstr ""
#: canaille/core/templates/modals/reset-otp.html:27
#: canaille/core/templates/profile_settings.html:145 #: canaille/core/templates/profile_settings.html:145
msgid "Reset one-time password authentication"
msgstr ""
#: canaille/core/templates/profile_settings.html:151
msgid "Lock the account" msgid "Lock the account"
msgstr "" msgstr ""
#: canaille/core/templates/profile_settings.html:152 #: canaille/core/templates/profile_settings.html:158
msgid "Delete the user" msgid "Delete the user"
msgstr "" msgstr ""
#: canaille/core/templates/profile_settings.html:154 #: canaille/core/templates/profile_settings.html:160
msgid "Delete my account" msgid "Delete my account"
msgstr "" msgstr ""
#: canaille/core/templates/profile_settings.html:161 #: canaille/core/templates/profile_settings.html:167
msgid "Impersonate" msgid "Impersonate"
msgstr "" msgstr ""
#: canaille/core/templates/setup-2fa.html:23
msgid "Set up Two-Factor Authentication."
msgstr ""
#: canaille/core/templates/users.html:5 canaille/core/templates/users.html:29 #: canaille/core/templates/users.html:5 canaille/core/templates/users.html:29
#: canaille/templates/base.html:51 #: canaille/templates/base.html:51
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: canaille/core/templates/verify-2fa.html:23
msgid "One-time password authentication."
msgstr ""
#: canaille/core/templates/mails/admin.html:5 #: canaille/core/templates/mails/admin.html:5
#: canaille/core/templates/mails/admin.html:11 #: canaille/core/templates/mails/admin.html:11
#: canaille/oidc/templates/authorization_list.html:11 #: canaille/oidc/templates/authorization_list.html:11
@ -1176,6 +1214,10 @@ msgstr ""
msgid "Compromised password check failure" msgid "Compromised password check failure"
msgstr "" msgstr ""
#: canaille/core/templates/mails/admin.html:171
msgid "Email one-time password"
msgstr ""
#: canaille/core/templates/mails/compromised_password_check_failure.html:28 #: canaille/core/templates/mails/compromised_password_check_failure.html:28
#, python-format #, python-format
msgid "" msgid ""
@ -1280,6 +1322,31 @@ msgstr ""
msgid "Verification link" msgid "Verification link"
msgstr "" msgstr ""
#: canaille/core/templates/mails/email_otp.html:19
#: canaille/core/templates/mails/email_otp.txt:1
msgid "One-time password authentication"
msgstr ""
#: canaille/core/templates/mails/email_otp.html:27
#, python-format
msgid ""
"Someone, probably you, asked for a one-time password at %(site_name)s. If"
" you did not ask for this email, please ignore it. If you did, please "
"enter the one-time password below at %(site_name)s to complete your "
"authentication."
msgstr ""
#: canaille/core/templates/mails/email_otp.html:30
msgid "Your one-time password"
msgstr ""
#: canaille/core/templates/mails/email_otp.txt:3
#, python-format
msgid ""
"Please enter the one-time password below at %(site_name)s to complete "
"your authentication."
msgstr ""
#: canaille/core/templates/mails/firstlogin.html:27 #: canaille/core/templates/mails/firstlogin.html:27
#, python-format #, python-format
msgid "" msgid ""
@ -1390,6 +1457,7 @@ msgstr ""
#: canaille/core/templates/modals/delete-group.html:22 #: canaille/core/templates/modals/delete-group.html:22
#: canaille/core/templates/modals/lock-account.html:26 #: canaille/core/templates/modals/lock-account.html:26
#: canaille/core/templates/modals/remove-group-member.html:22 #: canaille/core/templates/modals/remove-group-member.html:22
#: canaille/core/templates/modals/reset-otp.html:26
#: canaille/oidc/templates/modals/delete-client.html:20 #: canaille/oidc/templates/modals/delete-client.html:20
#: canaille/oidc/templates/modals/revoke-token.html:20 #: canaille/oidc/templates/modals/revoke-token.html:20
msgid "Cancel" msgid "Cancel"
@ -1450,6 +1518,24 @@ msgstr ""
msgid "Remove" msgid "Remove"
msgstr "" msgstr ""
#: canaille/core/templates/modals/reset-otp.html:9
msgid "One-time password authentication reset"
msgstr ""
#: canaille/core/templates/modals/reset-otp.html:14
#, python-format
msgid ""
"Are you sure you want to reset one-time password (OTP) authentication for"
" %(user_name)s ? The user will have to perform OTP setup again at next "
"login."
msgstr ""
#: canaille/core/templates/modals/reset-otp.html:18
msgid ""
"Are you sure you want to reset one-time password (OTP) authentication? "
"You will have to perform OTP setup again at next login."
msgstr ""
#: canaille/core/templates/partial/group-members.html:16 #: canaille/core/templates/partial/group-members.html:16
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
@ -1495,6 +1581,11 @@ msgstr ""
msgid "Number of members" msgid "Number of members"
msgstr "" msgstr ""
#: canaille/core/templates/sms/sms_otp.txt:1
#, python-format
msgid "Here is the one-time password you requested for %(website_name)s: %(otp)s"
msgstr ""
#: canaille/oidc/utils.py:6 #: canaille/oidc/utils.py:6
msgid "Info about yourself, such as your name." msgid "Info about yourself, such as your name."
msgstr "" msgstr ""

View file

@ -80,10 +80,11 @@ Parameters
:members: :members:
.. autopydantic_settings:: canaille.oidc.configuration.OIDCSettings .. autopydantic_settings:: canaille.oidc.configuration.OIDCSettings
.. autopydantic_settings:: canaille.oidc.configuration.JWTSettings .. autopydantic_settings:: canaille.oidc.configuration.JWTSettings
.. autopydantic_settings:: canaille.oidc.configuration.JWTMappingSettings .. autopydantic_settings:: canaille.oidc.configuration.JWTMappingSettings
.. autopydantic_settings:: canaille.scim.configuration.SCIMSettings
.. autopydantic_settings:: canaille.backends.sql.configuration.SQLSettings .. autopydantic_settings:: canaille.backends.sql.configuration.SQLSettings
.. autopydantic_settings:: canaille.backends.ldap.configuration.LDAPSettings .. autopydantic_settings:: canaille.backends.ldap.configuration.LDAPSettings

View file

@ -1,7 +1,7 @@
Provisioning Provisioning
############ ############
Canaille partially implemnet the :rfc:`SCIM <7642>` provisioning protocol at the ``/scim/v2`` endpoint. Canaille partially implement the :rfc:`SCIM <7642>` provisioning protocol at the ``/scim/v2`` endpoint.
At the moment, only the server part is implemented. At the moment, only the server part is implemented.
It allows client applications to manage user profiles directly in Canaille. It allows client applications to manage user profiles directly in Canaille.
@ -10,6 +10,14 @@ To allow clients to access the SCIM API, the client must have the ``client_crede
This allows clients to ask an authentication token on their own behalf and use this token to perform queries. This allows clients to ask an authentication token on their own behalf and use this token to perform queries.
Currently, user tokens are not supported. Currently, user tokens are not supported.
Then the :attr:`CANAILLE_SCIM.ENABLE_SERVER <canaille.scim.configuration.SCIMSettings.ENABLE_SERVER>` configuration parameter must be enabled.
.. code-block:: toml
...
[CANAILLE_SCIM]
ENABLE_SERVER = true
.. todo:: .. todo::
Some SCIM :ref:`features and endpoints <scim_unimplemented>` are not implemented. Some SCIM :ref:`features and endpoints <scim_unimplemented>` are not implemented.