From 8fff1c6e7e844d85e4b64639a5a9f23cbee9441c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89loi=20Rivard?= Date: Fri, 10 Jan 2025 12:34:48 +0100 Subject: [PATCH] doc: extract i18n catalogs --- doc/locales/doc.pot | 4164 ++++++++++++++++++++++--------------------- 1 file changed, 2103 insertions(+), 2061 deletions(-) diff --git a/doc/locales/doc.pot b/doc/locales/doc.pot index c2e96115..67e715c6 100644 --- a/doc/locales/doc.pot +++ b/doc/locales/doc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: canaille 0.0.57\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-08 17:04+0100\n" +"POT-Creation-Date: 2025-01-10 12:34+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,1946 +17,1951 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: ../development/changelog.rst:2 -#: 3fb33c37ddc0459280f3c58be943008e +#: 1f34b2340e8b40bebbbb26b15e68b03b msgid "Release notes" msgstr "" #: ../development/changelog.rst:4 -#: 67e645fac3b646bba12959afa71710cc +#: 974a9ddc92084ba885466bd64dd8473e msgid "All notable changes to this project will be documented in there." msgstr "" #: ../development/changelog.rst:6 -#: 6c5d0b8435cf4001afa1fe74104daf7a +#: 412266a64b564ebd8cf722ee2e952ea5 msgid "The format is based on `Keep a Changelog `_, and this project adheres to `Semantic Versioning `_." msgstr "" #: ../../CHANGES.rst:2 -#: c415689d242946298da972c97d5bb0c4 +#: 8e30b80f3f94498da6f59c6f63a94ec5 msgid "[0.0.58] - Unreleased" msgstr "" #: ../../CHANGES.rst:5 -#: ../../CHANGES.rst:22 -#: ../../CHANGES.rst:56 -#: ../../CHANGES.rst:84 -#: ../../CHANGES.rst:103 -#: ../../CHANGES.rst:110 -#: ../../CHANGES.rst:129 -#: ../../CHANGES.rst:189 -#: ../../CHANGES.rst:215 -#: ../../CHANGES.rst:230 -#: ../../CHANGES.rst:279 -#: ../../CHANGES.rst:305 -#: ../../CHANGES.rst:324 -#: ../../CHANGES.rst:332 -#: ../../CHANGES.rst:341 -#: ../../CHANGES.rst:367 -#: ../../CHANGES.rst:402 -#: ../../CHANGES.rst:428 -#: ../../CHANGES.rst:477 -#: ../../CHANGES.rst:505 -#: ../../CHANGES.rst:535 -#: ../../CHANGES.rst:591 -#: ../../CHANGES.rst:624 -#: ../../CHANGES.rst:645 -#: ../../CHANGES.rst:655 -#: ../../CHANGES.rst:678 -#: ../../CHANGES.rst:745 -#: ../../CHANGES.rst:783 -#: ../../CHANGES.rst:800 -#: ../../CHANGES.rst:836 -#: 91a8054efa234209906812cdd41bd586 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 -#: 2e9453d4722144fd9ad7f53b28a7cb37 +#: ../../CHANGES.rst:23 +#: ../../CHANGES.rst:57 +#: ../../CHANGES.rst:85 +#: ../../CHANGES.rst:104 +#: ../../CHANGES.rst:111 +#: ../../CHANGES.rst:130 +#: ../../CHANGES.rst:190 +#: ../../CHANGES.rst:216 +#: ../../CHANGES.rst:231 +#: ../../CHANGES.rst:280 +#: ../../CHANGES.rst:306 +#: ../../CHANGES.rst:325 +#: ../../CHANGES.rst:333 +#: ../../CHANGES.rst:342 +#: ../../CHANGES.rst:368 +#: ../../CHANGES.rst:403 +#: ../../CHANGES.rst:429 +#: ../../CHANGES.rst:478 +#: ../../CHANGES.rst:506 +#: ../../CHANGES.rst:536 +#: ../../CHANGES.rst:592 +#: ../../CHANGES.rst:625 +#: ../../CHANGES.rst:646 +#: ../../CHANGES.rst:656 +#: ../../CHANGES.rst:679 +#: ../../CHANGES.rst:746 +#: ../../CHANGES.rst:784 +#: ../../CHANGES.rst:801 +#: ../../CHANGES.rst:837 +#: 74bd8e6a205c4a06b55ec9b1b8d86f48 +#: 4b956af725cc45d0ab80a2fdd02a4b9a +#: b8d535f039134b0a9afd68f7f8713d0c +#: 879c4a3feec54624b5c16345690f94dd +#: 1985623df8644a759ff789f1fef96076 +#: 383ea6426a8f484f9ffb40a520830935 +#: ac97d42167a54f52a4f4387433d4f2a6 +#: 51abb94c86684f0e98aa85821b3b55de +#: b7a9f2fff1f842a7b3df26649bc8bc63 +#: cbc8dd1774c44a428cb21e8f4c9d8f2e +#: 240d272f380e4681987edd02c169246e +#: 15e513215a474d70b40edf12381e72f7 +#: 0418257ecc0c44959535ccb1f84887ed +#: 105bf789bacd488b9547c456c678ce9a +#: 941f4be6c4fc4387a16a415291dcea10 +#: 39fb9e60582f4e7b849c6b352d4b8900 +#: ba1f31ddd6a54152b9ec60ff8dc828e3 +#: 29032d8c22424133893779341d9a3cc4 +#: 5becffbb07f9439f8f8e5128f6ae4b4c +#: 5dca26ae33b5403883d0624bbebb09d3 +#: 82f1ceff9a0449798fd2cda980481ef5 +#: 6f19ab064ce74b30a553a9c7f40734cc +#: 5bb5974e718c4fd898c6951c84e83fd8 +#: e73ec88847a5405c83925f07aa1c9fa4 +#: d0ecd5272cb842a39060ae5357ffdea1 +#: 668f2ebaabe94e7cae8d43c6ae82b8c0 +#: fce964069b044cf3a9ef4c7b514572bc +#: d889698da80b4ae486084b2081c9aaea +#: 18a1a9aca2364d989bed0ef2e1c05083 +#: efcfdd51c4fe4adb81edbcb955eaec75 msgid "Added" msgstr "" #: ../../CHANGES.rst:6 -#: 8593aca44439457296e5591823f56739 +#: 2deee404aef64ad3803993329510bc5a msgid "``--version`` option to the CLI. :pr:`209`" msgstr "" #: ../../CHANGES.rst:7 -#: efa1fc20329f42918fe6a530617cf102 +#: 68dd17fef135479c891a55e7657b2af9 msgid ":attr:`~canaille.backends.sql.configuration.SQLSettings.PASSWORD_SCHEMES` :issue:`175`" msgstr "" #: ../../CHANGES.rst:8 -#: 0f7d8f6a51e545499fcff7acd93586e3 -msgid "`canaille get --all` command option to perform full database dumps" +#: 63808a8f2ece4e8299c1d6a3d48678fb +msgid "`canaille dump` command option to perform full database dumps" msgstr "" #: ../../CHANGES.rst:11 -#: ../../CHANGES.rst:15 -#: ../../CHANGES.rst:44 -#: ../../CHANGES.rst:64 -#: ../../CHANGES.rst:77 -#: ../../CHANGES.rst:89 -#: ../../CHANGES.rst:114 -#: ../../CHANGES.rst:122 -#: ../../CHANGES.rst:170 -#: ../../CHANGES.rst:196 -#: ../../CHANGES.rst:248 -#: ../../CHANGES.rst:285 -#: ../../CHANGES.rst:354 -#: ../../CHANGES.rst:372 -#: ../../CHANGES.rst:410 -#: ../../CHANGES.rst:449 -#: ../../CHANGES.rst:484 -#: ../../CHANGES.rst:527 -#: ../../CHANGES.rst:631 -#: ../../CHANGES.rst:685 -#: ../../CHANGES.rst:717 -#: ../../CHANGES.rst:731 -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a -#: 254357b217fe4a309d66a400497a104a +#: ../../CHANGES.rst:16 +#: ../../CHANGES.rst:45 +#: ../../CHANGES.rst:65 +#: ../../CHANGES.rst:78 +#: ../../CHANGES.rst:90 +#: ../../CHANGES.rst:115 +#: ../../CHANGES.rst:123 +#: ../../CHANGES.rst:171 +#: ../../CHANGES.rst:197 +#: ../../CHANGES.rst:249 +#: ../../CHANGES.rst:286 +#: ../../CHANGES.rst:355 +#: ../../CHANGES.rst:373 +#: ../../CHANGES.rst:411 +#: ../../CHANGES.rst:450 +#: ../../CHANGES.rst:485 +#: ../../CHANGES.rst:528 +#: ../../CHANGES.rst:632 +#: ../../CHANGES.rst:686 +#: ../../CHANGES.rst:718 +#: ../../CHANGES.rst:732 +#: 9d6779c7467447bf9348630f9df9f7a6 +#: c9d0c3771a1545029cbf181cdaaf010e +#: b71b6cc4093d47b0a025a6084ee10b82 +#: 3a1c46806f3a4fcd9bbcf94b8f2ecd6f +#: 4ecdd331965d4307bcae6b8e23cc2758 +#: 3007fe60da8b497489115528ff73a22a +#: d97da6e417504c30905b3bbbcff0a3e5 +#: 8379ca38044741609b60ac5563f117e8 +#: a65d6cf0ec7440a89b6e4e26bcee20a9 +#: 603c0752d0754d31ba81c98b44689841 +#: 803aba2541184a568053711d70a98172 +#: a0d9788d439b4e76a40fecbedda27dd7 +#: 61a3b7ac77f1470db2511ddd0f4fb557 +#: 893961704a1d436cbd4ca48dfb664ace +#: 104393fcd7b0433cb2600fa15b60db74 +#: 2900ac4761c1410c94519e4d29763ec5 +#: e32378837b094cbbbf4e2446f6454991 +#: 3cc46ac4032447bcb723f9c694279c51 +#: 47d34ef97528461eb4b152543826122d +#: 12cf7bbc8c624173a724dd66eea7edf2 +#: b974765388144565a52c260b58adca84 +#: 303ba7514eba49cda1e049ff223d146c msgid "Changed" msgstr "" #: ../../CHANGES.rst:12 -#: ../../CHANGES.rst:16 -#: d1eb743e584f441d9b1dbf0669995b45 -#: c15803fd37484051a8f92213756c4d22 +#: ../../CHANGES.rst:17 +#: 6f26098796454b3cad6eb8ecdb44eddf +#: 2bd1e492a77e48be91838061fed5e7b8 msgid "fixed a bug on updating user's settings :issue:`206`" msgstr "" -#: ../../CHANGES.rst:19 -#: 9d53638e5933499baafec12390f02e23 +#: ../../CHANGES.rst:13 +#: fe7429ca2df94118964bd4c3ea5cb945 +msgid "CLI commands dump hashed passwords :issue:`214`" +msgstr "" + +#: ../../CHANGES.rst:20 +#: a9391eece84240bb82abe2cbcd0d2367 msgid "[0.0.57] - 2024-12-31" msgstr "" -#: ../../CHANGES.rst:23 -#: 5b4f3aa107a74df3ba845920503dfdc5 +#: ../../CHANGES.rst:24 +#: fb0fd10598b4464dae61d7edea3f3246 msgid "Intruder lockout :issue:`173`" msgstr "" -#: ../../CHANGES.rst:24 -#: efa1fc20329f42918fe6a530617cf102 +#: ../../CHANGES.rst:25 +#: ac217f88cae6455a91e3240120afecd1 msgid ":attr:`~canaille.core.configuration.CoreSettings.ENABLE_INTRUDER_LOCKOUT` :issue:`173`" msgstr "" -#: ../../CHANGES.rst:26 -#: cdab69b7537c452caa3eadb572993a40 +#: ../../CHANGES.rst:27 +#: 61171b21dcc64e56b9a6d1b8fe1aa10e msgid "Multi-factor authentication :issue:`47`" msgstr "" -#: ../../CHANGES.rst:27 -#: a90b270f7e144a4b81babbac96f5ff22 +#: ../../CHANGES.rst:28 +#: 00fe2c01e8e741fbafa9004b6cbde2ae msgid ":attr:`~canaille.core.configuration.CoreSettings.OTP_METHOD` and :attr:`~canaille.core.configuration.CoreSettings.EMAIL_OTP` and :attr:`~canaille.core.configuration.CoreSettings.SMS_OTP` and :attr:`~canaille.core.configuration.CoreSettings.SMPP` :issue:`47`" msgstr "" -#: ../../CHANGES.rst:32 -#: 05060126fea740ef82fba8246132aa6e +#: ../../CHANGES.rst:33 +#: 81230933555848b4b7db27a802f7445f msgid "Password compromission check :issue:`179`" msgstr "" -#: ../../CHANGES.rst:33 -#: a90b270f7e144a4b81babbac96f5ff22 +#: ../../CHANGES.rst:34 +#: 283ab183148249a2b3eab298fc7746c6 msgid ":attr:`~canaille.core.configuration.CoreSettings.ADMIN_EMAIL` and :attr:`~canaille.core.configuration.CoreSettings.ENABLE_PASSWORD_COMPROMISSION_CHECK` and :attr:`~canaille.core.configuration.CoreSettings.PASSWORD_COMPROMISSION_CHECK_API_URL` :issue:`179`" msgstr "" -#: ../../CHANGES.rst:37 -#: 2cfcbdba2e9541dbab610bc724a2683a +#: ../../CHANGES.rst:38 +#: 935d8279dbc64e649d6d647c5747456a msgid "Implement OIDC client_credentials flow. :issue:`207`" msgstr "" -#: ../../CHANGES.rst:38 -#: 1e36a8464f6045708cf07b39bcdfea1c +#: ../../CHANGES.rst:39 +#: cde005956a384cc2a9c6e19cb14e6c99 msgid "Button in the client admin page to create client tokens." msgstr "" -#: ../../CHANGES.rst:39 -#: c69d8b01e4194d5b9268b84ab81849d6 +#: ../../CHANGES.rst:40 +#: 2f64a0f5e56f40c093e7c8bb34e57b21 msgid "Basic SCIM implementation. :issue:`116` :pr:`197`" msgstr "" -#: ../../CHANGES.rst:40 -#: c777083179094cd994619adcfc8499d9 +#: ../../CHANGES.rst:41 +#: e1497232147641ed858b53ca6d1a0c4d msgid "Password expiry policy :issue:`176`" msgstr "" -#: ../../CHANGES.rst:41 -#: efa1fc20329f42918fe6a530617cf102 +#: ../../CHANGES.rst:42 +#: 452b760e978e47dc91176f653dc53d5b msgid ":attr:`~canaille.core.configuration.CoreSettings.PASSWORD_LIFETIME`" msgstr "" -#: ../../CHANGES.rst:45 -#: bb196cd8528b48628628ab53c5288b49 +#: ../../CHANGES.rst:46 +#: 7f89d7aba58f465eab40eb10192962c4 msgid "PostgreSQL and MySQL extras does not rely on libraries that need to be compiled." msgstr "" -#: ../../CHANGES.rst:46 -#: c36865875c264bb4a34d614ea2be23cf +#: ../../CHANGES.rst:47 +#: da03a9cd311a416bbb18aed6783e2855 msgid "``.env`` files are not loaded by default. The ``ENV_FILE`` env var must be passed so ``.env`` files are loaded." msgstr "" -#: ../../CHANGES.rst:49 -#: 045b041136be49de8d54674ad57fea87 +#: ../../CHANGES.rst:50 +#: 50fe28668fa04a39b0004b6cd8cb9e68 msgid "[0.0.56] - 2024-11-07" msgstr "" -#: ../../CHANGES.rst:52 -#: ../../CHANGES.rst:94 -#: ../../CHANGES.rst:133 -#: ../../CHANGES.rst:141 -#: ../../CHANGES.rst:149 -#: ../../CHANGES.rst:156 -#: ../../CHANGES.rst:163 -#: ../../CHANGES.rst:177 -#: ../../CHANGES.rst:207 -#: ../../CHANGES.rst:220 -#: ../../CHANGES.rst:238 -#: ../../CHANGES.rst:257 -#: ../../CHANGES.rst:265 -#: ../../CHANGES.rst:291 -#: ../../CHANGES.rst:299 -#: ../../CHANGES.rst:319 -#: ../../CHANGES.rst:349 -#: ../../CHANGES.rst:381 -#: ../../CHANGES.rst:389 -#: ../../CHANGES.rst:415 -#: ../../CHANGES.rst:435 -#: ../../CHANGES.rst:459 -#: ../../CHANGES.rst:469 -#: ../../CHANGES.rst:490 -#: ../../CHANGES.rst:498 -#: ../../CHANGES.rst:521 -#: ../../CHANGES.rst:544 -#: ../../CHANGES.rst:556 -#: ../../CHANGES.rst:565 -#: ../../CHANGES.rst:574 -#: ../../CHANGES.rst:583 -#: ../../CHANGES.rst:603 -#: ../../CHANGES.rst:610 -#: ../../CHANGES.rst:660 -#: ../../CHANGES.rst:668 -#: ../../CHANGES.rst:693 -#: ../../CHANGES.rst:701 -#: ../../CHANGES.rst:709 -#: ../../CHANGES.rst:722 -#: ../../CHANGES.rst:736 -#: ../../CHANGES.rst:768 -#: ../../CHANGES.rst:791 -#: ../../CHANGES.rst:822 -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b -#: 13ee0de3f7db4046b8399917e8d52e0b +#: ../../CHANGES.rst:53 +#: ../../CHANGES.rst:95 +#: ../../CHANGES.rst:134 +#: ../../CHANGES.rst:142 +#: ../../CHANGES.rst:150 +#: ../../CHANGES.rst:157 +#: ../../CHANGES.rst:164 +#: ../../CHANGES.rst:178 +#: ../../CHANGES.rst:208 +#: ../../CHANGES.rst:221 +#: ../../CHANGES.rst:239 +#: ../../CHANGES.rst:258 +#: ../../CHANGES.rst:266 +#: ../../CHANGES.rst:292 +#: ../../CHANGES.rst:300 +#: ../../CHANGES.rst:320 +#: ../../CHANGES.rst:350 +#: ../../CHANGES.rst:382 +#: ../../CHANGES.rst:390 +#: ../../CHANGES.rst:416 +#: ../../CHANGES.rst:436 +#: ../../CHANGES.rst:460 +#: ../../CHANGES.rst:470 +#: ../../CHANGES.rst:491 +#: ../../CHANGES.rst:499 +#: ../../CHANGES.rst:522 +#: ../../CHANGES.rst:545 +#: ../../CHANGES.rst:557 +#: ../../CHANGES.rst:566 +#: ../../CHANGES.rst:575 +#: ../../CHANGES.rst:584 +#: ../../CHANGES.rst:604 +#: ../../CHANGES.rst:611 +#: ../../CHANGES.rst:661 +#: ../../CHANGES.rst:669 +#: ../../CHANGES.rst:694 +#: ../../CHANGES.rst:702 +#: ../../CHANGES.rst:710 +#: ../../CHANGES.rst:723 +#: ../../CHANGES.rst:737 +#: ../../CHANGES.rst:769 +#: ../../CHANGES.rst:792 +#: ../../CHANGES.rst:823 +#: 53c5a65f508e4ce4a2cdb301851dd948 +#: b274bbd1b95e42bcb8153fc3514259ce +#: 2533d3c823f74185b35b06fa4e1b80e3 +#: ed1e8ab37be64a8f8ca5ffecb229e0ad +#: df88f1d57bf34873bffea45537b3af4c +#: 6172e8c8655f4dcc9adc6bea34c0fc95 +#: f69752d371734b35af74db0812516dd9 +#: e84d4fc2503b4cb9bc30b43d71515f3d +#: de5ce855802f402a8b90fd3f7401d7d9 +#: b0d8d589bafb44e7a50e1df6b5a2c0ee +#: df7c8e6f591146ae9d0214b5cf2ef20c +#: 01c7173e0c4f4edd9b9435c71cf0b42f +#: f852bdbb77364a7e9cc6b146e56ed402 +#: 0fde0faefcc74c63814c308767cfece9 +#: 646698a0b8834d5a82e6251501ac750e +#: 72754d5c2e904a22a329f4254a514e9c +#: 7e1ac803c25144c0b2b9c902530a21a2 +#: 526a14aecd6f4e87b95a6edb635fc92c +#: 194cefb8995b489fb1cedfa349a864c0 +#: 50050907eee8458fb96d8c32a755b0d4 +#: acbb3ec553594f6680d223653479eff4 +#: 089020254ca745848ba3bc24c50f593b +#: 2dccac9b689a4eefab864be77ee5a433 +#: 7ac15c877d0e44deadcfbb9c99e14ca6 +#: 0606f5a65c6d412a96cb74b9eaf59706 +#: 08260e612848485cb1928449b08ddfa2 +#: 0a5801741e6e4f68b248e8eefc11e32e +#: d6643e325d37484d9c9b14c4dc3e26ff +#: ff19c7e139e64f40be24d0d3766e12d1 +#: 70025a466d2940dd82bb4d943cae9cbc +#: bc7c7a9dc156475c8a65bfe5b94c66df +#: 10d045405e844791b053eee9e1f845e2 +#: 66784d9272f44414a23d2b25cc73b179 +#: 02d5e48f9ea0441688e6d8e75da2bc20 +#: daca4e664b6d4a949f8825c48941a1f2 +#: 42fe0d93e6da4649b6315591d95fabfd +#: e344dc15cfcd4ebaa54ed440b8745fd8 +#: 52a9e522d4784784aa9db400ec187e1f +#: 0d260c98b74242b0bde5f2cca4aca9b0 +#: 7f343e5272b14cdabcd8606c3af8de59 +#: 6c2e38da89e548bcb490b4ef93d4cdd1 +#: 27d0795441ff491e8d5599a42d03f41b +#: e74496b8550542b7a5061fffdd77cddc msgid "Fixed" msgstr "" -#: ../../CHANGES.rst:53 -#: 10c707b06b884b168b2dd26bffd7bf76 +#: ../../CHANGES.rst:54 +#: d1079f04609745a5b2b84388ffbafe12 msgid "With LDAP backend, updating another user groups could result in a permission lost for the editor. :issue:`202`" msgstr "" -#: ../../CHANGES.rst:57 -#: efa1fc20329f42918fe6a530617cf102 +#: ../../CHANGES.rst:58 +#: 5064e81a1a254f5cae3b89c8d59a263d msgid ":attr:`~canaille.core.configuration.CoreSettings.MAX_PASSWORD_LENGTH` and :attr:`~canaille.core.configuration.CoreSettings.MIN_PASSWORD_LENGTH` configuration options :issue:`174`" msgstr "" -#: ../../CHANGES.rst:59 -#: cdab69b7537c452caa3eadb572993a40 +#: ../../CHANGES.rst:60 +#: 26e4f63a1064497b93ca4f9849d60b6e msgid "Password strength visual indicator. :issue:`174`" msgstr "" -#: ../../CHANGES.rst:60 -#: 2ae6bad543d64621886630d3db7832e6 +#: ../../CHANGES.rst:61 +#: a2fdef5b105b41d5ad708fe077dd6ea5 msgid "Security events logs. :issue:`177`" msgstr "" -#: ../../CHANGES.rst:61 -#: 40ab5f1ed3bc406fb662d0025e5b3212 +#: ../../CHANGES.rst:62 +#: c01dd0db19874fb1a2bce1ab058ff012 msgid "Support for Python 3.13. :pr:`186`" msgstr "" -#: ../../CHANGES.rst:65 -#: c7940e351aac4939b964ccb80cebd616 +#: ../../CHANGES.rst:66 +#: 123ca7470aaa4f0ea643e898579c3cdb msgid "Update to `HTMX` 2.0.3. :pr:`184`" msgstr "" -#: ../../CHANGES.rst:66 -#: dfc1569ae0ec412d86503a0695522fa5 +#: ../../CHANGES.rst:67 +#: 289367c535344e859b7a42df83c7cf4f msgid "Migrate the Python project management tool from poetry to uv. :pr:`187`" msgstr "" -#: ../../CHANGES.rst:67 -#: 40c97bec2553487fa62efc486d3ee444 +#: ../../CHANGES.rst:68 +#: b553f5d728d74f9ea62e87cbf8472ef2 msgid "The ``sql`` package extra is now split between ``sqlite``, ``postgresql`` and ``mysql``." msgstr "" -#: ../../CHANGES.rst:70 -#: ../../CHANGES.rst:420 -#: ../../CHANGES.rst:828 -#: bc1a20b5783a4fe38fa201438a8075e5 -#: bc1a20b5783a4fe38fa201438a8075e5 -#: bc1a20b5783a4fe38fa201438a8075e5 +#: ../../CHANGES.rst:71 +#: ../../CHANGES.rst:421 +#: ../../CHANGES.rst:829 +#: ac38305d876e48789c182a1fbf0483ac +#: 022fcf9dd0534233866aa0d9974e2987 +#: 29bdcf38f9d748fe90268b40a612f081 msgid "Removed" msgstr "" -#: ../../CHANGES.rst:71 -#: 3f97d00692d047dbbecb5c18a2d45b07 +#: ../../CHANGES.rst:72 +#: 943bfc081ef14407995de675069f94d1 msgid "End support for Python 3.9. :pr:`179`" msgstr "" -#: ../../CHANGES.rst:74 -#: 4a57056601f148969254d2f049e0f460 +#: ../../CHANGES.rst:75 +#: 1329245bc09c41e790e01b07835c59a9 msgid "[0.0.55] - 2024-08-30" msgstr "" -#: ../../CHANGES.rst:78 -#: a037ad5da20049ad82e9f9b0d766cfbb +#: ../../CHANGES.rst:79 +#: 79310b4f35ed49b980404e77433ad344 msgid "Use poetry-core build backend. :pr:`178`" msgstr "" -#: ../../CHANGES.rst:81 -#: d6bf96b8e5cc4a6f8e099b48c1951a6a +#: ../../CHANGES.rst:82 +#: b1c2cc3b8f1644cba3e1e82dfd2eda3b msgid "[0.0.54] - 2024-07-25" msgstr "" -#: ../../CHANGES.rst:85 -#: 062bcc176aac499384187fcb06e2a00b +#: ../../CHANGES.rst:86 +#: ebb97b0ad729407381eafd00a0345db4 msgid "Group member removal can be achieved from the group edition page. :issue:`192`" msgstr "" -#: ../../CHANGES.rst:86 -#: 8680469549c74d37a52b1c6252c74d57 +#: ../../CHANGES.rst:87 +#: b938d978231f485d96dd65c284b50c75 msgid "Model management commands. :issue:`117` :issue:`54`" msgstr "" -#: ../../CHANGES.rst:90 -#: c19428c67d8f4d198d0ab97defe14fb3 +#: ../../CHANGES.rst:91 +#: 194419a0a61744cabd33b572a65b9ebb msgid "Model `identifier_attributes` are fixed." msgstr "" -#: ../../CHANGES.rst:91 -#: 571f38b1484b43e2beed6f33eb675700 +#: ../../CHANGES.rst:92 +#: 38cf7ccdf64844b3b46da32df1b7e6c3 msgid "Bump to `HTMX` 1.9.12. :pr:`172`" msgstr "" -#: ../../CHANGES.rst:96 -#: 9e54da898699471194477836791f08a6 +#: ../../CHANGES.rst:97 +#: 03e01fffdd994e5688cff3e313bd4402 msgid "Dark theme colors for better readability." msgstr "" -#: ../../CHANGES.rst:97 -#: 4e0f2a8e03a447e59cb0a2b0e6d208f1 +#: ../../CHANGES.rst:98 +#: d0f2bd58fbd24866855da92cff441bbf msgid "Crash for passwordless users at login when no SMTP server was configured." msgstr "" -#: ../../CHANGES.rst:100 -#: a9273241db7e4137bac5973b20e3ec5d +#: ../../CHANGES.rst:101 +#: a93bd621e6d442e09311f9a527e82cb5 msgid "[0.0.53] - 2024-04-22" msgstr "" -#: ../../CHANGES.rst:104 -#: 17fbf739a68a4e59b5cc6da8befa1c6f +#: ../../CHANGES.rst:105 +#: e57b8cfe44ef43fdb1cb5c6796f6f07e msgid "`env_prefix` `create_app`` variable can select the environment var prefix." msgstr "" -#: ../../CHANGES.rst:107 -#: 7bdc8f732053463b95353cdf5c994838 +#: ../../CHANGES.rst:108 +#: 5f3aedb0fb95429c948c48a44ce99bc9 msgid "[0.0.52] - 2024-04-22" msgstr "" -#: ../../CHANGES.rst:111 -#: bc7d1037cdfd40a69044f465467f6834 +#: ../../CHANGES.rst:112 +#: fc80c3f894ac496da58299137473570f msgid "`env_file` create_app variable can customize/disable the .env file." msgstr "" -#: ../../CHANGES.rst:115 -#: 9685a5e5a13147f093ac57e2039fe11b +#: ../../CHANGES.rst:116 +#: dfee8d84d47a46d4a02626043ad3c378 msgid "Locked users cannot be impersonated anymore." msgstr "" -#: ../../CHANGES.rst:116 -#: 1b83a24a97384c2faab67e915701e6b2 +#: ../../CHANGES.rst:117 +#: 50b623665b86438d8d94f754ddfec814 msgid "Minimum Python requirement is 3.9." msgstr "" -#: ../../CHANGES.rst:119 -#: e88f01e3f89f45f2a63b456f8e304d3d +#: ../../CHANGES.rst:120 +#: 2aef1c38709f40de94070e2591894618 msgid "[0.0.51] - 2024-04-09" msgstr "" -#: ../../CHANGES.rst:123 -#: aae3d126989840578ec2b08058aad688 +#: ../../CHANGES.rst:124 +#: b7591b424f2e45788b23199143298a26 msgid "Display the menu bar on error pages." msgstr "" -#: ../../CHANGES.rst:126 -#: 22b11dc18595450fa5e7fe5f35824ebe +#: ../../CHANGES.rst:127 +#: 0482caf34246470a9cad38fb5494ec06 msgid "[0.0.50] - 2024-04-09" msgstr "" -#: ../../CHANGES.rst:130 -#: fc1bc503759c4beb943e9dcbf0c4a9cf +#: ../../CHANGES.rst:131 +#: 1ac6b68041ac41b588d06ee7289d7b54 msgid "Sign in/out events are logged in. :issue:`177`" msgstr "" -#: ../../CHANGES.rst:134 -#: cfe0182123c94bcc9ee847739bd2e114 +#: ../../CHANGES.rst:135 +#: c3deb238bd1448c384f74146a0cb34c1 msgid "`HTMX` and `JAVASCRIPT` configuration settings." msgstr "" -#: ../../CHANGES.rst:135 -#: 3bc7c83763d34549bac91df86a22b3a0 +#: ../../CHANGES.rst:136 +#: 7e5dc3a8203f4975938a56512527ce61 msgid "Compatibility with old sessions IDs." msgstr "" -#: ../../CHANGES.rst:138 -#: cdee0bee34024d21bace2d77ff637ed9 +#: ../../CHANGES.rst:139 +#: e7a941e0a4d841fba7e67ca25ddf14a7 msgid "[0.0.49] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:142 -#: f9c9585c305d47628adffcae287229d2 +#: ../../CHANGES.rst:143 +#: d2faee827c5b40b68570ab1c02b3d467 msgid "LDAP user group removal." msgstr "" -#: ../../CHANGES.rst:143 -#: c25c5c6a9cca4061be6502cae5e86ba2 +#: ../../CHANGES.rst:144 +#: 3530ff4f5a494c97be1248713efad111 msgid "Display an error message when trying to remove the last user from a group." msgstr "" -#: ../../CHANGES.rst:146 -#: 5e0c66b55801444497954839297b97eb +#: ../../CHANGES.rst:147 +#: 37b850b8747f4885bb59c4b600f07e39 msgid "[0.0.48] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:150 -#: bd9920a130844ee897863a6b649484e2 +#: ../../CHANGES.rst:151 +#: 43fcc4664e2c493e8d6fe0db840fe372 msgid "LDAP ``objectClass`` guessing exception." msgstr "" -#: ../../CHANGES.rst:153 -#: 93cf829932204311ba399ae713aff29f +#: ../../CHANGES.rst:154 +#: ae0eb5c761394db2b1d091e6fa1cb7b6 msgid "[0.0.47] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:157 -#: b7a5d3351a334b0592b12373e1c7afa6 +#: ../../CHANGES.rst:158 +#: cf62cb736d744b53b5968b84e6b3b424 msgid "Lazy permission loading exception." msgstr "" -#: ../../CHANGES.rst:160 -#: c6000ae4f0fc4d488ab180c3aa9eb144 +#: ../../CHANGES.rst:161 +#: c5ba2703aa9742a8957fcb6a15a22298 msgid "[0.0.46] - 2024-04-08" msgstr "" -#: ../../CHANGES.rst:164 -#: db4476f22ad049f49833696323eb1b33 +#: ../../CHANGES.rst:165 +#: d9150b7d06724be49a3d165891332d9e msgid "Saving an object with the LDAP backend keeps the ``objectClass`` un-managed by Canaille. :pr:`171`" msgstr "" -#: ../../CHANGES.rst:167 -#: d7117b0322b549ff87b73b8e4c839915 +#: ../../CHANGES.rst:168 +#: aa1459361e01481a9f2f9e3e29927db4 msgid "[0.0.45] - 2024-04-04" msgstr "" -#: ../../CHANGES.rst:171 -#: 9690ab893eef4290a52b1137f24b9be8 +#: ../../CHANGES.rst:172 +#: 5f111a4408054a86a564f89965320a0e msgid "Internal indexation mechanism of ``MemoryModel``." msgstr "" -#: ../../CHANGES.rst:174 -#: be79650410904879b53da2c62ac092d5 +#: ../../CHANGES.rst:175 +#: 4ec01913c134471ba2c9bc6c7d6594a0 msgid "[0.0.44] - 2024-03-29" msgstr "" -#: ../../CHANGES.rst:178 -#: 1c2533bc36b548c59361d7b3e304cce6 +#: ../../CHANGES.rst:179 +#: 96427ccf2ab844e09af39f35d99e62f4 msgid "Fix the default LDAP ``USER_FILTER`` value." msgstr "" -#: ../../CHANGES.rst:179 -#: c429e79bd5aa46edb7b4cd1bd87c3ad8 +#: ../../CHANGES.rst:180 +#: bdc76b00698649b0a1662a4f4574295e msgid "Fix the OIDC feature detection." msgstr "" -#: ../../CHANGES.rst:182 -#: 51a43a574cc943b5912effdaa67f8690 +#: ../../CHANGES.rst:183 +#: aac8fcfe3c274caf955d0c0ec4d56a95 msgid "[0.0.43] - 2024-03-29" msgstr "" -#: ../../CHANGES.rst:186 -#: ../../CHANGES.rst:445 -#: 02e8eccba3b74e889a68c78dc51e0a24 -#: 02e8eccba3b74e889a68c78dc51e0a24 +#: ../../CHANGES.rst:187 +#: ../../CHANGES.rst:446 +#: 580f0fc146ec498a9bab5ebbcc1a075d +#: 50bb86bd7d0e43d6807b49af9344f81f msgid "Configuration files must be updated." msgstr "" -#: ../../CHANGES.rst:191 -#: a39fba5f25754fdc9f0f339142ff0320 +#: ../../CHANGES.rst:192 +#: 5e07cdf3619e479d8481e119065404ec msgid "Add ``created`` and ``last_modified`` datetime for all models." msgstr "" -#: ../../CHANGES.rst:192 -#: b1e37ddf62994798a70a23cff76ed4d6 +#: ../../CHANGES.rst:193 +#: 3102a152b0dd403b86e27d64a971ce87 msgid "Sitemap to the documentation. :pr:`169`" msgstr "" -#: ../../CHANGES.rst:193 -#: 54cf20bc59af4634af6b3f2d0e10c5e9 +#: ../../CHANGES.rst:194 +#: 0219c78a44ed414fa3c72cf01961951b msgid "Configuration management with `pydantic-settings`. :issue:`138` :pr:`170`" msgstr "" -#: ../../CHANGES.rst:198 -#: 689b4f88ba4b43db8c8b1a7bff0aebe6 +#: ../../CHANGES.rst:199 +#: b3186678446f4f74aad4f014d22d39be msgid "Use default Python logging configuration format. :issue:`188` :pr:`165`" msgstr "" -#: ../../CHANGES.rst:199 -#: 7d18c66450654e25a65749ea273b859d +#: ../../CHANGES.rst:200 +#: fd5c70ba10bc4ea199529498765da9c8 msgid "Bump to `HTMX` 1.99.11. :pr:`166`" msgstr "" -#: ../../CHANGES.rst:200 -#: 9d053f12577548bc8cff1add00376bae +#: ../../CHANGES.rst:201 +#: 97733b3cecda49b59eda7684cbcf0bdc msgid "Use the standard tomllib Python module instead of `toml` starting from Python 3.11. :pr:`167`" msgstr "" -#: ../../CHANGES.rst:201 -#: fd8c1c0314b2465c9cacb4ba593eae77 +#: ../../CHANGES.rst:202 +#: 417ca230093143fd898eacb9326a5bce msgid "Use shibuya as the documentation theme :pr:`168`" msgstr "" -#: ../../CHANGES.rst:204 -#: abc0b3ba739e4f99866d02027d8128d2 +#: ../../CHANGES.rst:205 +#: 265939621caf4ae4be01d355c819a1a4 msgid "[0.0.42] - 2023-12-29" msgstr "" -#: ../../CHANGES.rst:209 -#: 74e8932123b744b2809d370b36980326 +#: ../../CHANGES.rst:210 +#: 8ff42abcf9f14d8cb6acb1252cb72185 msgid "Avoid to fail on imports if ``cryptography`` is missing." msgstr "" -#: ../../CHANGES.rst:212 -#: 41f209b7a9054599b7b71d4fab3afe8f +#: ../../CHANGES.rst:213 +#: a3b54c69b61f4cab9c33ccffaa2ccb1d msgid "[0.0.41] - 2023-12-25" msgstr "" -#: ../../CHANGES.rst:217 -#: 77ff8fdeadf94e2f8696b2f5b9bd9349 +#: ../../CHANGES.rst:218 +#: b7be279b17f04cdead0f43eb1263cc8f msgid "OIDC support for the ``create`` value of the ``prompt`` parameter. :issue:`185` :pr:`164`" msgstr "" -#: ../../CHANGES.rst:222 -#: 8940d9836a9f46a09613c3646e1d55f8 +#: ../../CHANGES.rst:223 +#: c2131815b4ee4e53854f1c9801b81672 msgid "Correctly set up :attr:`~canaille.oidc.basemodels.Client.audience` during OIDC dynamic registration." msgstr "" -#: ../../CHANGES.rst:223 -#: bb9a9230771445b6a7c93f042fb289ee +#: ../../CHANGES.rst:224 +#: 674bd58192194c48872f1bceb85b64b9 msgid "``post_logout_redirect_uris`` was ignored during OIDC dynamic registration." msgstr "" -#: ../../CHANGES.rst:224 -#: b5d0341447ef443b969d2a48457442f2 +#: ../../CHANGES.rst:225 +#: f00edc3069de458793e37db8f46cf24c msgid "Group field error prevented the registration form validation." msgstr "" -#: ../../CHANGES.rst:227 -#: 7bcad6150cbc4883817538eb23bed3bd +#: ../../CHANGES.rst:228 +#: acfe93442a3e445daccb56cb0a977bd5 msgid "[0.0.40] - 2023-12-22" msgstr "" -#: ../../CHANGES.rst:232 -#: aae4204166c443f99e04d84842dd6dd9 +#: ../../CHANGES.rst:233 +#: e963680d5372445bb660af444ebc5fc3 msgid "The ``THEME`` setting can be a relative path." msgstr "" -#: ../../CHANGES.rst:235 -#: 26224cfa5ee647a2b15239a78065f5f7 +#: ../../CHANGES.rst:236 +#: 13b3c18f8c344461a0f22041afdce696 msgid "[0.0.39] - 2023-12-15" msgstr "" -#: ../../CHANGES.rst:240 -#: 14b2b67c379045d681ee712797f44328 +#: ../../CHANGES.rst:241 +#: 346414ba0ed545abaa3c92f8e00e4573 msgid "Crash when no ACL were defined." msgstr "" -#: ../../CHANGES.rst:241 -#: 38649598ac954d29843b54b15343dd15 +#: ../../CHANGES.rst:242 +#: b1302bfb48c5482e84720a6ad95541b0 msgid "OIDC Userinfo endpoint is also available in POST." msgstr "" -#: ../../CHANGES.rst:242 -#: ed1da2958a1646fd82c70171a5c04317 +#: ../../CHANGES.rst:243 +#: 7923b8de73af4dce9521620ee749336f msgid "Fix redirection after password reset. :issue:`159`" msgstr "" -#: ../../CHANGES.rst:245 -#: 8f2bc47f69554f539aa2836958029d59 +#: ../../CHANGES.rst:246 +#: 52a4d55d277f4b7389318b494216b17b msgid "[0.0.38] - 2023-12-15" msgstr "" -#: ../../CHANGES.rst:250 -#: 24f252671c9a4a3590e94e5e563e4d19 +#: ../../CHANGES.rst:251 +#: 7ce633eaccb84a0abe491918a8a48b6d msgid "Convert all the `PNG` pictures in `Webp`. :pr:`162`" msgstr "" -#: ../../CHANGES.rst:251 -#: 8a1d423f79f749868c06a775e9c21bd2 +#: ../../CHANGES.rst:252 +#: 3fcb891995404ae99d79ce23eb8caa0d msgid "Update to Flask 3. :issue:`161` :pr:`163`" msgstr "" -#: ../../CHANGES.rst:254 -#: 9d53638e5933499baafec12390f02e23 +#: ../../CHANGES.rst:255 +#: cbee12051316441698e3c2c15d6ede8a msgid "[0.0.37] - 2023-12-01" msgstr "" -#: ../../CHANGES.rst:259 -#: 5ed255dd094a4a3aae1b75edf54001ad +#: ../../CHANGES.rst:260 +#: 01c5325fd82c43d9b530c2dac22b5fe6 msgid "Handle 4xx and 5xx error codes with HTMX. :issue:`171` :pr:`161`" msgstr "" -#: ../../CHANGES.rst:262 -#: 26d16685ada341a29bf6ee6e98997128 +#: ../../CHANGES.rst:263 +#: 9a17c644884048a2992dd5428c40d05f msgid "[0.0.36] - 2023-12-01" msgstr "" -#: ../../CHANGES.rst:267 -#: 2cfddfd6843e4cbfb1b645c84bc70322 +#: ../../CHANGES.rst:268 +#: 96261936841c49d9ace436ca743e1e9f msgid "Avoid crashing when LDAP groups references unexisting users." msgstr "" -#: ../../CHANGES.rst:268 -#: f5714a32e81841e29f2619f6ee5464e8 +#: ../../CHANGES.rst:269 +#: 7acc84b824d0448c97a734b600f5c421 msgid "Password reset and initialization mails were only sent to the preferred user email address." msgstr "" -#: ../../CHANGES.rst:270 -#: 4e121ada1cc24b7b8051d085b0ce464b +#: ../../CHANGES.rst:271 +#: 4312e1ec50d3417fae1c5274518b4603 msgid "Password reset and initialization mails were not sent at all the user addresses if one email address could not be reached." msgstr "" -#: ../../CHANGES.rst:272 -#: c5fc8c86d3df4732b3a06f70dd89af18 +#: ../../CHANGES.rst:273 +#: 2252295c032d4e41a5d6a38857a2f5cf msgid "Password comparison was too permissive on login." msgstr "" -#: ../../CHANGES.rst:273 -#: 36f936a6dd8c41c5bc833d928f347321 +#: ../../CHANGES.rst:274 +#: 27ed494c0fd942129181c56473fa068e msgid "Encrypt passwords in the SQL backend." msgstr "" -#: ../../CHANGES.rst:276 -#: 76befacfb135435fbee6ee0fe07f40e5 +#: ../../CHANGES.rst:277 +#: e5a596d2090c48589c732902e4ea1715 msgid "[0.0.35] - 2023-11-25" msgstr "" -#: ../../CHANGES.rst:281 -#: 14d361d80e4c429f929b943d3321e895 +#: ../../CHANGES.rst:282 +#: 6f53586e55d14c0a88ce91b1d3dd5a0e msgid "Refresh token grant supports other client authentication methods. :pr:`157`" msgstr "" -#: ../../CHANGES.rst:282 -#: c52cda2685214bcab533db539acee007 +#: ../../CHANGES.rst:283 +#: b11afbdb2b1c4d37b7364fa8426cd740 msgid "Implement a SQLAlchemy backend. :issue:`30` :pr:`158`" msgstr "" -#: ../../CHANGES.rst:287 -#: 57670f55b7644a0888ab65cd2da2fd8c +#: ../../CHANGES.rst:288 +#: 092696abad604e50a28844294cc25b5b msgid "Model attributes cardinality is closer to SCIM model. :pr:`155`" msgstr "" -#: ../../CHANGES.rst:288 -#: f4ef25b7b38b42a48fb2a32c5cd8888f +#: ../../CHANGES.rst:289 +#: 8e581ce7d30d47d7a98ae99979bf471f msgid "Bump to `HTMX` 1.9.9. :pr:`159`" msgstr "" -#: ../../CHANGES.rst:293 -#: 49b0b7da40204fdeaf40c5281235c2a6 +#: ../../CHANGES.rst:294 +#: bc46a9529f664beeb57d37afb6538007 msgid "Disable `HTMX` boosting during the OIDC dance. :pr:`160`" msgstr "" -#: ../../CHANGES.rst:296 -#: db372dee122e4b4fb18c2c99dd056ce2 +#: ../../CHANGES.rst:297 +#: 4cc90925acde46e6bc670a73abcfd2b1 msgid "[0.0.34] - 2023-10-02" msgstr "" -#: ../../CHANGES.rst:301 -#: a4b5211e96894c5d9d51b2630d6aea17 +#: ../../CHANGES.rst:302 +#: aeca0dbe6dd646a182af06ae52e21bab msgid "Canaille installations without account lockabilty could not delete users. :pr:`153`" msgstr "" -#: ../../CHANGES.rst:307 -#: 4f4ca04b08a04dcb8f6a2eb6605f0e13 +#: ../../CHANGES.rst:308 +#: e2e75a18ecd34793a12ed5b1b116202b msgid "If users register or authenticate during a OAuth Authorization phase, they get redirected back to that page afterwards. :issue:`168` :pr:`151`" msgstr "" -#: ../../CHANGES.rst:310 -#: 298ffe26093441918be8b38d13f0cc58 +#: ../../CHANGES.rst:311 +#: f4f96c897ca841af8798712e0f0dcd41 msgid "The `flask-babel` and `pytz` libraries are now part of the `front` packaging extras." msgstr "" -#: ../../CHANGES.rst:311 -#: ccb502180d634f11ad173619af1b68d8 +#: ../../CHANGES.rst:312 +#: d9d9125da5484af3b63440eec6c4b8b0 msgid "Bump to `fomantic-ui` 2.9.3. :pr:`152`" msgstr "" -#: ../../CHANGES.rst:312 -#: 7413676f512d4473972484920ff5f060 +#: ../../CHANGES.rst:313 +#: 2520552fc51d4064bf0862108b44ef63 msgid "Bump to `HTMX` 1.9.6. :pr:`154`" msgstr "" -#: ../../CHANGES.rst:313 -#: 7905327465c44c09b2a10854abe79960 +#: ../../CHANGES.rst:314 +#: e46900d403e047ec90aae41b0988436b msgid "Support for Python 3.12. :pr:`155`" msgstr "" -#: ../../CHANGES.rst:316 -#: 808e57e560f74a25b60029fbd6531d2e +#: ../../CHANGES.rst:317 +#: 45acc759934d44949490e91b88fcf082 msgid "[0.0.33] - 2023-08-26" msgstr "" -#: ../../CHANGES.rst:321 -#: 1179dc27648248188fdecf5696fd5045 +#: ../../CHANGES.rst:322 +#: 5943247053c7415da4498ba141e70558 msgid "OIDC jwks endpoint do not return empty `kid` claim." msgstr "" -#: ../../CHANGES.rst:326 -#: b8b2caca239b4b609143ffd267522a16 +#: ../../CHANGES.rst:327 +#: a971c7037bd74e9fa857a92fb695d9b8 msgid "Documentation details on the Canaille models." msgstr "" -#: ../../CHANGES.rst:329 -#: dd35ed0e27664b6b954e9b39881f14bc +#: ../../CHANGES.rst:330 +#: 667888a9f86e4623a43d6f86b59a5575 msgid "[0.0.32] - 2023-08-17" msgstr "" -#: ../../CHANGES.rst:334 -#: bdcae061315a4e92a6bc1a48475cb351 +#: ../../CHANGES.rst:335 +#: 2af3dcdb899a44acbe3de44e71df8135 msgid "Additional inmemory backend. :issue:`30` :pr:`149`" msgstr "" -#: ../../CHANGES.rst:335 -#: c39cbed721254ce5ad9c250de1e7ea41 +#: ../../CHANGES.rst:336 +#: 2ba5da0aea28417290b07dd3a1801eb5 msgid "Installation extras. :issue:`167` :pr:`150`" msgstr "" -#: ../../CHANGES.rst:338 -#: 5311648e4c714ed29e89e9644167f963 +#: ../../CHANGES.rst:339 +#: b0c7c8a21cd64b8f962fe1ecc850225f msgid "[0.0.31] - 2023-08-15" msgstr "" -#: ../../CHANGES.rst:343 -#: a6a4b510a0ac4b4ebeb9160510f72d77 +#: ../../CHANGES.rst:344 +#: aaf2b92f1c6b445eaf28e272153f622f msgid "Configuration option to disable the forced usage of OIDC `nonce` parameter. :pr:`143`" msgstr "" -#: ../../CHANGES.rst:344 -#: 37eb24ef005e44da8ae0f4c48bda766c +#: ../../CHANGES.rst:345 +#: ed95959d47a540daa19d1f994a3dde58 msgid "Validate phone numbers with a regex. :pr:`146`" msgstr "" -#: ../../CHANGES.rst:345 -#: 2be2120a0500430a8d854d1b8f19a0bf +#: ../../CHANGES.rst:346 +#: f39302c55f0f4ce583fe0329947a4f35 msgid "Email verification. :issue:`41` :pr:`147`" msgstr "" -#: ../../CHANGES.rst:346 -#: d3be95492ef348efa77976515d4ffca9 +#: ../../CHANGES.rst:347 +#: 5bd084c1ce134929aa6bce51792b08fb msgid "Account registration. :issue:`55` :pr:`133` :pr:`148`" msgstr "" -#: ../../CHANGES.rst:351 -#: 1a3da0153c2b451d99665d2b61c512f2 +#: ../../CHANGES.rst:352 +#: 63c8bd04ebd7478ba461e5fa3d1e43a6 msgid "The `check` command uses the default configuration values." msgstr "" -#: ../../CHANGES.rst:356 -#: 15f35fa96af04e508b1a6448d866cb5f +#: ../../CHANGES.rst:357 +#: f242fb900ae14d2eb49fd473fae1313b msgid "Modals do not need use Javascript at the moment. :issue:`158` :pr:`144`" msgstr "" -#: ../../CHANGES.rst:359 -#: add3188842de44b691dfbe3152546f7b +#: ../../CHANGES.rst:360 +#: 3b4b7eb562c14f48ac1ad43a108da59e msgid "[0.0.30] - 2023-07-06" msgstr "" -#: ../../CHANGES.rst:363 -#: b96e981450334eee84128d7dffb40d8f +#: ../../CHANGES.rst:364 +#: 53e1f5ae6b92429181ad69dd80ca4869 msgid "Configuration files must be updated. Check the new format with ``git diff 0.0.29 0.0.30 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:369 -#: ab83051dda0b48d185846e49011f2429 +#: ../../CHANGES.rst:370 +#: 002bbcc157fc4d29aed42c1047a61aeb msgid "Configuration option to disable Javascript. :pr:`141`" msgstr "" -#: ../../CHANGES.rst:374 -#: 85fb804c891f444c9de116e6e4771526 +#: ../../CHANGES.rst:375 +#: e2785b5f1bd041a2827469286db836ff msgid "The configuration parameter ``USER_FILTER`` is parsed with Jinja." msgstr "" -#: ../../CHANGES.rst:375 -#: 42d91f7cf5a3438a8bcb0bd5c193f1ea +#: ../../CHANGES.rst:376 +#: 2953a560d0414f03a2ca068f41b515ec msgid "Configuration use ``PRIVATE_KEY_FILE`` instead of ``PRIVATE_KEY`` and ``PUBLIC_KEY_FILE`` instead of ``PUBLIC_KEY``." msgstr "" -#: ../../CHANGES.rst:378 -#: 30736e0e4b854b46940e80c38023946a +#: ../../CHANGES.rst:379 +#: 5049ed8674084571afb1ff9198181b5a msgid "[0.0.29] - 2023-06-30" msgstr "" -#: ../../CHANGES.rst:383 -#: 89d319fb81e148cb8f82f4b1a5a5390c +#: ../../CHANGES.rst:384 +#: a072c563d2b549b8b4df37f718e0b892 msgid "Disabled `HTMX` boosting on OIDC forms to avoid errors." msgstr "" -#: ../../CHANGES.rst:386 -#: 68d32ee84fa642dfbf358ef907193eb8 +#: ../../CHANGES.rst:387 +#: db156cd566a64fdeaf6d3a0ad118ebd4 msgid "[0.0.28] - 2023-06-30" msgstr "" -#: ../../CHANGES.rst:391 -#: 5490daf53fd144c0b6b360e90bf5667b +#: ../../CHANGES.rst:392 +#: afeaf312be7c4482acda1b70e6c78ffb msgid "A template variable was misnamed." msgstr "" -#: ../../CHANGES.rst:394 -#: c65a251ed68a49beaff42740c12ce76a +#: ../../CHANGES.rst:395 +#: 404964fb0e2d4aa693b0c760d0e059f7 msgid "[0.0.27] - 2023-06-29" msgstr "" -#: ../../CHANGES.rst:398 -#: ccf84fb0d4cd47058c3849498bd92259 +#: ../../CHANGES.rst:399 +#: c7974ece102f4a8198ebd2b0723293df msgid "Configuration files must be updated. Check the new format with ``git diff 0.0.26 0.0.27 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:404 -#: 0856562aad23492aa6efc7f6e4bf8f90 +#: ../../CHANGES.rst:405 +#: 96138d7e5aa54a8eb198758f5b8fc15f msgid "Configuration entries can be loaded from files if the entry key has a *_FILE* suffix and the entry value is the path to the file. :issue:`134` :pr:`134`" msgstr "" -#: ../../CHANGES.rst:406 -#: 24fa209262e04bcbb46c2ab7c881fbaa +#: ../../CHANGES.rst:407 +#: 6faee467462e4c119a9376683f3f7469 msgid "Field list support. :issue:`115` :pr:`136`" msgstr "" -#: ../../CHANGES.rst:407 -#: eaff808f9ce745c59a1b373ab0ef90ab +#: ../../CHANGES.rst:408 +#: fc6362954cf1477898af50459f340745 msgid "Pages are boosted with `HTMX`. :issue:`144` :issue:`145` :pr:`137`" msgstr "" -#: ../../CHANGES.rst:412 -#: 8afcdb0ddd8f4e6c9941315ff1b06538 +#: ../../CHANGES.rst:413 +#: 98e71a54cd1a45a2ac5dbfb3f524332a msgid "Bump to jquery 3.7.0. :pr:`138`" msgstr "" -#: ../../CHANGES.rst:417 -#: a6e1f4b8a72f4500ab437a86f6e98d06 +#: ../../CHANGES.rst:418 +#: 5e461d234d4f48ee8e22788ac686e24a msgid "Profile edition when the user RDN was not ``uid``. :issue:`148` :pr:`139`" msgstr "" -#: ../../CHANGES.rst:422 -#: cfcf7ee77bb84df1bcd780df223e9044 +#: ../../CHANGES.rst:423 +#: 7f5c0656cb6c417dafe6db0ed3554c7c msgid "Stop support for Python 3.7. :pr:`131`" msgstr "" -#: ../../CHANGES.rst:425 -#: 42eab7328c604747ad6bde0067cb6603 +#: ../../CHANGES.rst:426 +#: 64c961d63d5542e586843d44c1b9d256 msgid "[0.0.26] - 2023-06-03" msgstr "" -#: ../../CHANGES.rst:430 -#: b621a029c6ec420d8708f0ddd4b49c85 +#: ../../CHANGES.rst:431 +#: 679364c32f5e423692372a1c993f3538 msgid "Implemented account expiration based on OpenLDAP ppolicy overlay. Needs OpenLDAP 2.5+. :issue:`13` :pr:`118`" msgstr "" -#: ../../CHANGES.rst:432 -#: 05f5b0808e74429b92bf61fa570014cf +#: ../../CHANGES.rst:433 +#: 1eb00fcc6bc243adb17806d211fa8e05 msgid "Timezone configuration entry. :issue:`137` :pr:`130`" msgstr "" -#: ../../CHANGES.rst:437 -#: d7e71d1ce6704911b7e5094538cc1084 +#: ../../CHANGES.rst:438 +#: dbf3a64e5c1d4a209416371f291d493e msgid "Avoid setting ``None`` in JWT claims when they have no value." msgstr "" -#: ../../CHANGES.rst:438 -#: e16dcca3b764486d874401ba65e22f78 +#: ../../CHANGES.rst:439 +#: 57d98f2e337e40288f8460b70a3aebfc msgid "Display password recovery button on OIDC login page. :pr:`129`" msgstr "" -#: ../../CHANGES.rst:441 -#: dcbd97e0bc4f44babcdc9ad9a503c162 +#: ../../CHANGES.rst:442 +#: 7bd1e12bdc5547ac95950d1629c6be6c msgid "[0.0.25] - 2023-05-05" msgstr "" -#: ../../CHANGES.rst:446 -#: 4109765130284304994ae405858bdd3c +#: ../../CHANGES.rst:447 +#: c520e75e7db14c95904bc57074a6a23f msgid "Check the new format with ``git diff 0.0.25 0.0.24 canaille/conf/config.sample.toml``" msgstr "" -#: ../../CHANGES.rst:451 -#: c4645c08f789400bba029897871bb828 +#: ../../CHANGES.rst:452 +#: ee2ef81304e643f7a203487a2ab8ee4f msgid "Renamed user model attributes to match SCIM naming convention. :pr:`123`" msgstr "" -#: ../../CHANGES.rst:452 -#: 3c58d21fdc81418e8ee43179c2d6384f +#: ../../CHANGES.rst:453 +#: 6610a6a82402441f9f5576cf1b0a6bb3 msgid "Moved OIDC related configuration entries in ``OIDC``." msgstr "" -#: ../../CHANGES.rst:453 -#: 5b002906414e41448a3fadea87d71e45 +#: ../../CHANGES.rst:454 +#: 6b567a15909841659979d4c608c4a65f msgid "Moved ``LDAP`` configuration entry to ``BACKENDS.LDAP``." msgstr "" -#: ../../CHANGES.rst:454 -#: d58c113094474cf3b82e8a3303202bb6 +#: ../../CHANGES.rst:455 +#: 17aae437222746ba8b3443adc5f556b5 msgid "Bumped to `HTMX` 1.9.0. :pr:`124`" msgstr "" -#: ../../CHANGES.rst:455 -#: 3bbdffb495f74fccbdb9eeb78a8eaf81 +#: ../../CHANGES.rst:456 +#: 7373759762424878b0c8a0faaec36c64 msgid "ACL filters are no more LDAP filters but user attribute mappings. :pr:`125`" msgstr "" -#: ../../CHANGES.rst:456 -#: 0d3ea4f8df2542e0a7da5029159f31e0 +#: ../../CHANGES.rst:457 +#: 22364336688d42ac9c77bc9203cfeafb msgid "Bumped to `HTMX` 1.9.2. :pr:`127`" msgstr "" -#: ../../CHANGES.rst:461 -#: 71139e5ab6e34c2a87d51d3d04c0dbc0 +#: ../../CHANGES.rst:462 +#: 51f8a182379f40fcbb97c59ab3a964d3 msgid "``OIDC.JWT.MAPPING`` configuration entry is really optional now." msgstr "" -#: ../../CHANGES.rst:462 -#: e34b111a3a8b4e2da966a36107a682b5 +#: ../../CHANGES.rst:463 +#: efea74181b5b4c40b307993e97ea35ec msgid "Fixed empty model attributes registration. :pr:`125`" msgstr "" -#: ../../CHANGES.rst:463 -#: 566d49eca850419cbb39c3a78a4160aa +#: ../../CHANGES.rst:464 +#: 51fc989c81574dae8c1242ab5ad24aaf msgid "Password initialization mails were not correctly sent. :pr:`128`" msgstr "" -#: ../../CHANGES.rst:466 -#: f461dc48e9c846628f7ddb99b18252c6 +#: ../../CHANGES.rst:467 +#: 334afb8a4e1f45c5b8b2d38c255679c4 msgid "[0.0.24] - 2023-04-07" msgstr "" -#: ../../CHANGES.rst:471 -#: 007393d26d6e4375a0e05cbbf6c41d65 +#: ../../CHANGES.rst:472 +#: bf3d671baf10499f99d287bdbc914b97 msgid "Fixed avatar update. :pr:`122`" msgstr "" -#: ../../CHANGES.rst:474 -#: 0ddfaf5df815484f9eb469a884e5f667 +#: ../../CHANGES.rst:475 +#: 339df86f0d1344778a5f40d4c20eafef msgid "[0.0.23] - 2023-04-05" msgstr "" -#: ../../CHANGES.rst:479 -#: 2e7346baddf44a7f9f5b9a05ae826913 +#: ../../CHANGES.rst:480 +#: 48a3d313e64f4114b0831e83123c25ea msgid "Organization field. :pr:`116`" msgstr "" -#: ../../CHANGES.rst:480 -#: 1c68c43ae90f4e2e944dab12514f06d1 +#: ../../CHANGES.rst:481 +#: 54788639e7b14b42900ea5a7613fbbb6 msgid "ETag and Last-Modified headers on user photos. :pr:`116`" msgstr "" -#: ../../CHANGES.rst:481 -#: bcaf8fe7d8e940f191ed6ea5178566c1 +#: ../../CHANGES.rst:482 +#: b1a1c1d88698449eb6195003a25b67d7 msgid "Dynamic form validation. :pr:`120`" msgstr "" -#: ../../CHANGES.rst:486 -#: 2b077ff5215a4b20b8438e82f4366ada +#: ../../CHANGES.rst:487 +#: 999932f58c6b4c809b4436373faa1f13 msgid "UX rework. Submenu addition. :pr:`114`" msgstr "" -#: ../../CHANGES.rst:487 -#: 166152fdbf6248e8a4af29f4f3bf5b6e +#: ../../CHANGES.rst:488 +#: 7c8b2566d4db458586c8337e6741cf23 msgid "Properly handle LDAP date timezones. :pr:`117`" msgstr "" -#: ../../CHANGES.rst:492 -#: 343c4102b6d648018544f151f97540e1 +#: ../../CHANGES.rst:493 +#: 7600d248c21e452dbe579fbdb9305e20 msgid "CSRF protection on every forms. :pr:`119`" msgstr "" -#: ../../CHANGES.rst:495 -#: 7140973831594dacad0bd205ca9b60e5 +#: ../../CHANGES.rst:496 +#: 3f9aac4badee40a484b1f5ff80bcab53 msgid "[0.0.22] - 2023-03-13" msgstr "" -#: ../../CHANGES.rst:499 -#: 67dc897fec2946598dbb4fe82db8a94f +#: ../../CHANGES.rst:500 +#: 01ce5349718e429699c70113d0dcda5d msgid "The `Faker` library is not imported anymore when the `clean` command is called." msgstr "" -#: ../../CHANGES.rst:502 -#: 58e3c0af1ce74125bf42a5ea16b88fbf +#: ../../CHANGES.rst:503 +#: 66d3c164cb34406f9046aa8edb9a8928 msgid "[0.0.21] - 2023-03-12" msgstr "" -#: ../../CHANGES.rst:507 -#: a25f75d9086a4499aa1088e537f21bc3 +#: ../../CHANGES.rst:508 +#: a397eca3471640e696a9ff70fb36bef9 msgid "Display TOS and policy URI on the consent list page. :pr:`102`" msgstr "" -#: ../../CHANGES.rst:508 -#: e848a4f5372b44249423579a7e2cdc3d +#: ../../CHANGES.rst:509 +#: 22a5f8c34f1345b5a54965ec438f8315 msgid "Admin token deletion. :pr:`100` :pr:`101`" msgstr "" -#: ../../CHANGES.rst:509 -#: 61b841de5b89407d9912c8c73309111a +#: ../../CHANGES.rst:510 +#: 6f4eca0831854f35bd47d0f0e56dd7ca msgid "Revoked consents can be restored. :pr:`103`" msgstr "" -#: ../../CHANGES.rst:510 -#: 656acd80913242a4820a20bc76d797e8 +#: ../../CHANGES.rst:511 +#: cd47eb57f7fc4f1d9a0515f89faeef57 msgid "Pre-consented clients are displayed in the user consent list, and their consents can be revoked. :issue:`69` :pr:`103`" msgstr "" -#: ../../CHANGES.rst:512 -#: e08c1586240745fa9537dd7501475c0d +#: ../../CHANGES.rst:513 +#: 0f1343c1ee75454092b6de800afa42c7 msgid "A ``populate`` command can be used to fill the database with random users generated with faker. :pr:`105`" msgstr "" -#: ../../CHANGES.rst:514 -#: dc653adfdbc441589c385b956ae9739e +#: ../../CHANGES.rst:515 +#: e44b67a6721f4e3fa68c41837a5ca554 msgid "SMTP SSL support. :pr:`108`" msgstr "" -#: ../../CHANGES.rst:515 -#: c69d8b01e4194d5b9268b84ab81849d6 +#: ../../CHANGES.rst:516 +#: 8c9317bed0bb4b27bd29987ff121b787 msgid "Server side pagination. :issue:`114` :pr:`111`" msgstr "" -#: ../../CHANGES.rst:516 -#: 5b4f3aa107a74df3ba845920503dfdc5 +#: ../../CHANGES.rst:517 +#: 0f50375487384246ab4eb7938f07db01 msgid "Department number support. :issue:`129`" msgstr "" -#: ../../CHANGES.rst:517 -#: d219e1ac8fa148d5b6e4babc678fbeb2 +#: ../../CHANGES.rst:518 +#: 727bc53d7c984ba99850545096c51202 msgid "Address edition support (but not in the OIDC claims yet). :pr:`112`" msgstr "" -#: ../../CHANGES.rst:518 -#: 52d2ceda28ab430a984dee19f8766b2a +#: ../../CHANGES.rst:519 +#: 2bbc467920d24e02875a5fd3199e5bcd msgid "Title edition support. :pr:`113`" msgstr "" -#: ../../CHANGES.rst:523 -#: c4aca25daa3b491f9208d71f7715800f +#: ../../CHANGES.rst:524 +#: 36b0872d19f344adb8b44ccbfd920cd8 msgid "Client deletion also deletes related :class:`~canaille.oidc.basemodels.Consent`, :class:`~canaille.oidc.basemodels.Token` and :class:`~canaille.oidc.basemodels.AuthorizationCode` objects. :issue:`126` :pr:`98`" msgstr "" -#: ../../CHANGES.rst:529 -#: a1c057df21a9436a9b149fb91fdb28d0 +#: ../../CHANGES.rst:530 +#: bcdf981ce5eb414099830d68efe4c1b5 msgid "Removed the `DataTables` Javascript library." msgstr "" -#: ../../CHANGES.rst:532 -#: 74a0312b6fff499fa609d0adbe73dfac +#: ../../CHANGES.rst:533 +#: fb503d354a2d4c92b75a9a6a603bb5f4 msgid "[0.0.20] - 2023-01-28" msgstr "" -#: ../../CHANGES.rst:537 -#: c443970df56e4203b8ee3fd9e4fa2395 +#: ../../CHANGES.rst:538 +#: 364e4a2dfd8148c0b93b75d8ff1c4214 msgid "Spanish translation. :pr:`85` :pr:`88`" msgstr "" -#: ../../CHANGES.rst:538 -#: 9e42a95e59a74c5584d1144c249a57c1 +#: ../../CHANGES.rst:539 +#: 39a35892e6494270a65a235562211e53 msgid "Dedicated connectivity test email. :pr:`89`" msgstr "" -#: ../../CHANGES.rst:539 -#: e06855259b6f463897acd0f8a23cd05e +#: ../../CHANGES.rst:540 +#: b47b044c9d814ea98df1d057bdef5a19 msgid "Update to jquery 3.6.3. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:540 -#: 96cb7430946248108d8c97973a4799d5 +#: ../../CHANGES.rst:541 +#: a48c5424848f4396a6300f38b5471daf msgid "Update to fomantic-ui 2.9.1. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:541 -#: 5b5784d9aedb4949bac1591395fc7eb9 +#: ../../CHANGES.rst:542 +#: 7746a18d023c460c8b64b83eeb4e1895 msgid "Update to DataTables 1.13.1. :pr:`90`" msgstr "" -#: ../../CHANGES.rst:546 -#: e88b90b5e0eb418f99ea2839c1e79943 +#: ../../CHANGES.rst:547 +#: 7e1217800b654fc8adc10eeb952cc2f5 msgid "Fix typos and grammar errors. :pr:`84`" msgstr "" -#: ../../CHANGES.rst:547 -#: d333115d646f4ccf9a5bb2dc4d23eba0 +#: ../../CHANGES.rst:548 +#: abda017241404950b48f8efac9fdc9c9 msgid "Fix wording and punctuations. :pr:`86`" msgstr "" -#: ../../CHANGES.rst:548 -#: cfc153afa2ec4bee9c2dd589a234716c +#: ../../CHANGES.rst:549 +#: 10e5ef2bbd284e31b4eda7f81f7bc477 msgid "Fix HTML lang tag. :issue:`122` :pr:`87`" msgstr "" -#: ../../CHANGES.rst:549 -#: a2dc7b3677d040c7a43bde721f766029 +#: ../../CHANGES.rst:550 +#: 4e7702ae17ee456992ea48cd8a37e1fc msgid "Automatically trims the HTML translated strings. :pr:`91`" msgstr "" -#: ../../CHANGES.rst:550 -#: 9a91064adb7f414fab73518fbc77b01d +#: ../../CHANGES.rst:551 +#: ce0f54018448492c983b83f9f687ef82 msgid "Fixed dynamic registration scope management. :issue:`123` :pr:`93`" msgstr "" -#: ../../CHANGES.rst:553 -#: d7a2cda6d8e24cc484f13ee4df40c1ea +#: ../../CHANGES.rst:554 +#: c237ea1f9aac4ec2b1c843d7ab9ab218 msgid "[0.0.19] - 2023-01-14" msgstr "" -#: ../../CHANGES.rst:558 -#: f7c94b5e7545458e8375ef8a8e3dc21c +#: ../../CHANGES.rst:559 +#: 14c643ff842042b5a51f46661b7b8681 msgid "Ensures the token `expires_in` claim and the `access_token` `exp` claim have the same value. :pr:`83`" msgstr "" -#: ../../CHANGES.rst:562 -#: 9291df232e4b4a7eb97fb87504f9b8d4 +#: ../../CHANGES.rst:563 +#: 21e042a3e48f41048409e27017a970b9 msgid "[0.0.18] - 2022-12-28" msgstr "" -#: ../../CHANGES.rst:567 -#: c896b9996ab24cfeb217e9ebfdbed090 +#: ../../CHANGES.rst:568 +#: c4b8dee13cf54cc9b3a09610a6b384a3 msgid "OIDC end_session was not returning the ``state`` parameter in the ``post_logout_redirect_uri``. :pr:`82`" msgstr "" -#: ../../CHANGES.rst:571 -#: 2fa2e9a70b8d4ab4bed4d7f0d8d68f37 +#: ../../CHANGES.rst:572 +#: 353f49a6db7247d989368befd4c90822 msgid "[0.0.17] - 2022-12-26" msgstr "" -#: ../../CHANGES.rst:576 -#: cff81f4ef5254cfdb1e6ba76c2c3b9f6 +#: ../../CHANGES.rst:577 +#: ab608e9bb5e149e39c0c59c3be3dbf66 msgid "Fixed group deletion button. :pr:`80`" msgstr "" -#: ../../CHANGES.rst:577 -#: 552d92ac7c364f198201b60a3abebae2 +#: ../../CHANGES.rst:578 +#: 25c9cf71a4b84a2d9cd0f78b741c0b6f msgid "Fixed post requests in oidc clients views. :pr:`81`" msgstr "" -#: ../../CHANGES.rst:580 -#: f7c78b950b184117855277070cb4e548 +#: ../../CHANGES.rst:581 +#: 4149b3b16d764ab7905fc817ba705009 msgid "[0.0.16] - 2022-12-15" msgstr "" -#: ../../CHANGES.rst:585 -#: 3e522208e81740fba479a43b017311fd +#: ../../CHANGES.rst:586 +#: 4f7b050ada524ca99110de2af98ef375 msgid "Fixed LDAP operational attributes handling." msgstr "" -#: ../../CHANGES.rst:588 -#: 53e83abb15b24cc0a3d589011cf7c2a3 +#: ../../CHANGES.rst:589 +#: eb6d98c6f1954de58a40b1a7a8bc10eb msgid "[0.0.15] - 2022-12-15" msgstr "" -#: ../../CHANGES.rst:593 -#: 7194a505926740e3b52b81708d2818de +#: ../../CHANGES.rst:594 +#: a0e5a6ff923246d68231d5e1f7356f76 msgid "User can chose their display name. :pr:`77`" msgstr "" -#: ../../CHANGES.rst:594 -#: 5c5a59a03bd5497aa7474ae59e88f6bf +#: ../../CHANGES.rst:595 +#: 44c07c21854a42fc885ae1fcd1a6a201 msgid "Bumped to Authlib 1.2. :pr:`78`" msgstr "" -#: ../../CHANGES.rst:595 -#: 0a3d037fae66464b8c2dfeea28dd3eaf +#: ../../CHANGES.rst:596 +#: 1b360e7ce02f411b9834514fbc1b00c4 msgid "Implemented :rfc:`RFC7592 <7592>` OAuth 2.0 Dynamic Client Registration Management Protocol. :pr:`79`" msgstr "" -#: ../../CHANGES.rst:597 -#: 0670727ea1074acf968c49e71dc4062b +#: ../../CHANGES.rst:598 +#: 33d751e32dcd4a13adce2196a729447c msgid "Add the ``nonce`` parameter to the ``claims_supported`` server metadata list." msgstr "" -#: ../../CHANGES.rst:600 -#: eb86b7335b7b4971812f25c9a2d37d1e +#: ../../CHANGES.rst:601 +#: dba04a29e3a14c5fb7e9aa2a1a549a34 msgid "[0.0.14] - 2022-11-29" msgstr "" -#: ../../CHANGES.rst:604 -#: 9903a64c05994256813debf83e9a6b21 +#: ../../CHANGES.rst:605 +#: 8cd0feacd2824b0b87a841aa5d4ee1ba msgid "Fixed translation catalogs packaging." msgstr "" -#: ../../CHANGES.rst:607 -#: eb1e508e7d2c46bdb471cffecbe4d897 +#: ../../CHANGES.rst:608 +#: b60ffadb24184fa2a813cf0c67a816a0 msgid "[0.0.13] - 2022-11-21" msgstr "" -#: ../../CHANGES.rst:612 -#: 6e71d21752234824bc42897b8a434bb3 +#: ../../CHANGES.rst:613 +#: 9f23aca3972f48e9bc8d9cf2c760257b msgid "Fixed a bug on the contacts field in the admin client form following the LDAP schema update of 0.0.12." msgstr "" -#: ../../CHANGES.rst:614 -#: 374bd3f105af42bc8ea5c0de35e7437f +#: ../../CHANGES.rst:615 +#: 6c68ccda597a42df9148cfef906797ae msgid "Fixed a bug happening during RP initiated logout on clients without `post_logout_redirect_uri` defined." msgstr "" -#: ../../CHANGES.rst:616 -#: 6244294cde9d429dbab852b0f7721160 +#: ../../CHANGES.rst:617 +#: ac6c8083aa374040984d0350fa2fbc36 msgid "Gitlab CI fix. :pr:`64`" msgstr "" -#: ../../CHANGES.rst:617 -#: 8dc7de6abbd447f4a78272f33cbcb6cf +#: ../../CHANGES.rst:618 +#: a747a08976904f3fb6bc3381b8c94e61 msgid "Fixed `client_secret` display on the client administration page. :pr:`65`" msgstr "" -#: ../../CHANGES.rst:618 -#: be276c6c0aed433987b562fa51a9af06 +#: ../../CHANGES.rst:619 +#: 6a64b2d613c14ae9b7973dad5c7c925d msgid "Fixed non-square logo CSS. :pr:`67`" msgstr "" -#: ../../CHANGES.rst:619 -#: 45c4b643c08f4e98b8eb1994cca78051 +#: ../../CHANGES.rst:620 +#: 29182f0e7f1248e1a1c917b6ae0dfd01 msgid "Fixed schema path on installation. :pr:`68`" msgstr "" -#: ../../CHANGES.rst:620 -#: 490ff7e15c244e1c80522169f52be22c +#: ../../CHANGES.rst:621 +#: bb240d19b70243efb891b21b8a241bc2 msgid "Fixed RFC7591 ``software_statement`` claim support. :pr:`70`" msgstr "" -#: ../../CHANGES.rst:621 -#: 13d139a4ca6b420eb0780952acd8582c +#: ../../CHANGES.rst:622 +#: 7f9a0251d66846479a85943aa1fbe036 msgid "Fixed client preconsent disabling. :pr:`72`" msgstr "" -#: ../../CHANGES.rst:626 -#: f863beea190c4605afc13c35d7828c7e +#: ../../CHANGES.rst:627 +#: 03fac1bbdf3342018f4eb1b6efa8b465 msgid "Python 3.11 support. :pr:`61`" msgstr "" -#: ../../CHANGES.rst:627 -#: dfa820f752f64485950bd9f2f4f2f798 +#: ../../CHANGES.rst:628 +#: ba0b5e607d0a40e29cdcdc1a6cc98147 msgid "``apparmor`` slapd configuration instructions in the documentation page for contributions. :pr:`66`" msgstr "" -#: ../../CHANGES.rst:628 -#: 33f4b497e723467fb7cca94de105b331 +#: ../../CHANGES.rst:629 +#: 235a8b4a7ac74cc089299db6c43f5a94 msgid "``preferredLanguage`` attribute support. :pr:`75`" msgstr "" -#: ../../CHANGES.rst:633 -#: 80931cb05ba54eb0bdd13af0e69ae5c4 +#: ../../CHANGES.rst:634 +#: b8515bd5812547b9b6408e07754188bf msgid "Replaced the use of the deprecated `FLASK_ENV` environment variable by `FLASK_DEBUG`." msgstr "" -#: ../../CHANGES.rst:635 -#: 74c0ecca84cb4195b047360a2a12b281 +#: ../../CHANGES.rst:636 +#: 722ab05a3e8240b3a984e91cbcb85f2c msgid "Dynamically generate the server metadata. Users won't have to copy and manually edit ``oauth-authorizationserver.json`` and ``openid-configuration.json``. :pr:`71`" msgstr "" -#: ../../CHANGES.rst:638 -#: b56f59b2dd124c91a6268830cf4ddecc +#: ../../CHANGES.rst:639 +#: a79d0a5fc950458f9ea40f5fa340ae2d msgid "The `FROM_ADDR` configuration option is not mandatory anymore. :pr:`73`" msgstr "" -#: ../../CHANGES.rst:639 -#: d701256eb4764f81827acd7b0a0dbda3 +#: ../../CHANGES.rst:640 +#: f5c1547a0084442eba537cccef2a3181 msgid "The `JWT.ISS` configuration option is not mandatory anymore. :pr:`74`" msgstr "" -#: ../../CHANGES.rst:642 -#: 45607852e443428199051f1ecba9ba24 +#: ../../CHANGES.rst:643 +#: c9903f9704254bd8856c6fb23a3f7f34 msgid "[0.0.12] - 2022-10-24" msgstr "" -#: ../../CHANGES.rst:647 -#: 9997d515babd44b4841ef0218885f1f1 +#: ../../CHANGES.rst:648 +#: 713bdc2d9dee45d0b80eead40194b1f7 msgid "Basic WebFinger endpoint. :pr:`59`" msgstr "" -#: ../../CHANGES.rst:648 -#: 509a601f77664756bc01064f20359cf6 +#: ../../CHANGES.rst:649 +#: cc2f977715cb4c8ba51d4d34f6a4151f msgid "Bumped to FomanticUI 2.9.0." msgstr "" -#: ../../CHANGES.rst:649 -#: 2cfcbdba2e9541dbab610bc724a2683a +#: ../../CHANGES.rst:650 +#: a41e569505ed46e8a30eabb1605a9f4e msgid "Implemented Dynamic Client Registration. :pr:`60`" msgstr "" -#: ../../CHANGES.rst:652 -#: 4acb242ffb5440d1a468e2d3c3856fe8 +#: ../../CHANGES.rst:653 +#: 40e16cae3052481c9a967a80643e51dc msgid "[0.0.11] - 2022-08-11" msgstr "" -#: ../../CHANGES.rst:657 -#: 0c4bd2691ba9453b88a686a22ede18ef +#: ../../CHANGES.rst:658 +#: ac2a36a292ee496ba78a96711e33b778 msgid "Default theme has a dark variant. :pr:`57`" msgstr "" -#: ../../CHANGES.rst:662 -#: d3cabac68def4f77a693a6159bf2f5c0 +#: ../../CHANGES.rst:663 +#: c4d05a11686d406bba007ff8d333de4d msgid "Fixed missing ``canaille`` binary. :pr:`58`" msgstr "" -#: ../../CHANGES.rst:665 -#: 735459f4aeea42c6b0f7be4a2b06802f +#: ../../CHANGES.rst:666 +#: 1d3f0b2e79a94cf787d645b8898bce4a msgid "[0.0.10] - 2022-07-07" msgstr "" -#: ../../CHANGES.rst:670 -#: f9dfd87d0fa145579e2297b27b61a11b +#: ../../CHANGES.rst:671 +#: eaf79a2a1e6f4b1e9c3b3823e5dda85b msgid "Online demo. :pr:`55`" msgstr "" -#: ../../CHANGES.rst:671 -#: 5e5eef7b53ce470ab0a0137617552a9c +#: ../../CHANGES.rst:672 +#: 0d80f6e630d049c9ad813e945376ab83 msgid "The consent page was displaying scopes not supported by clients. :pr:`56`" msgstr "" -#: ../../CHANGES.rst:672 -#: f7b8675a05b64bafb3efbbad603537ce +#: ../../CHANGES.rst:673 +#: 559c5036f54d4cacab704fb3cdf57958 msgid "Fixed end session when user are already disconnected." msgstr "" -#: ../../CHANGES.rst:675 -#: a14c8084a27d463f82c1573d946a6676 +#: ../../CHANGES.rst:676 +#: 5395b02e05a04ce19c8d9cf8c0d54845 msgid "[0.0.9] - 2022-06-05" msgstr "" -#: ../../CHANGES.rst:680 -#: d04e2396209641cc84fa39d8bb397eaa +#: ../../CHANGES.rst:681 +#: d6b2f45bfea548cebbe625ae282f95c0 msgid "``DISABLE_PASSWORD_RESET`` configuration option to disable password recovery. :pr:`46`" msgstr "" -#: ../../CHANGES.rst:681 -#: 01acc147a456445eb3858de7b0586dca +#: ../../CHANGES.rst:682 +#: 216697ca6fc046a28864aa8152639a7c msgid "``edit_self`` ACL permission to control user self edition. :pr:`47`" msgstr "" -#: ../../CHANGES.rst:682 -#: dafb92303cb147909db73fdc619f1267 +#: ../../CHANGES.rst:683 +#: ea4420bc7f1c4c568d8da8657deddb66 msgid "`RP-initiated logout` implementation. :pr:`54`" msgstr "" -#: ../../CHANGES.rst:687 -#: f672b1443aa9498994204b20952103e4 +#: ../../CHANGES.rst:688 +#: 72b36fc3a5e74417b5fdcb5a23be8c12 msgid "Bumped to Authlib 1. :pr:`48`" msgstr "" -#: ../../CHANGES.rst:688 -#: 18c1456a82f748cd9ee0d6abcb40801f +#: ../../CHANGES.rst:689 +#: 4fbf3c55b45a4a119e339bd126960d20 msgid "Various documentation improvements. :pr:`50`" msgstr "" -#: ../../CHANGES.rst:689 -#: 77c7a3b3242647718a3a94a1fc4d05a1 +#: ../../CHANGES.rst:690 +#: 45feed1105504c609b5df975797e4194 msgid "Use poetry instead of setuptools as project management tool. :pr:`51`" msgstr "" -#: ../../CHANGES.rst:690 -#: 3b65181a80b64d0d8a474a5e643d3f80 +#: ../../CHANGES.rst:691 +#: c4542cdb5f7c4d58b07b4b0a90cb302d msgid "Additional tests for the OIDC ``nonce`` parameter. :pr:`52`" msgstr "" -#: ../../CHANGES.rst:694 -#: 35eef6ab06b940e8ad49bf31b7620404 +#: ../../CHANGES.rst:695 +#: b327af2d08cb437e9b4751818cf8a8e2 msgid "``HIDE_INVALID_LOGIN`` behavior and default value." msgstr "" -#: ../../CHANGES.rst:695 -#: 2792732f7d154df2b11a35b13114939b +#: ../../CHANGES.rst:696 +#: b000da6a9373445dad688a3b780a6aa0 msgid "Compiled translation catalogs are not versioned anymore. :pr:`49` :pr:`53`" msgstr "" -#: ../../CHANGES.rst:698 -#: 8766634316d146ab8929259434391f34 +#: ../../CHANGES.rst:699 +#: b2b2047443544b74a71bc79ff8c5f47b msgid "[0.0.8] - 2022-03-15" msgstr "" -#: ../../CHANGES.rst:703 -#: f053b2fe7153473a81cb24bfc2b90c7d +#: ../../CHANGES.rst:704 +#: 375d29aba6424d43b859b8c3edfa80ba msgid "Fixed dependencies." msgstr "" -#: ../../CHANGES.rst:706 -#: 6fe1289ea759485b9c3c7658461a409d +#: ../../CHANGES.rst:707 +#: aeb08878a74b4f47b6d37baacf675b15 msgid "[0.0.7] - 2022-03-15" msgstr "" -#: ../../CHANGES.rst:711 -#: f40f5e320ea4412fadc8f1bc1d99198c +#: ../../CHANGES.rst:712 +#: 34c20276bd7c45bcb792f22355e4927a msgid "Fixed spaces and escaped special char in LDAP ``cn/dn`` attributes. :pr:`43`" msgstr "" -#: ../../CHANGES.rst:714 -#: ac9b3059b303486a9b31536f1726d873 +#: ../../CHANGES.rst:715 +#: 0976abec0d0b46a3ae20e83d110393ec msgid "[0.0.6] - 2022-03-08" msgstr "" -#: ../../CHANGES.rst:719 -#: 357a41c66f054b9b830d9ae20551690d +#: ../../CHANGES.rst:720 +#: d963ca446eb94c6e9aeb75012abb1cfd msgid "Access token are JWT. :pr:`38`" msgstr "" -#: ../../CHANGES.rst:724 -#: 20b619f456934ab09712d95d37ef12cd +#: ../../CHANGES.rst:725 +#: 02ca5edc4d13450db7f18d59d45864bf msgid "Default groups on invitations. :pr:`41`" msgstr "" -#: ../../CHANGES.rst:725 -#: 74f8d8568cd1405bbef739de7b92f380 +#: ../../CHANGES.rst:726 +#: 5891d198061a448c9ba57ffdbc6f801d msgid "LDAP schemas are shipped within the Canaille package. :pr:`42`" msgstr "" -#: ../../CHANGES.rst:728 -#: 936cdbdb780241beb677c1a3c5d21735 +#: ../../CHANGES.rst:729 +#: c3272c14158a40f59a6b0f77af890f33 msgid "[0.0.5] - 2022-02-17" msgstr "" -#: ../../CHANGES.rst:733 -#: b49925c79428413ca8c31eff4f42a588 +#: ../../CHANGES.rst:734 +#: 406e2245d9dc4d679bdcbd6b5728861e msgid "LDAP model objects have new identifiers. :pr:`37`" msgstr "" -#: ../../CHANGES.rst:738 -#: 21e3bd1145ce480ea8a82394722cef34 +#: ../../CHANGES.rst:739 +#: a9f0c61002d0458eb30d4affda6e47c1 msgid "Admin menu dropdown display. :pr:`39`" msgstr "" -#: ../../CHANGES.rst:739 -#: b50bd877e6fa4055a450f65d4e0e6951 +#: ../../CHANGES.rst:740 +#: fe303a61e23a434a890964802224e16a msgid "``GROUP_ID_ATTRIBUTE`` configuration typo. :pr:`40`" msgstr "" -#: ../../CHANGES.rst:742 -#: 93523c049fd2438b9f8dbb942b657b7c +#: ../../CHANGES.rst:743 +#: 5bd8b178d1d5466e844942b7afed166e msgid "[0.0.4] - 2022-02-16" msgstr "" -#: ../../CHANGES.rst:747 -#: 9cc5e4c0be3e43f98a84d076d254a7a8 +#: ../../CHANGES.rst:748 +#: 649efb86b8b2433589e7bbbdd8b5cd1e msgid "Client pre-authorization. :pr:`11`" msgstr "" -#: ../../CHANGES.rst:748 -#: b1444e5514e3495f8f05b00bfb31e54b +#: ../../CHANGES.rst:749 +#: 6e7050395d194611ad2c085e64f383a2 msgid "LDAP permissions check with the check command. :pr:`12`" msgstr "" -#: ../../CHANGES.rst:749 -#: 81badbb21dfe4dd0bd990037947c24cf +#: ../../CHANGES.rst:750 +#: 5ae674761b1f4b2ea7718a8d8f227016 msgid "Update consents when a scope required is larger than the scope of an already given consent. :pr:`13`" msgstr "" -#: ../../CHANGES.rst:751 -#: 5f6092f6103d401e9fe4554e04ad12cb +#: ../../CHANGES.rst:752 +#: 5fb12e8bee6440d5912e9ebd8921a6e3 msgid "Theme customization. :pr:`15`" msgstr "" -#: ../../CHANGES.rst:752 -#: 7e99d3a9c9134144a8e18989e6d0d633 +#: ../../CHANGES.rst:753 +#: c2ebd08df453407f97b9eebd16b55149 msgid "Logging configuration. :pr:`16`" msgstr "" -#: ../../CHANGES.rst:753 -#: abd6618054b443efbb5101e9c32f0c90 +#: ../../CHANGES.rst:754 +#: 06ac3fd9e9474c87a1d5dce79d49f547 msgid "Installation command. :pr:`17`" msgstr "" -#: ../../CHANGES.rst:754 -#: 18c69372e28c42c4b0ac0cae51fcd8aa +#: ../../CHANGES.rst:755 +#: 5b18c8b637654faa84da8cf06f428780 msgid "Invitation links. :pr:`18`" msgstr "" -#: ../../CHANGES.rst:755 -#: 2e35dc7cf246485c97650451d1f41d93 +#: ../../CHANGES.rst:756 +#: 13e0a85eb2b7475181bdd35f25eecee6 msgid "Advanced permissions. :pr:`20`" msgstr "" -#: ../../CHANGES.rst:756 -#: ef3b8ab7e89448089a9d09363832c7cc +#: ../../CHANGES.rst:757 +#: 2d166176352d463282ef0c831cba992c msgid "An option to not use OIDC. :pr:`23`" msgstr "" -#: ../../CHANGES.rst:757 -#: 4d5d5581283a4eaabab00c6df18077a0 +#: ../../CHANGES.rst:758 +#: 3b87847e50664f6196aa406788838dc7 msgid "Disable some features when no SMTP server is configured. :pr:`24`" msgstr "" -#: ../../CHANGES.rst:758 -#: a54b117ff68e47eabb66aa0a741790b1 +#: ../../CHANGES.rst:759 +#: de8d6a74115549b8adc25882f14e9588 msgid "Login placeholder dynamically generated according to the configuration. :pr:`25`" msgstr "" -#: ../../CHANGES.rst:759 -#: 8593aca44439457296e5591823f56739 +#: ../../CHANGES.rst:760 +#: c5919e02f35e45469b725fd79aade908 msgid "Added an option to tune object IDs. :pr:`26`" msgstr "" -#: ../../CHANGES.rst:760 -#: 548d5d09a1da4104aed49324dd3d96b6 +#: ../../CHANGES.rst:761 +#: 607e9f8c23b54e8c998700ff4416eaec msgid "Avatar support. :pr:`27`" msgstr "" -#: ../../CHANGES.rst:761 -#: e6275bae918547beab8caabaf64f57db +#: ../../CHANGES.rst:762 +#: c279a511c9b141568ede28b7c0afa583 msgid "Dynamical and configurable JWT claims. :pr:`28`" msgstr "" -#: ../../CHANGES.rst:762 -#: 82bbcaaa7973438696de021fbff14354 +#: ../../CHANGES.rst:763 +#: 08fa58159ca6437e8f1beca79627fa27 msgid "UI improvements. :pr:`29`" msgstr "" -#: ../../CHANGES.rst:763 -#: 70cd1dd3d81d4288b1c6bca674492944 +#: ../../CHANGES.rst:764 +#: 2a2b659fe7154b799ce44fafb902fd57 msgid "Invitation links expiration. :pr:`30`" msgstr "" -#: ../../CHANGES.rst:764 -#: af865fef102c44bc801e8aec157c2835 +#: ../../CHANGES.rst:765 +#: ce7aa46cc889408aa52bbb62f76c92b6 msgid "Invitees can choose their IDs. :pr:`31`" msgstr "" -#: ../../CHANGES.rst:765 -#: d194b87cfbd94dd398f1c58bec6e4c37 +#: ../../CHANGES.rst:766 +#: 6bdec9f52f5044e698c2bf619c587280 msgid "LDAP backend refactoring. :pr:`35`" msgstr "" -#: ../../CHANGES.rst:770 -#: 2409763cd25243c9a80678c470fa336d +#: ../../CHANGES.rst:771 +#: e819e93e00234beea6d9820e82fde531 msgid "Fixed ghost members in a group. :pr:`14`" msgstr "" -#: ../../CHANGES.rst:771 -#: ae04a8fa1896467792d8aaaf161fed29 +#: ../../CHANGES.rst:772 +#: 10dd9d261d284523a84fd5c59050af24 msgid "Fixed email sender names. :pr:`19`" msgstr "" -#: ../../CHANGES.rst:772 -#: 596c5956ebc6442984251ca5c558834e +#: ../../CHANGES.rst:773 +#: 8b309c5389bf44e8ac69e53c2765b585 msgid "Fixed filter being not escaped. :pr:`21`" msgstr "" -#: ../../CHANGES.rst:773 -#: bbf97ea202404efd8708cfbed4bbfe74 +#: ../../CHANGES.rst:774 +#: cd93af35f9cc4576b1659289218ec809 msgid "Demo script good practices. :pr:`32`" msgstr "" -#: ../../CHANGES.rst:774 -#: 8d176b7d4da5419d8768430eeb01036c +#: ../../CHANGES.rst:775 +#: 9e92fa5ce3cd43848cc7c809c709180c msgid "Binary path for Debian. :pr:`33`" msgstr "" -#: ../../CHANGES.rst:775 -#: 004ecd0e934049ef823bbf0d63f75c14 +#: ../../CHANGES.rst:776 +#: 7d0dadcab0a644aba779030c25e2fc88 msgid "Last name was not mandatory in the forms while this was mandatory in the LDAP server. :pr:`34`" msgstr "" -#: ../../CHANGES.rst:777 -#: c6de3dbeeb5f40ff85c60e062271bfdb +#: ../../CHANGES.rst:778 +#: 4526606a32614a238d9ba69b3f3c311d msgid "Spelling typos. :pr:`36`" msgstr "" -#: ../../CHANGES.rst:780 -#: d49aed2f00e346cc8adaa26aa54f470a +#: ../../CHANGES.rst:781 +#: c92de561587746169e06e8a51bd2efcd msgid "[0.0.3] - 2021-10-13" msgstr "" -#: ../../CHANGES.rst:785 -#: 0b32a6319c044bba95b3a00f245c6956 +#: ../../CHANGES.rst:786 +#: b4e4578702394d8db53727dca04e2eeb msgid "Two-steps sign-in. :issue:`49`" msgstr "" -#: ../../CHANGES.rst:786 -#: 4cf53569893c4b0ba8eab17b44a4a15b +#: ../../CHANGES.rst:787 +#: f1f267f1648f4866b3b003c271acb344 msgid "Tokens can have several audiences. :issue:`62` :pr:`9`" msgstr "" -#: ../../CHANGES.rst:787 -#: 2956507b8bba47839fef6f9a63d5321a +#: ../../CHANGES.rst:788 +#: 51257e276adb454f9bd203167e591489 msgid "Configuration check command. :issue:`66` :pr:`8`" msgstr "" -#: ../../CHANGES.rst:788 -#: 0415c157cb414913b3d7748afba41cda +#: ../../CHANGES.rst:789 +#: 5684d9f7c259429290886a77f263ce3f msgid "Groups management. :issue:`12` :pr:`6`" msgstr "" -#: ../../CHANGES.rst:793 -#: e08a9eafc49f45cbb361ed3bd89d4649 +#: ../../CHANGES.rst:794 +#: c439c2e96fa14377bc990f5fc2cd65bc msgid "Introspection access bugfix. :issue:`63` :pr:`10`" msgstr "" -#: ../../CHANGES.rst:794 -#: 48e63a4a411d4aab8259f74b1d257a37 +#: ../../CHANGES.rst:795 +#: 0c8a65056b0c4684984d84f76362f380 msgid "Introspection sub claim. :issue:`64` :pr:`7`" msgstr "" -#: ../../CHANGES.rst:797 -#: 2a9047b937be481f811eb403d6bf7fd9 +#: ../../CHANGES.rst:798 +#: 664b613f4fd74b97a6caa749d9c5fd58 msgid "[0.0.2] - 2021-01-06" msgstr "" -#: ../../CHANGES.rst:802 -#: 9f74458dacff435998774594822a1506 +#: ../../CHANGES.rst:803 +#: 2a77b05db06141a9918f93152e999c25 msgid "Login page is responsive. :issue:`1`" msgstr "" -#: ../../CHANGES.rst:803 -#: 8a87683d8d524cd482264473256b3777 +#: ../../CHANGES.rst:804 +#: 6d5de8101cf648e3b546489ba36f58aa msgid "Adapt mobile keyboards to login page fields. :issue:`2`" msgstr "" -#: ../../CHANGES.rst:804 -#: c777083179094cd994619adcfc8499d9 +#: ../../CHANGES.rst:805 +#: b945b81cdb88450c92efe96b2baa1329 msgid "Password recovery interface. :issue:`3`" msgstr "" -#: ../../CHANGES.rst:805 -#: c7393dc1bb6a4290bfdb2d59a3fef0c9 +#: ../../CHANGES.rst:806 +#: 89545855a2d04788922fe2566668d450 msgid "User profile interface. :issue:`4`" msgstr "" -#: ../../CHANGES.rst:806 -#: e874e0e97cae4310ba62553c3d31cd16 +#: ../../CHANGES.rst:807 +#: 909bce16a1e349f6b070d4b2fb7dc069 msgid "Renamed the project *Canaille*. :issue:`5`" msgstr "" -#: ../../CHANGES.rst:807 -#: 27a300eabaaf4644989d134ccca22dd8 +#: ../../CHANGES.rst:808 +#: f1cd27a5a0794001afd13fdacf6fc6c5 msgid "Command to remove old tokens. :issue:`17`" msgstr "" -#: ../../CHANGES.rst:808 -#: 8e168b1583984a71848678112365d1c7 +#: ../../CHANGES.rst:809 +#: 17fa5866a3994849b85361163b9ea131 msgid "Improved password recovery email. :issue:`14` :issue:`26`" msgstr "" -#: ../../CHANGES.rst:809 -#: 901de9a21dd94541b3c23946ada4cd88 +#: ../../CHANGES.rst:810 +#: 9565eb5071fa47ddae91f5f76af6b048 msgid "Use Flask `SERVER_NAME` configuration variable instead of `URL`. :issue:`24`" msgstr "" -#: ../../CHANGES.rst:810 -#: 62c1e3da0a87437aaa529dcc936c7dbc +#: ../../CHANGES.rst:811 +#: 8386c50a80aa4b8ca9ce34942d659216 msgid "Improved consents page. :issue:`27`" msgstr "" -#: ../../CHANGES.rst:811 -#: f816ffeb73244ae0b1171b8c156d1e12 +#: ../../CHANGES.rst:812 +#: 0aa2212e1af549f8bdce3c9588cd6109 msgid "Admin user page. :issue:`8`" msgstr "" -#: ../../CHANGES.rst:812 -#: 2241f2b45f1e426f99f68ccc516c6b60 +#: ../../CHANGES.rst:813 +#: 0c8c21373574440392345e305971d258 msgid "Project logo. :pr:`29`" msgstr "" -#: ../../CHANGES.rst:813 -#: dd802cef3e384fdc928fc43178ab119a +#: ../../CHANGES.rst:814 +#: 912385ce9ea24b4b81f77904ad670901 msgid "User account self-deletion can be enabled in the configuration with `SELF_DELETION`. :issue:`35`" msgstr "" -#: ../../CHANGES.rst:814 -#: 75d6d908a827424284ea63478783cbf9 +#: ../../CHANGES.rst:815 +#: 447289b003f64e72b8b0977842a73f9c msgid "Admins can impersonate users. :issue:`39`" msgstr "" -#: ../../CHANGES.rst:815 -#: b4eee6e748f94ba9b6e62e2e7fd4d86b +#: ../../CHANGES.rst:816 +#: ad67189130fd49868fcb0abfad1e7275 msgid "Forgotten page UX improvement. :pr:`43`" msgstr "" -#: ../../CHANGES.rst:816 -#: 44489482b8d54ae78c70959758d6f825 +#: ../../CHANGES.rst:817 +#: 660c1528bbe0431aa50394306e761072 msgid "Admins can remove clients. :pr:`45`" msgstr "" -#: ../../CHANGES.rst:817 -#: be6e5371ee2a48efa0d9d276e9caa9a0 +#: ../../CHANGES.rst:818 +#: 3aa25de74978491ab76de431e7819552 msgid "Option `HIDE_INVALID_LOGIN` that can be unactivated to let the user know if the login he attempt to sign in with exists or not. :pr:`48`" msgstr "" -#: ../../CHANGES.rst:819 -#: b1df16b2411a440d8d2a0745c972f368 +#: ../../CHANGES.rst:820 +#: 44549258486845fab0456f113a04f98b msgid "Password initialization mail. :pr:`51`" msgstr "" -#: ../../CHANGES.rst:824 -#: ba317999584d46d7b5bfda36157bc111 +#: ../../CHANGES.rst:825 +#: 11f9843c7ed348d89ec776212da1f871 msgid "Form translations. :issue:`19` :issue:`23`" msgstr "" -#: ../../CHANGES.rst:825 -#: e0d773fd3f814a438321528df1c4d67d +#: ../../CHANGES.rst:826 +#: 115b5ed2ccf441d59dd25dc521fb148e msgid "Avoid to use Google Fonts. :issue:`21`" msgstr "" -#: ../../CHANGES.rst:830 -#: d7c5d0509cfe422ab95beb9c1929e413 +#: ../../CHANGES.rst:831 +#: ce6a992d5aa3472aa464e0aae5e1dd58 msgid "'My tokens' page. :issue:`22`" msgstr "" -#: ../../CHANGES.rst:833 -#: 35ab727ebe564ff2a2aa3e28f9392f5b +#: ../../CHANGES.rst:834 +#: 5c71c7871c87474a9a6e956d46958569 msgid "[0.0.1] - 2020-10-21" msgstr "" -#: ../../CHANGES.rst:838 -#: 487e834d3b154f69991d042f97ce3734 +#: ../../CHANGES.rst:839 +#: 174e925430f14fad869e0c91923805af msgid "Initial release." msgstr "" #: ../../CONTRIBUTING.rst:2 -#: 77d0a023f5f34e7c804011fd50b75bc3 +#: 0990185d86db4ce8a07d51360d1322d3 msgid "Contributions" msgstr "" #: ../../CONTRIBUTING.rst:4 -#: 9955ba6bbfb54c74930043f9d86335dc +#: da4d8554175642ba94b4f7e339063077 msgid "Contributions are welcome!" msgstr "" #: ../../CONTRIBUTING.rst:6 -#: dd58980e1983404d8bc93b9e0866785d +#: 7c2b65c2bab049f7ae36d441f0956ecd msgid "The repository is hosted at `gitlab.com/yaal/canaille `_." msgstr "" #: ../../CONTRIBUTING.rst:9 -#: 880fd4b263fa4f5aa77f826cf6d7a13e +#: a673ec733c0a4064b2cd6cb76e454637 msgid "Discuss" msgstr "" #: ../../CONTRIBUTING.rst:11 -#: 0e5a0bf82cd4444ebc3ff1dd43a4362c +#: 1cb0899f872a4345aa339d9f3a6139a3 msgid "If you want to implement a feature or a bugfix, please start by discussing it with us on the `bugtracker `_ or the `matrix room `_." msgstr "" #: ../../CONTRIBUTING.rst:16 -#: 032421a7ce0548e38943bb37b9e46f90 +#: 393a353bc9ee457e876a227f79bddc75 msgid "Development environment" msgstr "" #: ../../CONTRIBUTING.rst:18 -#: 464b7af189da4cf2ba346183c47e6264 +#: 7948bd5b6ee144f59136b49cfb7ee55f msgid "You can either run the demo locally or with Docker." msgstr "" #: ../../CONTRIBUTING.rst:20 -#: b918844970c545a3826d0b39a79cb08c +#: f119e4446ee4463d80ce3fe3e0588b06 msgid "The only tool required for local development is `uv`. Make sure to have uv `installed on your computer `_ to be able to hack Canaille." msgstr "" #: ../../CONTRIBUTING.rst:24 -#: 56f217cf35444c72b1bc1a1cb3ee9e53 +#: 632e3a0e19ab4c97aea1bfdfd0b5c165 msgid "Initialize your development environment with:" msgstr "" #: ../../CONTRIBUTING.rst:26 -#: 9cf0a292c2bb408fa660e14ab61f0e43 +#: 507673718d174120a28e7afc5a110ec7 msgid "``uv sync --extra front --extra oidc`` to have a minimal working development environment. This will allow you to run the tests with ``uv pytest --backend memory``." msgstr "" #: ../../CONTRIBUTING.rst:27 -#: 8d29fc6ad3bd43c5b232963f5137c91a +#: 942fe3cb54354168a07c3862241e378c msgid "``uv sync --extra front --extra oidc --extra sqlite`` to have a minimal working development environment with SQLite backend support. This will allow you to run the tests with ``uv pytest --backend sql``." msgstr "" #: ../../CONTRIBUTING.rst:28 -#: 928d535d56314259b20055eea3a4ceb4 +#: 18e74ae611944f71b212e9072eb24b3e msgid "``uv sync --extra front --extra oidc --extra ldap`` to have a minimal working development environment with LDAP backend support. This will allow you to run the tests with ``uv pytest --backend ldap``." msgstr "" #: ../../CONTRIBUTING.rst:29 -#: 56b8780399064aec89d3099841d1b017 +#: 4a5010a9a38349dbb5af58ff13291b28 msgid "``uv sync --all-extras`` if you want to have everything at your fingertips. Note that it may compile some Python dependencies that would expect things to be installed on your system; Some dependencies of Canaille might need to be compiled, so you probably want to check that `GCC` and `cargo` are available on your computer." msgstr "" #: ../../CONTRIBUTING.rst:32 -#: 1a514a3605f243979b2d04e1a329368a +#: 75f515626b4f4524b29f13d98acf40ad msgid "After having launched the demo you have access to several services:" msgstr "" #: ../../CONTRIBUTING.rst:34 -#: bbde54dc79ba4241bd97323b5152b50b +#: 7eb94a5ef2ee4a4db852ca0988e51945 msgid "A canaille server at `localhost:5000 `_" msgstr "" #: ../../CONTRIBUTING.rst:35 -#: d028b9cbae714b2d945ba4d70a75fb99 +#: ad12ff8db3d64a02b528e93c352ebdf1 msgid "A dummy client at `localhost:5001 `_" msgstr "" #: ../../CONTRIBUTING.rst:36 -#: dbd0340fc974432798237b9b3efe01ea +#: 2cd9a0e0ac94408289a0d31a15112fd0 msgid "Another dummy client at `localhost:5002 `_" msgstr "" #: ../../CONTRIBUTING.rst:38 -#: 9ff28ddd679b42f4a5bf288242e8c827 +#: e3696d8d026b4c0391112ce8c19e90b1 msgid "The canaille server has some default users:" msgstr "" #: ../../CONTRIBUTING.rst:40 -#: 324e9f4f1d744fa49a0c3e7fe60cf46b +#: 8f956c9e5db842f6a5e28e81353915f9 msgid "A regular user which login and password are **user**;" msgstr "" #: ../../CONTRIBUTING.rst:41 -#: 30a3f2679a4b456791471ac6d4c15e2b +#: b2efc68d24d34fa39590ef3064ce84b0 msgid "A moderator user which login and password are **moderator**;" msgstr "" #: ../../CONTRIBUTING.rst:42 -#: d5e4f771a0854678af55e11ae4c8fc3d +#: d38003f0a5674760918da590be8b7c60 msgid "An admin user which admin and password are **admin**;" msgstr "" #: ../../CONTRIBUTING.rst:43 -#: 325a060f0844402d80a7267a46291010 +#: 9cf3b6e86c78488fbadac5d7f7da7081 msgid "A new user which login is **james**. This user has no password yet, and his first attempt to log-in would result in sending a password initialization email (if a smtp server is configured)." msgstr "" #: ../development/specifications.rst:106 #: ../../CONTRIBUTING.rst:48 -#: c01f125a22914f369ef28ef090a728b1 -#: 01a043d4a4364011b8a22a53549b20da +#: 381b89217b0348debccf9ea7d3e494b8 +#: 24da1fbbb1214b0aad0e8cfd91ebad9f msgid "Backends" msgstr "" #: ../../CONTRIBUTING.rst:50 -#: 12c4afcb316c448797ed9784ef9fbaa1 +#: a456ad4a727440eea70c2267c7dd5a8a msgid "Canaille comes with several backends:" msgstr "" #: ../../CONTRIBUTING.rst:52 -#: 853d2b906b80415db33c707e29640f4c +#: d658db4aa8734153b436094cd3c588b2 msgid "a lightweight test purpose `memory` backend" msgstr "" #: ../../CONTRIBUTING.rst:53 -#: b280dce615cb48ec8456abf65fec4a9e +#: d8b76bacd56f44168825850444a6b29e msgid "a `sql` backend, based on sqlalchemy" msgstr "" #: ../../CONTRIBUTING.rst:54 -#: ad6d07459c274a9e8282e290875d5bfb +#: 0b6fbdf76a3748059ed8f25be5597e12 msgid "a production-ready `LDAP` backend" msgstr "" #: ../../CONTRIBUTING.rst:57 -#: 7db1494e281b4b89949e18e1ece1cb6c +#: a131ee5f73f3462281ec7b8ce52c4ff2 msgid "Docker environment" msgstr "" #: ../../CONTRIBUTING.rst:59 -#: c8e61bddd24e4af0ab8ee2bd2709652d +#: 934a3551784041c2a96d1040950cf880 msgid "If you want to develop with docker, your browser needs to be able to reach the `canaille` container. The docker-compose file exposes the right ports, but front requests are from outside the docker network: the `canaille` url that makes sense for docker, points nowhere from your browser. As exposed ports are on `localhost`, you need to tell your computer that `canaille` url means `localhost`." msgstr "" #: ../../CONTRIBUTING.rst:64 -#: 0e3e6469d25f43998fce20bcb1291b86 +#: 669dec4ddb9844a097afd2f606725df1 msgid "To do that, you can add the following line to your `/etc/hosts`:" msgstr "" #: ../../CONTRIBUTING.rst:70 -#: c0dce613d6384dd18a1d6abce742bf55 +#: 9bdeeebb82004fabb71ccd006be5a152 msgid "To launch containers, use:" msgstr "" @@ -1964,748 +1969,748 @@ msgstr "" #: ../tutorial/databases.rst:16 #: ../../CONTRIBUTING.rst:73 #: ../../CONTRIBUTING.rst:108 -#: 32e05154931e4a6fadcba3b0720e0655 -#: f1b0c988daa54dd4a0c5b30a062cf012 -#: 94f958ac7cab437580604c64cdfa27be -#: 528aa40e3cd04297b5ebf44fc955e9a9 +#: e147d723475a42de95ae6b307ec2c1b3 +#: 129d25dfcdd144ccb4be37e7474aed23 +#: e6e3a6c57dbd41f4bbb3846087970020 +#: cdf80b9bdb0a4d59b519e6d6ffd71ae3 msgid "SQL" msgstr "" #: ../../CONTRIBUTING.rst:74 #: ../../CONTRIBUTING.rst:109 -#: c66d8a018f064cb3ba36abf12473b5f4 -#: 15c287c63f7f441f991033e23cbb9f95 +#: 24ef4199122140dd8f6df3109ee6544e +#: 19b6a09e2468439b82b110ec4c051ae6 msgid "With the SQL backend, the demo instance will load and save data in a local sqlite database." msgstr "" #: ../../CONTRIBUTING.rst:76 #: ../../CONTRIBUTING.rst:111 -#: 6ddf226447fa4bb89cbf73cc8376c371 -#: c72bd69b5ad94f5992bfe2d30f5b0e8d +#: 9bc9fa8549854c99ad7f739ec5317a99 +#: 573978fa6ecb432fa0d54cc76e8f2861 msgid "Run the demo instance with the SQL backend" msgstr "" #: ../tutorial/databases.rst:8 #: ../../CONTRIBUTING.rst:83 #: ../../CONTRIBUTING.rst:117 -#: e5f82f8945b747ac81b31a20cc241e5d -#: 9a11f967d4c74ad8b9dff673e77d2315 -#: 84a192a56d404fb1baf97b065f6ceaa8 +#: c9ac76f0f24b441aa9632911fb19ff7e +#: d578daebea3f4c2cb6fe0d4866bcb690 +#: b22dc1aeb5f0489c9a2228869072255b msgid "Memory" msgstr "" #: ../../CONTRIBUTING.rst:84 #: ../../CONTRIBUTING.rst:118 -#: 9c56b31ca9724e62a5aee62e28196764 -#: 22784d30d5a748d2b73ebe7c423c64bc +#: 8d19234a6dd74306bd775fc44ac43c63 +#: 9be657a56d1c460b9ce184d59e8b1c5f msgid "With the memory backend, all data is lost when Canaille stops." msgstr "" #: ../../CONTRIBUTING.rst:86 #: ../../CONTRIBUTING.rst:120 -#: da0af4f3bc5147ae8130399630381126 -#: c1436f14bd2049479ac16384a47f2d38 +#: 8f594f36a26342d8a6c1b8f53ab7dcd2 +#: 2c26d8e08f034833b27c02831de86710 msgid "Run the demo instance with the memory backend" msgstr "" #: ../development/specifications.rst:108 -#: ../tutorial/databases.rst:32 +#: ../tutorial/databases.rst:45 #: ../../CONTRIBUTING.rst:93 #: ../../CONTRIBUTING.rst:126 -#: 6f4008249f544ff4afa4e2a7ccebfab2 -#: ce4afa36ab774346b11322758b51325e -#: f9a9bf9c1c6d49b99edee201000ea0a0 -#: 2e130a461dc64b989f22d4f932976a65 +#: c135807ed63542f1ae515a60df0501ba +#: 00ed3f79be9f4e7588e38a777da737ab +#: 5933c483337e4ebb9390a59a166e2a13 +#: 2c30cc73fa584d5886d6f04ed75f1b1d msgid "LDAP" msgstr "" #: ../../CONTRIBUTING.rst:94 #: ../../CONTRIBUTING.rst:127 -#: 4f3a2e440337421f95f937952e7dc9be -#: db5ad48ecaa94207ab2b7d84bbebf569 +#: 83b3c6b4940141b885f051fb82b84125 +#: 054bfb478e684320a73b57569eec14df msgid "With the LDAP backend, all data is lost when Canaille stops." msgstr "" #: ../../CONTRIBUTING.rst:96 #: ../../CONTRIBUTING.rst:129 -#: 50095289006e499588719acc50eb5a56 -#: 80a55900cfc34f4e8b34b5e653a7fdfb +#: 6e2da183608c4e7bb87e38a2c66aa63b +#: 73a67cd951644177bdccca3a08deb606 msgid "Run the demo instance with the LDAP backend" msgstr "" #: ../../CONTRIBUTING.rst:105 -#: 9e2c9acef9184e34b00d62c97980467d +#: 2fa57166974946a899931022ba5fad8a msgid "Local environment" msgstr "" #: ../../CONTRIBUTING.rst:135 -#: 5fffaf4bff884b5a839078ad5a889fc9 +#: 8283fb57ce51423a9b3541571cc4cd0b msgid "If you want to run the demo locally with the LDAP backend, you need to have `OpenLDAP `_ installed on your system. It is generally shipped under the ``slapd`` or ``openldap`` package name." msgstr "" #: ../../CONTRIBUTING.rst:140 -#: aa9aab912ff04dd68c3b59bf1e36575a +#: 6e8c5a2f92e348ab9afedd54df75c46a msgid "On Debian or Ubuntu systems, the OpenLDAP `slapd` binary usage might be restricted by apparmor, and thus makes the tests and the demo fail. This can be mitigated by removing apparmor restrictions on `slapd`." msgstr "" #: ../../CONTRIBUTING.rst:150 -#: 3d21757ba34c4721af043c150330c2e4 +#: c78ca4223f9645a583ac47bd1aa5c146 msgid "Populate the database" msgstr "" #: ../../CONTRIBUTING.rst:152 -#: a412d39e98cf44f6b911566e1ebcdbde +#: bb0e31cb292b423fba42e70830997721 msgid "The demo database comes populated with some random users and groups. If you need more, you can generate users and groups with the ``populate`` command:" msgstr "" #: ../../CONTRIBUTING.rst:163 -#: cdf90f875bcc44d5b41197a7cdbb275c +#: cbb12aab253c455fa1b1754f2eb0729a msgid "Adapt to use either the `ldap` or the `sql` configuration file. Note that this will not work with the memory backend." msgstr "" #: ../../CONTRIBUTING.rst:166 -#: 2db32f774df8429fa4c9e83d00616a96 +#: 0e899d83156d4e029681d634b1dec436 msgid "Unit tests" msgstr "" #: ../../CONTRIBUTING.rst:168 -#: 5d6a9b57b35d49c48e2b615f8128ebcc +#: 39be72b7c6d54603abbca8de879267c5 msgid "To run the tests, you just can run `uv run pytest` and/or `uv run tox` to test all the supported python environments. Everything must be green before patches get merged." msgstr "" #: ../../CONTRIBUTING.rst:171 -#: e1e6e475ff78404f930bb453f1f26e3b +#: 45992e8a617143e6a2b805043155118a msgid "To test a specific backend you can pass ``--backend memory``, ``--backend sql`` or ``--backend ldap`` to pytest and tox." msgstr "" #: ../../CONTRIBUTING.rst:173 -#: 2cb85029b4274de388878da3d3285369 +#: 8162f265527e4a42a0ab95ec14e769a4 msgid "The test coverage is 100%, patches won't be accepted if not entirely covered. You can check the test coverage with ``uv run pytest --cov --cov-report=html`` or ``uv run tox -e coverage -- --cov-report=html``. You can check the HTML coverage report in the newly created `htmlcov` directory." msgstr "" #: ../../CONTRIBUTING.rst:178 -#: 4408d499056c480f86f450a781d2ca0d +#: 775bdfa6e27e469383647d7d603659a1 msgid "Code style" msgstr "" #: ../../CONTRIBUTING.rst:180 -#: 93e483f2a66a4d8f82feb8ca9a739818 +#: b309d56f31904c9da28ceb01fe67d6f9 msgid "We use `ruff `_ along with other tools to format our code. Please run ``uv run tox -e style`` on your patches before submitting them. In order to perform a style check and correction at each commit you can use our `pre-commit `_ configuration with ``uv run pre-commit install``." msgstr "" #: ../../CONTRIBUTING.rst:186 -#: 0dca6207e6734ab487cb3fe72c3e90e8 +#: dbbdab0936124ac2a12af49411a84128 msgid "Front" msgstr "" #: ../../CONTRIBUTING.rst:188 -#: 930e01d770324dc68f73095cd5456a8e +#: 799d621279764c62af4239338d80db8a msgid "The interface is built upon the `Fomantic UI `_ CSS framework. The dynamical parts of the interface use `htmx `_." msgstr "" #: ../../CONTRIBUTING.rst:191 -#: fc0da8a2736e461dab5a7d242c1cfa9a +#: 128898c5e69d49368cdbf572550dacca msgid "Using Javascript in the interface is tolerated, but the whole website MUST be accessible for browsers without Javascript support, and without any feature loss." msgstr "" #: ../../CONTRIBUTING.rst:193 -#: a13b055a65244362a025440451de998d +#: dc05fa959ec8437381264442b6a30974 msgid "Because of Fomantic UI we have a dependency to jQuery, however new contributions should not depend on jQuery at all. See the `related issue `_." msgstr "" #: ../index.rst:71 #: ../../CONTRIBUTING.rst:198 -#: e3ff6afa466e4e61aa4f677cd58d3ed2 -#: a08d8d5331494e7d93508eaf25f41a07 +#: 392f1081f6e94b6da5679a367a2e7a4a +#: 0f273ce3769347ce8015316671ac1b15 msgid "Documentation" msgstr "" #: ../../CONTRIBUTING.rst:200 -#: 2e1fdcae75de46a6b50db7e4155758af +#: b5151aeda933407bb66f3ea0d6ba101e msgid "The documentation is generated when the tests run:" msgstr "" #: ../../CONTRIBUTING.rst:206 -#: 94405109592b47c09c8726c305fa5edc +#: 39f2fefbdf4343ccb8641e3dcc1549b4 msgid "You can also run sphinx by hand, that should be faster since it avoids the tox environment initialization:" msgstr "" #: ../../CONTRIBUTING.rst:212 -#: fe4610d142474897ae4f97d321448fac +#: 89531c0a7d17422684603832f8aeef47 msgid "The generated documentation is located at ``build/sphinx/html/en``." msgstr "" #: ../../CONTRIBUTING.rst:215 -#: bf09dd8ed31742bca2fa80175ae85bb3 +#: bb87f6e759f140baa631b9a44d008e97 msgid "Code translation" msgstr "" #: ../../canaille/translations/README.rst:1 -#: 35fff9d115334ec6aa6a99ec5da8a27f +#: c4bd0dcdf5b847958c1713690a062440 msgid "Translations are done with `Weblate `__." msgstr "" #: ../../canaille/translations/README.rst:3 -#: b72ee2174a9b42c493780415e3d3fcfd +#: 04a9342ea51b4cceb41bf7505907566a msgid "The following commands are there as documentation, only the message extraction is needed for contributors. All the other steps are automatically done with Weblate." msgstr "" #: readme.rst:6 #: ../../canaille/translations/README.rst:8 #: readme.rst:6 -#: ea5bd05b09984bcaa643efa7a1a7618c -#: ea5bd05b09984bcaa643efa7a1a7618c -#: 33490a8ff4a3465fb8648393ff65eb75 +#: 84706a46430343e6aa358b28a46feff2 +#: 08d06911b6e54459881d14deaf9a7a80 +#: 33cedfb8b8624971bbe4cb2413fbdb15 msgid "Message extraction" msgstr "" #: readme.rst:8 #: ../../canaille/translations/README.rst:10 #: readme.rst:8 -#: 210e9ff98db74777830a5a1f4746df44 -#: 210e9ff98db74777830a5a1f4746df44 -#: 16b22e2bc3cf495bbef529f5732887e3 +#: 4ade1dc0d8cb420cb02eae9fd4fd3653 +#: d8994cc54925437687864ded269ddc34 +#: 384b7d18414843f9adfa40c46f734da5 msgid "After you have edited translatable strings, you should extract the messages with:" msgstr "" #: readme.rst:15 #: ../../canaille/translations/README.rst:17 #: readme.rst:15 -#: 54ecd51acf494402964ae281c6cd639b -#: 54ecd51acf494402964ae281c6cd639b -#: 02fa7225075346f89ad702cba8aabdeb +#: 1e09dc8b659c479eb2f6f943786e423e +#: 6ddd54ecd3f540b28fea415cea1199df +#: 8492e236ff844116b90640e12b246f67 msgid "Language addition" msgstr "" #: readme.rst:17 #: ../../canaille/translations/README.rst:19 #: readme.rst:17 -#: 5429b47768e2472ea597ed48140a5621 -#: 5429b47768e2472ea597ed48140a5621 -#: 015d6a437f7e4d099c8cad60986c0b68 +#: 0720284c793641c5a85eecc25ba0d9b3 +#: 0aea2aff48bf4743b456f7a56cd41359 +#: 9aaae4da193146b4b4f41aa2bd467336 msgid "You can add a new language manually with the following command, however this should not be needed as Weblate takes car of this:" msgstr "" #: ../../canaille/translations/README.rst:26 -#: bdfbb4ef60c54b26abf457ba930b7fcf +#: 25ee62b065294ad5adf105b9d575587b msgid "Catalog update" msgstr "" #: ../../canaille/translations/README.rst:28 -#: 94b8fc10d3aa4e05b54d619c4b1aaa25 +#: 20e76bc5528c40b4bdd89c629723e8c4 msgid "You can update the catalogs with the following command, however this should not be needed as Weblate automatically update language catalogs when it detects new strings or when someone translate some existing strings. Weblate pushes happen every 24h." msgstr "" #: ../../canaille/translations/README.rst:36 -#: f232cbfdd201463ab74fe71353c8e23b +#: 15327a715c38464fa9dfb969965c2ac1 msgid "Catalog compilation" msgstr "" #: ../../canaille/translations/README.rst:38 -#: 3c756dd105564866a8d74e994e65f2b6 +#: 4c95a49edb0740d0ad34d7eee9466334 msgid "You can compile the catalogs with the following command, however this should not be needed as catalogs are automatically compiled before running the unit tests, before launching the demo and before compiling the Canaille python package:" msgstr "" #: ../../CONTRIBUTING.rst:221 -#: 4ff341d941384c029ed9c0b49d1062f9 +#: da97f28b857241879092e1c0a45cc6d6 msgid "Documentation translation" msgstr "" #: readme.rst:1 #: readme.rst:1 -#: 35fff9d115334ec6aa6a99ec5da8a27f -#: 7abe83f2eeb54b3f9f3d1a8542696765 +#: 9776df929dbd40f59315d9dad326da0a +#: 127143cd0922422c941bd0880cb85699 msgid "Translations are done with `Weblate `__." msgstr "" #: readme.rst:3 #: readme.rst:3 -#: de92a131ecf44614963dd89770f593ae -#: 0ca00925251d48668c7673ddece41d66 +#: b1e092b9af914bbaa60034638b5feb44 +#: cb5ccfce511a4bff97a39b300396dfce msgid "The following commands are there as documentation, only the message extraction and the language addition is needed for contributors." msgstr "" #: readme.rst:24 #: readme.rst:24 -#: 3d142fe9f633400ea029e949f1e869ee -#: 74cc2740b1584972aa3c0e672dff5f3e +#: 9312e9d146484a30b47297cfe934dcb7 +#: f6ae3452c2de41c397aec993afaab244 msgid "Build the documentation in another language" msgstr "" #: ../../CONTRIBUTING.rst:226 -#: 4b1dc3dae99f4c6fbbeec3e54be3e922 +#: 588494c60125438a9a70645678f05ca3 msgid "Publish a new release" msgstr "" #: ../../CONTRIBUTING.rst:228 -#: 975b37a07edc4a42bbef14c2ca80a34f +#: 420e9e7fcb244f18b3db1d1b9c52d92c msgid "Check that dependencies are up to date with ``uv sync --all-extras --upgrade`` and update dependencies accordingly in separated commits;" msgstr "" #: ../../CONTRIBUTING.rst:229 -#: e9bd8386c6c64ef99aac12ee831f39d1 +#: 00227bd468c34010a3883e4e0f90d8e3 msgid "Check that tests are still green for every supported python version, and that coverage is still at 100%, by running ``uv run tox``;" msgstr "" #: ../../CONTRIBUTING.rst:230 -#: 3e7d5493a8e44c1a9067010115678723 +#: 72f3b000f5b1489384c00d6e266c63a8 msgid "Check that the demo environments are still working, both the local and the Docker one;" msgstr "" #: ../../CONTRIBUTING.rst:231 -#: fe7867ea9416424e81c518f77853958a +#: 5bea104b168a477f9accf8d55549330e msgid "Check that the :ref:`development/changelog:Release notes` section is correctly filled up;" msgstr "" #: ../../CONTRIBUTING.rst:232 -#: 7d89adc1c3e6478ab9e8faa02f97bf03 +#: 90f263cc1eeb4ef5a42f8809672f64ef msgid "Increase the version number in ``pyproject.toml``;" msgstr "" #: ../../CONTRIBUTING.rst:233 -#: a376131776cd4e469611fa3ad6749be9 +#: 58fe93530d98448c82779271abb44629 msgid "Commit with ``git commit``;" msgstr "" #: ../../CONTRIBUTING.rst:234 -#: 655fd489e5324dc5b6172d438a6b8e3e +#: ad1df1a61c3942368ec1313411547c13 msgid "Build with ``uv build``;" msgstr "" #: ../../CONTRIBUTING.rst:235 -#: 79fc61b7c13647a285a918a0c126ea53 +#: 0cfad1da05584638ab4bc386b666f5a3 msgid "Publish on test PyPI with ``uv publish --publish-url https://test.pypi.org/legacy/``;" msgstr "" #: ../../CONTRIBUTING.rst:236 -#: 93540129ce0c440eba4da63ed3ddb769 +#: f6308d8a0b3f4db4bc7c7907d8a1f266 msgid "Install the test package somewhere with ``pip install --extra-index-url https://test.pypi.org/simple --upgrade canaille``. Check that everything looks fine;" msgstr "" #: ../../CONTRIBUTING.rst:237 -#: 8a73b31d1fe14fdda15e6c2dea0cafc9 +#: 0e10ccf92af749d49e9bfea50fd82a50 msgid "Publish on production PyPI ``uv publish``;" msgstr "" #: ../../CONTRIBUTING.rst:238 -#: 93131bb37ccc4207825449d393f92201 +#: fa1c23c9661d4fb8b0f5d291a64d49f7 msgid "Tag the commit with ``git tag XX.YY.ZZ``;" msgstr "" #: ../../CONTRIBUTING.rst:239 -#: a98a5168d5f949ec9e96f16d8ff8b6f5 +#: 7a281f02d2a741c892e150979920d23b msgid "Push the release commit and the new tag on the repository with ``git push --tags``." msgstr "" #: ../development/index.rst:2 #: ../tutorial/theming.rst:41 -#: c0f14bad2988468fa0700bbd47fe1de0 -#: 294492704f9349cba94a11db140b19ab +#: 52e76c88219e4de19a2b82b2a2c1c4d8 +#: 1b6948f6a143409db5b73d81af367214 msgid "Development" msgstr "" #: ../development/specifications.rst:2 -#: 156d2082306649a89c7c6ff9b0879911 +#: b3876dc3555842a49a1c8e1eb079fbe1 msgid "Specifications" msgstr "" #: ../development/specifications.rst:4 -#: 2c830d15b604470ca1912e9a07b2deb6 +#: 8ce7c58ef8634acb8f37bf04fde97d9c msgid "This page details which specifications are implemented in Canaille, and compares Canaille with other well-known identity providers." msgstr "" #: ../development/specifications.rst:7 -#: bfa87dc7f42445fb96172a2ce7643950 +#: 4c4e202076854f99b4d398d1e3719296 msgid "State of the specs in Canaille" msgstr "" #: ../development/specifications.rst:10 -#: b57576e6aa1e46c0ab9b0d74e40f7a1c +#: 682849a438ce4c9eb771d18c1c3e21b4 msgid "OAuth2" msgstr "" #: ../development/specifications.rst:12 -#: 44156ac1d21c44f89d2090ae27ad397e +#: 829d6454dfd14680b17fad372f8cca40 msgid "✅ `RFC6749: OAuth 2.0 Framework `_" msgstr "" #: ../development/specifications.rst:13 -#: 3dd5d1bc312e4808b9dfb7e906f9a1b3 +#: f115a6d1703c4250ab425bb030e48939 msgid "✅ `RFC6750: OAuth 2.0 Bearer Tokens `_" msgstr "" #: ../development/specifications.rst:14 -#: 3f7c67f6ca7049a0a99455d27e7b9278 +#: 77024b74c51f45b984117084b8f7deb5 msgid "✅ `RFC7009: OAuth 2.0 Token Revocation `_" msgstr "" #: ../development/specifications.rst:15 -#: b11098fcf9e64dfca026aa25e97624cc +#: 9fdf59e113c6482f8db2451c5b2df549 msgid "❌ `RFC7523: JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants `_" msgstr "" #: ../development/specifications.rst:16 -#: 0213796d176a4938a10c902cfb737a18 +#: bdeb1dc9178d4e00a0377e2c22346350 msgid "✅ `RFC7591: OAuth 2.0 Dynamic Client Registration Protocol `_" msgstr "" #: ../development/specifications.rst:17 -#: afdc8def073c495e8bb24a1ec6a0d62a +#: fe66b098739b46ceb8bc989246fc9067 msgid "✅ `RFC7592: OAuth 2.0 Dynamic Client Registration Management Protocol `_" msgstr "" #: ../development/specifications.rst:18 -#: f592e7f0f2074289b67beb893604277d +#: f084226dce6c46c1b6aa79e024bd4543 msgid "✅ `RFC7636: Proof Key for Code Exchange by OAuth Public Clients `_" msgstr "" #: ../development/specifications.rst:19 -#: bc914d1d327d4ce6a638c5245c4cfcc3 +#: ae8757b89e224f2d8348038e1924d795 msgid "✅ `RFC7662: OAuth 2.0 Token Introspection `_" msgstr "" #: ../development/specifications.rst:20 -#: 08bbaa19162d456899ba99be7b0f9e3d +#: 531dff6077d14c7aa880e7f823c72eff msgid "✅ `RFC8414: OAuth 2.0 Authorization Server Metadata `_" msgstr "" #: ../development/specifications.rst:21 -#: abbbc93f57ba4660bafa5396616419d8 +#: 6b2fc87355914a08b0e0c9e4d795443c msgid "❌ `RFC8428: OAuth 2.0 Device Authorization Grant `_" msgstr "" #: ../development/specifications.rst:22 -#: a9adf95822164ad9a91366b631a095ab +#: 535bd458ee31408ebe837c03ea660d17 msgid "❌ `RFC8693: OAuth 2.0 Token Exchange `_" msgstr "" #: ../development/specifications.rst:23 -#: fac77fd04d2c457cbdda2f46d21a549d +#: f0bfbeac37b44b8d816100505c291ba9 msgid "❌ `RFC8705: OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens `_" msgstr "" #: ../development/specifications.rst:24 -#: 772cbe80f8cd44faa3230ee4e690e5f3 +#: ed43d77027d44b88b776baeebed78802 msgid "❌ `RFC8707: Resource Indicators for OAuth 2.0 `_" msgstr "" #: ../development/specifications.rst:25 -#: 8b06eb72e70742fc821332a4676ba48e +#: 5630d915f527443e93073192b4bc2e8a msgid "❌ `RFC9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens `_" msgstr "" #: ../development/specifications.rst:26 -#: 088615a4afdc48a5b6449df856cb1eb3 +#: 6dfb4c82f5d24fe5ac3edde198aae615 msgid "❌ `RFC9101: OAuth 2.0 JWT-Secured Authorization Request (JAR) `_" msgstr "" #: ../development/specifications.rst:27 -#: 4bd307887c6a4dcebb9d5ff9b9c3176a +#: b14871b2584c40ddb76374986a69d89f msgid "❌ `RFC9126: OAuth 2.0 Pushed Authorization Requests `_" msgstr "" #: ../development/specifications.rst:28 -#: bf777af155ec47bb85265068ff053b85 +#: 8d53df978c09455cbbd5f0b3c86fae56 msgid "❌ `RFC9207: OAuth 2.0 Authorization Server Issuer Identification `_" msgstr "" #: ../development/specifications.rst:29 -#: 06b84e457b3f423099a45450e8be7b96 +#: fc24914060bc4e2b83be624cf1e72c4b msgid "❌ `RFC9394: OAuth 2.0 Rich Authorization Requests `_" msgstr "" #: ../development/specifications.rst:30 -#: 17a488e183c64a7696ff1f8b3f02e3d8 +#: 415da024ae33470ead9213e36bbb5287 msgid "❌ `OAuth2 Multiple Response Types `_" msgstr "" #: ../development/specifications.rst:31 -#: 28df30b698994c9ebb429fbe577701ac +#: 90dca086523a4b7992b11bd243218023 msgid "❌ `OAuth2 Form Post Response Mode `_" msgstr "" #: ../development/specifications.rst:34 #: ../features.rst:230 -#: 273611a66c514122bd1b8986c81f8464 -#: 511272a32c844e4cb9ca0d2c2b0aeb42 +#: a191e1d8741042fd82b609c98cb88f49 +#: a39756472b3e413583feb8a2a3c5a456 msgid "OpenID Connect" msgstr "" #: ../development/specifications.rst:36 -#: 1b811c589c884281a965b470a69c935c +#: f8aa5fbf69f64a6cae6b53d13ab9f14d msgid "✅ `OpenID Connect Core `_" msgstr "" #: ../development/specifications.rst:37 -#: 8eb4c67d2de84a09ba6681ab0ad1dcf0 +#: 0aa3c6a211764851be72af8859e72faf msgid "✅ `OpenID Connect Discovery `_" msgstr "" #: ../development/specifications.rst:38 -#: 3dd0ab1827034c7f8bb58dd56463cb2a +#: 8731b7e2a1f440d0ab3d19f58363205b msgid "✅ `OpenID Connect Dynamic Client Registration `_" msgstr "" #: ../development/specifications.rst:39 -#: 5202769d4fed46999e56f7d6a0a03c5d +#: 19762de2d0564cd2bab6556f5daa32b9 msgid "✅ `OpenID Connect RP Initiated Logout `_" msgstr "" #: ../development/specifications.rst:40 -#: 768d7dd2182a418fb9344db3f5cba48a +#: b1f99cddaa19432189ba53247b24d887 msgid "❌ `OpenID Connect Session Management `_" msgstr "" #: ../development/specifications.rst:41 -#: bffbc632d9bf4c89b64bb51cdece0844 +#: 6bc7d7cf2e6e4fbd8c5b37ee78f38da3 msgid "❌ `OpenID Connect Front Channel Logout `_" msgstr "" #: ../development/specifications.rst:42 -#: 3001306e82cc4e9b80078a4631c791f9 +#: c86778f4c87d4ea5bf51969fd79efa9a msgid "❌ `OpenID Connect Back Channel Logout `_" msgstr "" #: ../development/specifications.rst:43 -#: 3e1058c4a8154eb58a563e171a03a51b +#: f29d468edc9e4c93b4e132dcb896ec23 msgid "❌ `OpenID Connect Back Channel Authentication Flow `_" msgstr "" #: ../development/specifications.rst:44 -#: 7d20317b02f54007a0d6e9e79b82b243 +#: aca2626f01c94811ab9cbb4e11c8249a msgid "❌ `OpenID Connect Core Error Code unmet_authentication_requirements `_" msgstr "" #: ../development/specifications.rst:45 -#: cc695337a4a4431c9a62bdc2471f489d +#: 5a70caff3ff34223b1fc4bd8270c2184 msgid "✅ `Initiating User Registration via OpenID Connect 1.0 `_" msgstr "" #: ../development/specifications.rst:46 -#: 6cfd3e82e2bb4f80a58d8864be2ef301 +#: ca8c178eab77479991d9744e62826ca5 msgid "❌ `OpenID Connect Profile for SCIM Services `_" msgstr "" #: ../development/specifications.rst:49 #: ../development/specifications.rst:108 -#: d9278a9cbe784818b57f9fd9d76dda68 -#: d9278a9cbe784818b57f9fd9d76dda68 +#: 794c29185c834483b43d4cd7efa94774 +#: 4c7bd083d6eb494aa8290e0e28cf88d3 msgid "SCIM" msgstr "" #: ../development/specifications.rst:51 -#: 6599ee73d8ab49579b0e09836d421750 +#: 9f8697b813204adba4a63ddf11a7fd36 msgid "Canaille provides a basic SCIM server implementation." msgstr "" #: ../development/specifications.rst:53 -#: c91f11a0512e4782981c5bb98a8038d7 +#: 3e956d7fa3934bc7a67befcae72393c8 msgid "🟠 `RFC7642: System for Cross-domain Identity Management: Definitions, Overview, Concepts, and Requirements `_" msgstr "" #: ../development/specifications.rst:54 -#: 2f4ea31b4c80425a8e3075b8597ae8e5 +#: c51b643157fe4079b535244f4f63c809 msgid "🟠 `RFC7643: System for Cross-domain Identity Management: Core Schema `_" msgstr "" #: ../development/specifications.rst:55 -#: 6ffdb285557144afb301b05c33fecddf +#: f31d0b61f1c44de4befe75f6142c1421 msgid "🟠 `RFC7644: System for Cross-domain Identity Management: Protocol `_" msgstr "" #: ../development/specifications.rst:57 -#: 0b5af403924542a99c63f28eaab81ca5 +#: 4b113baa287044a5b3710d8083f306e1 msgid "Client-side implementation (i.e. broadcasting changes on users and groups among clients) and advanced features will be implemented in the future." msgstr "" #: ../development/specifications.rst:60 -#: f4700ad912314bfc8d66be8471a4c772 +#: 68cfc580aef74b74ac47e293bbf7440e msgid "What's implemented" msgstr "" #: ../development/specifications.rst:62 #: ../development/specifications.rst:83 -#: a221acec85ca4725b2951cb9b51e20d5 -#: a3820ca28394481b85c5906175c9211b +#: 344f97d9c70a41f2aa7db3e292674b0d +#: 2a7e31290d3b4472a9886379380543d7 msgid "Endpoints:" msgstr "" #: ../development/specifications.rst:64 -#: fda698ab71304acb81f54cb02fbeea05 +#: 51a2a6bac44a4c84b78e77b3e1c03d51 msgid "/Users (GET, POST)" msgstr "" #: ../development/specifications.rst:65 -#: 888be4da4f194f319087de8e766157f2 +#: 35f011e2bf79415883469e279325ef25 msgid "/Users/ (GET, PUT, DELETE)" msgstr "" #: ../development/specifications.rst:66 -#: 172c39c33a9d4449b9fa08649f7e1db5 +#: a071464fe752465bbe18f12c5f63562f msgid "/Groups (GET, POST)" msgstr "" #: ../development/specifications.rst:67 -#: 351bfa9248414180b3e2e12f3e39a7cc +#: 48d92f0c8d28471f9c4de06a6fee14aa msgid "/Groups/ (GET, PUT, DELETE)" msgstr "" #: ../development/specifications.rst:68 -#: 0b3147e232df4562abe864dcc3c62600 +#: 8b34a263d2b046cbb9a20a2083938892 msgid "/ServiceProviderConfig (GET)" msgstr "" #: ../development/specifications.rst:69 -#: d12ef72fdb2a4faf91c5f3a6606e09d3 +#: 75ce8a0bca0543dd9059ea6b0090f9c3 msgid "/Schemas (GET)" msgstr "" #: ../development/specifications.rst:70 -#: 3a2387dace19496d9539e3adb6b3a634 +#: f9e4b33f55864bc09237b0688d4c1cba msgid "/Schemas/ (GET)" msgstr "" #: ../development/specifications.rst:71 -#: 7bd1a03ce13a4a519529ffa633c39dad +#: 7315f0b03e3447bfb18af0bd54b13e99 msgid "/ResourceTypes (GET)" msgstr "" #: ../development/specifications.rst:72 -#: 7bc66e9808184fa28e9af54c0a2ca411 +#: cb771a93cdef478bbc6d52657d778ba1 msgid "/ResourceTypes/ (GET)" msgstr "" #: ../development/specifications.rst:74 -#: 65ccf2057cb044258e738dd9dcfb0582 +#: f8cb594cde24439c8d642d7eecdeb33d msgid "Features:" msgstr "" #: ../development/specifications.rst:76 -#: ef940c8ad25f4e97a8d4fa1ee9bfd786 +#: 175a65fc837f4dc48a10d3b167a464a7 msgid ":rfc:`pagination <7644#section-3.4.2.4>`" msgstr "" #: ../development/specifications.rst:81 -#: f4700ad912314bfc8d66be8471a4c772 +#: 38c532b3622f4a2b8b789298a0bfed99 msgid "What is not implemented yet" msgstr "" #: ../development/specifications.rst:85 -#: 76085a65129e4d1387aa1ccb5b5b2bba +#: d2456827f07847dfa9f42e8bf86da08f msgid "/Users (PATCH)" msgstr "" #: ../development/specifications.rst:86 -#: da3a2dd71b204dd8941958051a0ca269 +#: 6bad7d4b458c4294be2ad05dcac5abd4 msgid "/Groups (PATCH)" msgstr "" #: ../development/specifications.rst:87 -#: 1936b0ba8c5743b397c3dcc914f453fc +#: a26dd83532c44f7abad4572dd932170a msgid ":rfc:`/Me <7644#section-3.11>` (GET, POST, PUT, PATCH, DELETE)" msgstr "" #: ../development/specifications.rst:88 -#: d6095a95a820448c8e93c6205907d2c0 +#: 836bfaabb5544327a40fb8c893a2f0e5 msgid ":rfc:`/Bulk <7644#section-3.11>` (POST)" msgstr "" #: ../development/specifications.rst:89 -#: 8ae6230d4d04470587eabc0e85bfd237 +#: aa37c0272ba24b308922fc40b66e3a2e msgid ":rfc:`/.search <7644#section-3.4.3>` (POST)" msgstr "" #: ../development/specifications.rst:91 #: ../features.rst:9 -#: 8b8d299ade65429ab2a1739bbeca65b0 -#: 61a68141a485477a9fb49921e7b8aa3a +#: d7b01888bb114c7d95660a93cbf52311 +#: d58b104b8d5548c594cfd8be5a3a1adc msgid "Features" msgstr "" #: ../development/specifications.rst:93 -#: f85742cf16c0404a99264064c75cebbd +#: c62cbc4b8b56467aa7fd7d0ff542fe4a msgid ":rfc:`filtering <7644#section-3.4.2.2>`" msgstr "" #: ../development/specifications.rst:94 -#: e20e4adefa5947319005523f6b6a9377 +#: 7ca9fca1e13c4f79a9ba327f7ce384f6 msgid ":rfc:`sorting <7644#section-3.4.2.3>`" msgstr "" #: ../development/specifications.rst:95 -#: 02742549d8f54bc18893ecb9c419809c +#: 5c835bee9e924b52881f7bf441ecb4e9 msgid ":rfc:`attributes selection <7644#section-3.4.2.5>`" msgstr "" #: ../development/specifications.rst:96 -#: 9e10ed15bc1b477ea12326a749bf64b8 +#: 5d3dbd08058047d8a38b559ea46c277e msgid ":rfc:`ETags <7644#section-3.14>`" msgstr "" #: ../development/specifications.rst:99 -#: ac600b38603f4fb999aebf5ffbe33cc7 +#: 255c6e6f83b44945a5f67191414a1b9b msgid "Comparison with other providers" msgstr "" #: ../development/specifications.rst:101 -#: 2ef9567e17694a669ed5071c882661ad +#: 4d4ac8c44b4a459792dfd9e7c931c6f4 msgid "Here is a feature comparison with other OpenID Connect server software." msgstr "" #: ../development/specifications.rst:103 -#: d6d241980d3e46e192dd54a5082b0197 +#: 034c310137f74d2cbaf87959b844f123 msgid "Canaille voluntarily only implements the OpenID Connect protocol to keep its codebase simple." msgstr "" #: ../development/specifications.rst:106 -#: 0b9a4fba353c483692ed6fb04227691e +#: a0b6d9411ccd46a0a614e61187457f81 msgid "Software" msgstr "" #: ../development/specifications.rst:106 -#: 62c2fe7c97644cfa8e7d297a337bfe36 +#: 0972e311a8984d718913ab728c5a613d msgid "Project" msgstr "" #: ../development/specifications.rst:106 -#: f4700ad912314bfc8d66be8471a4c772 +#: ec16e393279c4574919b9dc2fde6566e msgid "Protocols implementations" msgstr "" #: ../development/specifications.rst:108 -#: ea237be2a99a4940be67516a1b95d97d +#: 069a90c864e9485ba71f0626a04bb7ac msgid "FLOSS" msgstr "" #: ../development/specifications.rst:108 -#: 55d5dd9174f94ca9850b999864598259 +#: 793ab8c0e5864c36951cdfe503b6b520 msgid "Language" msgstr "" #: ../development/specifications.rst:108 -#: 27002c409c6440d29ae89e91559a6994 +#: a17def4fd4ba4cdf836371d70a58dae0 msgid "LOC" msgstr "" #: ../development/specifications.rst:108 #: ../references/templates.rst:48 -#: 3ba35fd6c6d44150b4b049cf603e4a85 -#: 1e5e7225bddd44a4accf8159f4a489c4 +#: 2489de89a6ae4142a72fb3176f96d97c +#: 4d2cf4eb587146ad9de3a2e651a4f59b msgid "OIDC" msgstr "" #: ../development/specifications.rst:108 -#: dc762bcd6eca4fc79dae1ca65c411351 +#: fde25f12c34b4290a5781d59545fd4f5 msgid "SAML" msgstr "" #: ../development/specifications.rst:108 -#: 6ae5803282c4439a9e7b1c1570e4c505 +#: 1bf933220236402a8578cb23e99a23d6 msgid "CAS" msgstr "" #: ../development/specifications.rst:110 -#: f4c4ac6fdea74558a74bc9a3cefbb5c7 +#: a06c6e50e788419f8e23165436f5b64a msgid "Canaille" msgstr "" @@ -2721,81 +2726,81 @@ msgstr "" #: ../development/specifications.rst:128 #: ../development/specifications.rst:130 #: ../development/specifications.rst:132 -#: 33e7166b401144bcadff959d61e03c4c -#: c2035a448fa9405a92d51c9c90277394 -#: 7bba6b8427854a41b99c15b883290007 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: 588ab8a50fca4528b9a471dbddfb7d4a -#: c2035a448fa9405a92d51c9c90277394 -#: ba65de35554741a48a7eb4a72fc66433 -#: c2035a448fa9405a92d51c9c90277394 -#: 4dd20636352243038f0bdad8d15e8449 -#: 5b23071246ab41f1abd1bfa5596a4b46 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c1aa2d442f2047f9a1194e38c2b1ddd1 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: ce03d94ab7954c02968bfb44eb0f72fd -#: 9fb4e3e247d846419051f2852ffa3f31 -#: f5e5911bcb704af19c073370f437c1b4 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: e063ffcc58474df4a66b2814eb4c0f61 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: cff48ca4a13545309d9e1b58c3dede80 -#: e55ccef99f4a45be8fb35a1ed8bb1ac4 -#: 4b09487097334807804aaba873d4dc7b -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c9b45500d9d145a8862c978d95329330 -#: c34b7940cbbd4218af2cb94e8eb24fc7 -#: 8a394726b7b941dfbbd8af3e546782c1 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: f5320617a03e47dea905ac5a70208c70 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 -#: c2035a448fa9405a92d51c9c90277394 +#: 8359cdf8361a4f40af83efebc710b26c +#: 92ab0f4a4a88426788a990e1a4e66ac1 +#: 2144f214b51540269c3be06540f96d80 +#: 07291bfd83b44fea9b28698e9459714f +#: c1c334386ed74b60a5c918c27074b3b2 +#: 4141a1bf492f460f9122f6e4a6a472cc +#: 7da15555b136476c90a6ee8c07ad8931 +#: bb31a9d5919e4ec496f1ded1061047ef +#: 29b780d8270448919bb84882ad99e208 +#: cf66b87d6d6946b2a6a1bba66ec49866 +#: 405ec378a23f45368056001f0e125e86 +#: 32573bb2db2c48f294f1c8e99041b7ba +#: fa87dc7094444bf192921dc21d96e163 +#: 31885860425144758e2f46e1d15fb0ed +#: 4fab7f1511c941f1a2d49c35650eec5b +#: 958e8e4c17ae448ab5446180b5bd5907 +#: 03c8b263424f44b5b671ddc157dd5cbc +#: b417afdb4bf84c16af18d53b34834dcd +#: 5199937c1c8b4832a2f9576e4dc925d9 +#: 888dd2299cac429ca0feff30cb7ee7fd +#: 89cd7338992946d0b687a257acc47a1a +#: 411d48d5271146c7a27f5e61927d5718 +#: 7d8bf7085a2d407b88566b752769d211 +#: b03b87ae7f0a463f81fe51fd42c9d856 +#: d56cbf84355a44ca8b2783ca1296fe33 +#: 395c20898c52466d9ea4d48f3b51f8b5 +#: 274d57a4fe6a40bfadaff61802338c2c +#: ee3e34ce765f4a0b9ca32df1e2154604 +#: e4b974ef3e284bb79a6af7f6ba7b6bf8 +#: 68486605ae5f433d9276e6cf2fdb6352 +#: f2f6140c99c744eba16734ae914f6068 +#: b2dc6bf2db8d40e0923c648a7f3fbe77 +#: a6709cf0859f42bdb86a3efa686225f9 +#: 8beffdfc8f574c68bf648c43d1b9fd53 +#: 8e1c7536e3a449ffb9057ee3d9fd0616 +#: 4a99ccc8d37b4ef79c1d5fb9156cb01d +#: 559c72bcf9154c7482c3c9817c013846 +#: d90a2be715354f9fbec07d1ddecf0587 +#: 7de72e60317f48dea89bef5d42834ce9 +#: 72dfddba807a4ff3a1b6d21f05357709 +#: c2154721e215407d9519a1364e36cf94 +#: bcfc9457ee264da795001e4691011bf3 +#: 6a6b82c0868442c2b3910c250c9c30ff +#: d5dff4f0dae6496a879e8b23b78f98c5 +#: 61dcd56d6ecc43b59758e02fdddc9b45 +#: 67b31d28861444308994cdf883ae317a +#: 270eace283a14d66b9e59db048efc37f +#: 7ea946aabc7e4da186e50262a66e66a8 +#: 428c79ed0ab4413081e3cf9b65023836 +#: 8f8e1f80778c4738989497cdf6fd0cad +#: 3586504e4d564d288508699bf1a476f7 +#: cc2d8201751c4180a568013887a8fa37 +#: 4fc53bcdaf484ca48d2d4d8be91eee4b +#: e6544ae648cb4504a26dd8f471900b7c +#: feb5d4d093514ec682e54082d8fe615c +#: ab882015b1b943c4b7890f07712df299 +#: 6b9ef531feaf40e8bdff9ff234df758c +#: b9210995b5634268b16adb581dee4c0a +#: f25e1de836dc405eb0a8c879ae679dd8 +#: 0e8ef9488cc94903b2841e13fb9a19cc +#: 9a715a4a98ae4db0b95302ea696f69ff +#: 0726f102de6646dfa28e29178067d786 +#: 6b7ffc0ef20048e0a85521ccae8f188a msgid "✅" msgstr "" #: ../development/specifications.rst:110 #: ../development/specifications.rst:116 -#: 86f975b8aaab4af9bfc62ef2df91ba28 -#: 86f975b8aaab4af9bfc62ef2df91ba28 +#: 2ce059e05f9c4da293172ace511122de +#: e2ab2a0e8ea74bb39c1a9551b335cb61 msgid "Python" msgstr "" #: ../development/specifications.rst:110 -#: 3a757539fafc4e3aa92dbdec5227a2df +#: 87708af531fc4265a4221079fa936a2c msgid "10k" msgstr "" @@ -2809,34 +2814,34 @@ msgstr "" #: ../development/specifications.rst:126 #: ../development/specifications.rst:130 #: ../development/specifications.rst:132 -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 94a1a61f502a42569788cfe93ad6bcf7 -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d -#: 0baee04e46584b46ab2b5bd83dea4c0d +#: a57dfb6ec28747e7b0c22d5350a438f6 +#: 7e3f062885a04d51bd3d990d0f12b3c2 +#: 7d4be1af719440a394a3c1db62aa2f57 +#: 8063e8846e4b43bd986948c13850e137 +#: 8286477f5979436697efd5449d716d5f +#: f37761c3350c46e3be462ed8d0ca2e1e +#: e19f121e83dc41b28a0d5327d4a41286 +#: 7f3f1182bd8042f688e05e50d93fa2c9 +#: dd13ab9d853841f8949c74f2ed9e6480 +#: 0070fe7c812341df9dc54a2131baa9a7 +#: aed906e90e9e4e2c97fc4879dbada5db +#: 8081047a12364457b6c2961c72761759 +#: cfb3090585a84c4486cd07855168bfd2 +#: fd1891815a1344c0a6bac195dea94853 +#: b025e52c9ab64fa1a6f08154653574f0 +#: b69c1d1477034615a2a974f68873f5f2 +#: 990657b9343d4f12b279bd27e0ee2078 +#: 572f6127a926431cbed73c7fcb29a41a msgid "❌" msgstr "" #: ../development/specifications.rst:110 -#: c3172c68b79b46e1ac155f9af8f8729f +#: 4deaec7283d04195bb4b5ce830423c17 msgid "🟠" msgstr "" #: ../development/specifications.rst:112 -#: 41d7747dc9384c6b908b8394168b5b5a +#: ef8ef0ca3a3e41d89ca0d204cf9575ef msgid "`Auth0`_" msgstr "" @@ -2844,206 +2849,206 @@ msgstr "" #: ../development/specifications.rst:122 #: ../development/specifications.rst:124 #: ../development/specifications.rst:132 -#: 8f85eeab9d6945af894c55e2a4aa0b9b -#: 8f85eeab9d6945af894c55e2a4aa0b9b -#: 8f85eeab9d6945af894c55e2a4aa0b9b -#: 8f85eeab9d6945af894c55e2a4aa0b9b -#: 8f85eeab9d6945af894c55e2a4aa0b9b -#: 8f85eeab9d6945af894c55e2a4aa0b9b -#: 8f85eeab9d6945af894c55e2a4aa0b9b -#: 8f85eeab9d6945af894c55e2a4aa0b9b -#: 8f85eeab9d6945af894c55e2a4aa0b9b +#: 1ec8da617dc74ff48cc221502b18cb5f +#: 55ff3b92c3614bc39efd55d219010756 +#: 7c8ef00509294715b264887ecdba0d35 +#: c2bbeca5ac0541109fbfb688ce50219c +#: 621c54fa39e74dec875e6141a490d52d +#: 01e2de36a736422bbb195cafe4d932b5 +#: 69ff3ec3345847089a98e5660b75c27b +#: c764dfbb678342618ca6ba085ce34bff +#: 6196220072c04e4680c81a3da830f32c msgid "❔" msgstr "" #: ../development/specifications.rst:114 -#: 47ff7b1213464f85b246c4282f3af933 +#: a06e90a200c142329aab42c417145475 msgid "`Authelia`_" msgstr "" #: ../development/specifications.rst:114 #: ../development/specifications.rst:118 #: ../development/specifications.rst:126 -#: 5db56fd3e64948f5a108d2f74f7070b4 -#: 5db56fd3e64948f5a108d2f74f7070b4 -#: 5db56fd3e64948f5a108d2f74f7070b4 +#: afc0d499c6624f029bf984a2b660a06f +#: 147dfdd1635f4d37a961194619b1b761 +#: c9febc2d19ec455f9377f9a83cb24686 msgid "Go" msgstr "" #: ../development/specifications.rst:114 #: ../development/specifications.rst:126 -#: 741e97755b8c4478b7e19ba006898401 -#: 741e97755b8c4478b7e19ba006898401 +#: 38acc1bf34554da2ac15381b4ae4bcbf +#: 8fa0178c68534ff0bcf109e0713cf937 msgid "50k" msgstr "" #: ../development/specifications.rst:116 -#: 7fb71b70103e40eeb178e1281ea81de3 +#: 3cc6d108c87045fbbf9a63da618a9e6e msgid "`Authentic2`_" msgstr "" #: ../development/specifications.rst:116 -#: cb26c38797d9416fafe5d1a1b5c5b03b +#: a0ffc4dc899d49b08f8b32146c8a4a43 msgid "65k" msgstr "" #: ../development/specifications.rst:118 -#: 6f7fc7bbb2694f09a12393a74ffc8013 +#: 1105db265e8f46369b7ddb743e1f7e9b msgid "`Authentik`_" msgstr "" #: ../development/specifications.rst:118 -#: bb964534c0704925b6d856bd54af7c7f +#: 83b25cffb0da4a24a3b2a402d484524e msgid "55k" msgstr "" #: ../development/specifications.rst:120 -#: 4604cb0778044b63807b2be23ced893c +#: 248eb430ee704fc3a24e022cfb5eee14 msgid "`CAS`_" msgstr "" #: ../development/specifications.rst:120 #: ../development/specifications.rst:124 #: ../development/specifications.rst:128 -#: aa3618e441ac413e83acdfe56631d15a -#: aa3618e441ac413e83acdfe56631d15a -#: aa3618e441ac413e83acdfe56631d15a +#: a8b79f9ecab5469a9b80cc7e909609f6 +#: 9273ae9f8bb240dcb07cad9ca0bc19d2 +#: 7aca0c51a5bd45509421444dc8e21b00 msgid "Java" msgstr "" #: ../development/specifications.rst:120 -#: c316893b4f00454a8c5745071e0888b1 +#: 679056ff38cb4ba4b09d21fbbb583fcb msgid "360k" msgstr "" #: ../development/specifications.rst:122 -#: c8a158afb8d841209c20b9ef42e563cb +#: 5a7602cb44b545679f6f464b0c967659 msgid "`Connect2id`_" msgstr "" #: ../development/specifications.rst:124 -#: a264cd68201c442faf08474397c550aa +#: 07e7c1d67f2245e4b1a36a6ef061721a msgid "`Gluu`_" msgstr "" #: ../development/specifications.rst:126 -#: e54b53bfeafd4764b01095c1cd0077b7 +#: a8a9b571aedd4fc0bdb545fa04a09c35 msgid "`Hydra`_" msgstr "" #: ../development/specifications.rst:128 -#: 87594578370246d494ef5e63196a3a92 +#: f354d55bcfa445269d2f873e3cad72be msgid "`Keycloak`_" msgstr "" #: ../development/specifications.rst:128 -#: d6304d1f41714ad5af15edb6febbfbc5 +#: ae7e82db3a9f458f96b0d07be7f9bc60 msgid "600k" msgstr "" #: ../development/specifications.rst:130 -#: 2efe7957b848447dacfecb082a95c438 +#: 0cbcdf7a4748404eb674088a9b3b26e5 msgid "`LemonLDAP`_" msgstr "" #: ../development/specifications.rst:130 -#: cdd25b565e5d4de4b4202f82f4407843 +#: a9e79acd7894437c9b290df6b4b630db msgid "Perl" msgstr "" #: ../development/specifications.rst:130 -#: 51b2d4fcc1fc43d2a692826a2b2c62d1 +#: a9c50fc2632c4efcbd0a7107c93c6f44 msgid "130k" msgstr "" #: ../development/specifications.rst:132 -#: 4c2a5d27487345f7bc3c1bbd0c897c47 +#: 7b0328f64db64f4ab4712b67ea0793fe msgid "`Okta`_" msgstr "" #: ../features.rst:11 -#: 5dd070084abb440ebf87c36df501f197 +#: 83992b326f024b0f85077ae68cb0587b msgid "Here are the different features that Canaille provides. You can enable any of those features with the :doc:`configuration ` to fit any :doc:`use cases ` you may meet. Check our :ref:`roadmap ` to see what is coming next." msgstr "" #: ../features.rst:15 -#: 83eef1f1157b4d37b4627438618f31ab +#: e84eca88d1f945c0b75f5cb7660e147e msgid "Users can interact with Canaille through its :ref:`web interface ` and administrators can also use its :ref:`command line interface `. Canaille can handle data stored in different :ref:`database backends `." msgstr "" #: ../features.rst:19 -#: 73c7e363c37147fc825deea06ee26975 +#: 54195631200f46668dd0774d8fb1fe7c msgid "User and group management" msgstr "" #: ../features.rst:21 -#: e19b2b99a8544219b61bbedc1229e77c +#: 93495d3a171a49898396742c01e8c0f6 msgid "Canaille web interface can be used either in :doc:`production environments ` or locally for development purposes." msgstr "" #: ../features.rst:26 #: ../index.rst:27 -#: 759b0714ba194bc5a5d043350cb4cd14 -#: dd79223676e0465293d1499d8929fa26 +#: 747fc6d9c0ff4afe99f5e8c636fc0630 +#: 281a61a509c14bd785713a9e32ff21d3 msgid "Profile management" msgstr "" #: ../features.rst:28 #: ../features.rst:238 -#: 53e5483c51ae4df28138ae990c16de07 -#: 0a36f2261b84450b98131ff740f7ceb9 +#: 7cd208e6778b4e3ca435fcaa282b6656 +#: 3845e2e3bc7048fb8e477f3964ea4286 msgid "Profile" msgstr "" #: ../features.rst:33 -#: 864adfa77693422cad803b08d9187a5e +#: bd8bf9442ea64aedaa39bad6408300b6 msgid "Canaille provides an interface to manage user profiles." msgstr "" #: ../features.rst:35 -#: 505ce537381249ec82445d38a4e093df +#: 735d8c451c114d188fdfda137bb0b3da msgid "The exact list of displayed fields, and whether they are :attr:`writable ` or :attr:`read-only ` depends on the user :class:`Access Control List settings (ACL) `." msgstr "" #: ../features.rst:37 -#: 625c7cea8a034a7ba263a71ce0587a26 +#: d85f58ac8b8b4d0c809d18cd01308676 msgid "Depending on their ACL :class:`permissions `, users can either be allowed to edit their own profile, edit any user profile, or do nothing at all." msgstr "" #: ../features.rst:42 -#: 530dac22b587444cbd5de9ba2d7a3a90 +#: b0204857451143228a47d4bd0d207425 msgid "Email confirmation" msgstr "" #: ../features.rst:44 -#: 2c3acd412bb944ab81ff2631784bff71 +#: 6357bf8141804e8ca3c7cc4688147c79 msgid "If the :attr:`email confirmation feature ` is enabled, any modification or addition of a profile email will send a confirmation mail to the new address. The mail will contain a link that users will need to click on to confirm their email address." msgstr "" #: ../features.rst:46 -#: 8d597149b59e45f896eff2baa716fc20 +#: 2b8cac7a02c241db86c0e1a8977f539f msgid "Users with :attr:`user management permission ` can set user emails without confirmation though." msgstr "" #: ../features.rst:51 -#: 4a6be5a6b71a4a5ea35d7c4a41630e35 +#: 5ca54af9769c4d66b1f073cf5dae0f8c msgid "Group management" msgstr "" #: ../features.rst:53 #: ../features.rst:140 -#: 4824338c1fbf4fdd8c2e01534219ee98 -#: 3d8b9fc086e945d890bf9b3e01c82984 +#: 859672dbd62e44f68edf373e3db0f25f +#: 7b785345dfe54831abb635f53566cbb4 msgid "Group edition" msgstr "" #: ../features.rst:58 -#: afc7e192d41148e0a2ef8ec6f8944729 +#: 3c406b087545469ba8233b792ccf4117 msgid "In a similar fashion than :ref:`profile management ` Canaille provides an interface to manage user groups." msgstr "" #: ../features.rst:60 -#: b83c6d0af7fe45228496bb2c594cf88c +#: f3aa5eee77bb4c878ea3117ef50906b1 msgid "The group management is quite simple at the moment and consists in a group name and description, and the list of its members. Group membership can be use as :attr:`ACL Filter ` to define user permissions." msgstr "" @@ -3052,752 +3057,757 @@ msgstr "" #: ../features.rst:149 #: ../tutorial/deployment.rst:13 #: ../tutorial/provisioning.rst:9 -#: 6fdf0a969ccb49e1bf9bfc28f4df9169 -#: 4065a0b70a1444058df3bb16f0abc445 -#: bc0be7a805e04b5f91b89db28d7dffae -#: 7ab21494d11e4287acffeb771f8f5244 -#: 9df6890219304d7dbb04c9b7817147f5 +#: be163aa553874c63a119ca1e531e4926 +#: bbcda8b5363746de842d3fd4565df358 +#: 61f8b293eb1840df8775b9a46977e68a +#: 7d063927a16248008786ce8fff0c0f4c +#: ef513869dfee4036992c4c33ae89cb19 msgid "Todo" msgstr "" #: ../features.rst:64 -#: 60eafd84b6934482b1ec0831e6aaa3b7 +#: 19616dc65f50458da4280f5f0a763790 msgid "At the moment adding an user to a group can only be achieved by the user settings page, but we are :issue:`working to improve this <192>`." msgstr "" #: ../features.rst:66 -#: 6440e19e527d4d5f8abc44d99c8a3dba +#: 1f22335eacb94aa8a46554367a8edb65 msgid "Group management can be enable with a :attr:`dedicated user permission `." msgstr "" #: ../features.rst:69 -#: 2382414ec97641a4925e741a26ae3148 +#: 206521f4720945159a79dcd353d89a63 msgid "Due to limitations in the :ref:`LDAP backend `, groups must have at least one member. Thus it is not possible to remove the last user of a group without removing the group." msgstr "" #: ../features.rst:75 #: ../index.rst:34 -#: b136f97d836d4c8dbb63cd671ceebe4e -#: 76d8725ced9e421f98de5fb1e1ee01a2 +#: df0f45720dd54482a606b7384b0af773 +#: b96f3e623fbc42cc886ade8fce98b625 msgid "User authentication" msgstr "" #: ../features.rst:77 -#: 022b43e4ff7f4932aa151eaade78aeb6 +#: 009db2e14df8413095b0d9f3150e4b5e msgid "Unless their account is :ref:`locked `, users can authenticate with a login and a password." msgstr "" #: ../features.rst:81 -#: 1a8cb7dc227a452b81768be3758a8fb4 +#: ad32a04ddd764be6bc4f07f835189dc1 msgid "For security reasons, it won't be told to users if they try to sign in with an unexisting logging, unless explicitly :attr:`set in the configuration `." msgstr "" #: ../features.rst:83 -#: 778349cb3c344689bd8cc06184005e10 +#: 160e331c61874a97aa78b514e80863ef msgid ":ref:`LDAP backend ` users can define which :class:`user field ` should be used as the login (such as :attr:`~canaille.core.models.User.user_name` or :attr:`~canaille.core.models.User.emails`) using a :attr:`configuration parameter `, but other backends can only login using :attr:`~canaille.core.models.User.user_name`. We are :issue:`working to improve this <196>`." msgstr "" #: ../features.rst:88 -#: aa467ae3118543ed94401a8ca23776f1 +#: eac565374d1d43499d808cb66e3db17b msgid "User registration" msgstr "" #: ../features.rst:90 -#: c81ba8ba520c4d8bb6c8475fe023404b +#: b2e46804265c43df8ee0242a495608c4 msgid "Users can create accounts on Canaille if the :attr:`registration feature ` is enabled. They will be able to fill a registration form with the fields detailed in the default :class:`ACL settings `." msgstr "" #: ../features.rst:92 -#: c1f2442a948d414e9b9983d79aa91ae4 +#: beef77105d71424a81a7608596a70ddc msgid "If :attr:`email confirmation ` is also enabled, users will be sent a confirmation link to their email address, on which they will need to click in order to finalize their registration." msgstr "" #: ../features.rst:97 #: ../features.rst:99 -#: 3d200c871e19420db3ce1885f7414a3c -#: 7bf61d1ad01240f7b1ed2db4ab0fdf77 +#: 16180dbd28a247d0b58017290d410e1c +#: 27d275b7f1524eae9a3d0bb28d27d734 msgid "User invitation" msgstr "" #: ../features.rst:104 -#: 134f042cb892434e922c01d62222ed54 +#: 9c5e83d641624935a643163f6194f1b3 msgid "If a :class:`mail server ` is configured, users with :attr:`user management permission ` can create an invitation link for one user." msgstr "" #: ../features.rst:106 -#: e054dbb49f644364a6aaadcb2f5a0024 +#: 547e556908d6485e91d11299f6d7731c msgid "The link goes to a registration form, even if regular :ref:`user registration ` is disabled." msgstr "" #: ../features.rst:108 -#: 536cbb5eff1444dda4ac45998d356fe6 +#: c5f67c0c35744d06a46ff62581a68be5 msgid "It can be automatically sent by email to the new user." msgstr "" #: ../features.rst:113 -#: c24731829c1949aeb3f54f0167ed8b37 +#: 87dc5cf8a5644adba540c43626b85116 msgid "Account locking" msgstr "" #: ../features.rst:115 -#: 48e7bf2282b5487f9437be3863edc5ed +#: e06722f64e4d4b51860928e63423b9f7 msgid "If Canaille is plugged to a :ref:`backend ` that supports it, user accounts can be locked by users with :attr:`user management permission `. The lock date can be set instantly or at a given date in the future." msgstr "" #: ../features.rst:118 -#: 31e7e6b90652414ab1b450f98ddb7d53 +#: 8b1b5e618c3943a989c0d9b7958890ce msgid "At the moment a user account is locked:" msgstr "" #: ../features.rst:120 -#: 6be8caf7464643e99cb2614ce0138045 +#: 9df53f0bc1e14517b207979063e506db msgid "their open sessions will be closed;" msgstr "" #: ../features.rst:121 -#: 93da628150674abe85e3ff8f27e83c0a +#: 76e0e046a3af405a94194bad849adca5 msgid "they won't be able to sign in again;" msgstr "" #: ../features.rst:122 -#: e5196d576eb445d9aa83989d6f241c42 +#: 82e4c98b176c4d2bba2f7ce96c2322d9 msgid "no new OIDC token will be issued;" msgstr "" #: ../features.rst:124 -#: c784a99a157b46028eb5c3543da73e38 +#: 5f9b8faf05a246bea2a23417d83ec83d msgid "User accounts must be manually unlocked by an administrator for the users to regain access to those actions." msgstr "" #: ../features.rst:129 -#: da2f0b388508475cbb3fd080de1ff44c +#: 19999c792f774669959a562731f2ae45 msgid "Account deletion" msgstr "" #: ../features.rst:131 -#: 5bc09c4f89764a1a950c44dc255b98d2 +#: 7009976bf70348c5a99681fe82017a2f msgid "Users with the :attr:`account deletion permission ` are allowed to delete their own account." msgstr "" #: ../features.rst:133 -#: 85f4ea778e8f45f7841ddf39f1bc8b41 +#: 2a140bd932e84750ac0b767017723fb2 msgid "Users that also have the :attr:`user management permission ` are also allowed to delete other users accounts." msgstr "" #: ../features.rst:138 -#: 86a66e197de94dcbb90d559730b89318 +#: 93cd6c928328482a98f4ed4bf3868fb5 msgid "Password recovery" msgstr "" #: ../features.rst:145 -#: 6693db5e96354da69ed660a259c109ce +#: 92d716598ce844bf80049d7c7720d73c msgid "If a :class:`mail server ` is configured and the :attr:`password recovery feature ` is enabled, then users can ask for a password reset email if they cannot remember their password." msgstr "" #: ../features.rst:147 -#: 2f356fab771549f9bdca5fa4f3ca2e5e +#: 662c873cc0ea45dc9535c075a2f97203 msgid "The email will be sent to the email addresses filled in their profile, and will contain a link that will allow them to choose a new password. ." msgstr "" #: ../features.rst:151 -#: a603b57c4fc54e67ba04056b0037ae8e +#: f13a4bafd63a4087a5750e4c6160142f msgid "Check that password recovery is disabled on locked accounts." msgstr "" #: ../features.rst:156 -#: 1bdb193d14a444a2a823f0dcef03e8ad +#: fe3e4ba9348341808cde4c4bc5c39767 msgid "Password reset" msgstr "" #: ../features.rst:158 -#: 077ee41f3059484dad80b08733aae520 +#: f4fe4f29702f42b0974ca95307d66d4f msgid "If a :class:`mail server ` is configured, :attr:`user management permission ` can send password reset mails to users. The mails contains a link that allow users to choose a new password without having to retrieve the old one." msgstr "" #: ../features.rst:164 -#: c4e7b07761674e608a0e2bfdd50a659a +#: 8efff1070020462f95e1fe41de00136d msgid "Password initialization" msgstr "" #: ../features.rst:166 -#: 5043df71775449a78e19ce0296f8d9ee +#: 9b4bda837bea410692718890b76877c8 msgid "User :attr:`passwords ` are optional. If a :class:`mail server ` is configured, when users with no password attempt to sign in, they are invited to click a button that will send them a password initialization mail. The mail contains a link that leads to a form that allows users to choose a password." msgstr "" #: ../features.rst:173 -#: 412b386c0c794b5d8c71ea7b51278da8 +#: 5319e975d4fb4701b91648542a2d8828 msgid "Password compromission check" msgstr "" #: ../features.rst:175 -#: 35e11da6bbdf4e2da05a3a66c24e1dbe +#: 6808b4633ea2473480a7de609cc74213 msgid "If :attr:`password compromission check feature ` is enabled, Canaille will check for password compromise on HIBP (https://haveibeenpwned.com/) every time a new password is register. You will need to set an :attr:`admin email `." msgstr "" #: ../features.rst:180 -#: 478b4f7b443f4f728085a2ea686b0248 +#: 71fd2622c9734be487e462b06fd8e6bf msgid "Multi-factor authentication" msgstr "" #: ../features.rst:182 -#: 2e2c9ae9e2e24bce942de98d12d7fb33 +#: 707f699e7d374657ac3b29d3e5c65eba msgid "If the :attr:`one-time password feature ` is set, then users will need to authenticate themselves using a one-time password via an authenticator app. Two options are supported : \"TOTP\" for time one-time password, and \"HOTP\" for HMAC-based one-time password. In case of lost token, TOTP/HOTP authentication can be reset by users with :attr:`user management permission `. If a :class:`mail server ` is configured and the :attr:`email one-time password feature ` is enabled, then users will need to authenticate themselves via a one-time password sent to their primary email address. If a :class:`smpp server ` is configured and the :attr:`sms one-time password feature ` is enabled, then users will need to authenticate themselves via a one-time password sent to their primary phone number." msgstr "" #: ../features.rst:191 -#: 39adf64b80444b27bb6f9f11747a6960 +#: 92cf33b469d640cbaa67400714a54221 msgid "Intruder lockout" msgstr "" #: ../features.rst:193 -#: e884c68544f2480db394e53aeb54a811 +#: 2122ba68652f47df83d6863d31d4f169 msgid "If the :attr:`intruder lockout feature ` is enabled, then users will have to wait for an increasingly long time between each failed login attempt." msgstr "" #: ../features.rst:196 -#: cbba3fccd9f84230b6eb0774cfd7e109 +#: 8278c8d375764d8b81559827f6ec5c96 msgid "Web interface" msgstr "" #: ../features.rst:201 -#: fab0081b9bd4460098de6df7d8c317b5 +#: 30a7dce9d05d46bba5697e75b939ebd7 msgid "Internationalization" msgstr "" #: ../features.rst:203 -#: 46cf7a3a3e9047439aa7fa6654b07921 +#: b76e44066c3e436c8d850b9bc8552c40 msgid "Translation state" msgstr "" #: ../features.rst:208 -#: 0a5afedc31de47a28d0bf7842a8558cd +#: e2fdac042d5b4d7fb37fdebf1f54393e msgid "Canaile will display in your :attr:`preferred language ` if available, or your browser language if available (and if it is not you can :ref:`help us with the translation `). If you prefer, you can also :attr:`force a language ` for every users." msgstr "" #: ../features.rst:214 -#: 2caebf718cab47029a83bb91253e36e5 +#: a8d7dd0ef8a148079d86252bfdb24e8d msgid "Lightweight" msgstr "" #: ../features.rst:216 -#: e3cbad3b2af0422287a92a4094559d8b +#: 62e134fecda54ecebd2ed99cfad21431 msgid "The web interface is lightweight, so everything should load quickly. There is a few Javascript here and there to smooth the experience, but no Javascript at all is needed to use Canaille." msgstr "" #: ../features.rst:220 -#: a7db848b637a46b1874f04fb542009e2 +#: 98e5119178fe49fc865631a7f0f79683 msgid "Customizable" msgstr "" #: ../features.rst:222 -#: 0c829a128889493fbc97247a60390954 +#: 0289e553e0c141c5bf0584f63db93a0b msgid "The default theme should be good enough for most usages. It has a dark theme, display well on mobile, and let you choose a :attr:`logo ` and a :attr:`favicon `." msgstr "" #: ../features.rst:225 -#: 3a69d40c024744af967a1408c054aca0 +#: b12a1b77895c45c39c69711771f45cfc msgid "If you need more you can also use a :attr:`custom theme `." msgstr "" #: ../features.rst:232 -#: 003c4e8eee334a9d89486e2c0ae5d106 +#: 9093d3d195d14410aa63d5fb011294d9 msgid "Canaille implements a :ref:`subset` of the OAuth2/OpenID Connect specifications . This allows to provide :abbr:`SSO (Single Sign-On)` and :abbr:`SLO (Single Log-On)` to applications plugged to Canaille." msgstr "" #: ../features.rst:236 -#: 51e9a6e1ddb04b99a6a73135fc8728e7 +#: 8d78707d882c4ad7bd911a12f77357bf msgid "Consent management" msgstr "" #: ../features.rst:244 -#: a613e3d10f1243f3bc5d4e796b278c89 +#: 2f4773e2479e40b5a5b8f85b99d07d2b msgid "Users can give their consent to application requesting access to their personal information, and then revoke those consent at their will." msgstr "" #: ../features.rst:248 -#: 115bec7ea8944f6ab98641d9bd2540ec +#: cb6b8f0c1c3f4fba9fa0271cfde526f8 msgid "Application management" msgstr "" #: ../features.rst:250 -#: 526d36374a8747d6ad6280379bcf664c +#: 7a6c934205fd409cb24d57d8abb44f3b msgid "Users with the right :attr:`permission ` can manager OIDC clients through the web interface." msgstr "" #: ../features.rst:252 -#: 79f0217902dc4b2ca73128ff6c16e7b5 +#: 58ff42230b714f6887b089d27d4cbb1e msgid "In some cases, it might be useful to avoid the consent page for some trusted applications, so clients can be pre-consented." msgstr "" #: ../features.rst:255 -#: d1f7f85df6404afe91d29e4dee44be1d +#: d3d907c775ac40e7804b9d807393fd24 msgid "Discovery" msgstr "" #: ../features.rst:257 -#: 8b306f1c76664574a0f3d85805a46d87 +#: 3cbdbbb7efdf497390e96311f23ba98c msgid "Canaille implements the :doc:`Discovery specifications ` so most of the applications plugged to Canaille can auto-configure themselves." msgstr "" #: ../features.rst:260 -#: d5a2f0c4fa2f4363b5e87c4243376aaa +#: a898023be2a341718e270e67167d0779 msgid "Dynamic Client Registration" msgstr "" #: ../features.rst:262 -#: 800aec57df82487f80fc7da359dc5c34 +#: ad31ff1cd9644ab683677d17732722b8 msgid "Canaille implements the :doc:`Dynamic Client Registration specifications `, so when the :attr:`feature is enabled `, clients can register themselves on Canaille without an administrator intervention." msgstr "" #: ../features.rst:265 -#: 9cae9e0af58f499dac34354e9c12785d +#: 203b8da2c05346b988887b1fbcd7eb33 msgid "System administration" msgstr "" #: ../features.rst:270 #: ../references/commands.rst:2 -#: 9b5fcf18f6214856ae377f83005f8309 -#: e2a97a5dfb5844f9a74c78b1a28ed23f +#: 9977d7c7ec444216ad6aae3ab99637f7 +#: 389875cae59843dc8c837dd6aaaae752 msgid "Command Line Interface" msgstr "" #: ../features.rst:272 -#: 98ef5f39d74944668dfff8b63d9d6199 +#: b8b20bc2fcf64a8d92111dcddbec0d84 msgid "Canaille comes with a :abbr:`CLI (Command Line Interface)` to help administrators in hosting and management." msgstr "" #: ../features.rst:274 -#: 9a30112ff2eb47c69263e73aa3c4ee15 +#: d2b7aaf441474ac2ad1d8cc3caf1085f msgid "There are tools to :ref:`check your configuration ` or to :ref:`install missing parts `. You can use the CLI to :ref:`create `, :ref:`read `, :ref:`update ` and :ref:`delete ` models such as :class:`users `, :class:`groups ` or :class:`OIDC clients `." msgstr "" #: ../features.rst:277 -#: 02d13c90aa8f41f5b1007cd67fcea510 +#: 3a7b780ed2aa4a4c809b0919ddb14f6a msgid "There are also tools to :ref:`fill your database ` with random objects, for tests purpose for instance." msgstr "" #: ../features.rst:282 #: ../tutorial/databases.rst:2 -#: 0225297b7d884971a952f5ec904a15ac -#: cf1fc0e0abb74b3ca66c1e92a5e773e9 +#: 3da864e6a4114405bf250d130fde7a25 +#: f0012cb6a1764925a997dd5dc87dd7d2 msgid "Databases" msgstr "" #: ../features.rst:284 -#: 1a7af5dc07fa4f6c9231664737ee46a7 +#: 9406baff55794744bdd337ba3d2f4a3d msgid "Canaille can handle data from the most :ref:`common SQL databases ` such as PostgreSQL, MariaDB or SQLite, as well as :ref:`OpenLDAP `. It also comes with a no-dependency :ref:`in-memory database ` that can be used in unit tests suites." msgstr "" #: ../features.rst:290 -#: a6a6a7334af54051aebed82d83027ea8 +#: 01c71f0086e048ecbd75c8adad975135 msgid "Logging" msgstr "" #: ../features.rst:292 -#: 9bc7705bd378459abf2f813381aa58a6 +#: c1c30fa9a81741bfb7da053d314a7767 msgid "Canaille writes :attr:`logs ` for every important event happening, to help administrators understand what is going on and debug funky situations." msgstr "" #: ../features.rst:294 -#: 2aeb5161276a4f048c40a7256c3d7f0e +#: 04974cc2a4704184a19298b064ab6c2e msgid "The following security events are logged with the log level \"security\" for easy retrieval :" msgstr "" #: ../features.rst:296 -#: ed4be0b57afe4ce9976c45f03c249444 +#: 769a0d2fbc474a72ae85d332cd09ce09 msgid "Authentication attempt" msgstr "" #: ../features.rst:297 -#: 452456f9907e4bbd89439903c2fc9ebc +#: 94e144420f1b4f2992067040bf4a5582 msgid "Password update" msgstr "" #: ../features.rst:298 -#: 9ccb4ef2a139403c85223576eb87a182 +#: 38f087163a9541c29f06820437135d5c msgid "Email update" msgstr "" #: ../features.rst:299 -#: bd0936deb7994f8fb59f2f0a47115edc +#: 4a9bbfa8dd4947f28bab05cf76fbb9f8 msgid "Forgotten password mail sent to user" msgstr "" #: ../features.rst:300 -#: bd0936deb7994f8fb59f2f0a47115edc +#: 38d9fce3533c4f1e94cb34743ea4fb68 msgid "One-time password mail sent to user" msgstr "" #: ../features.rst:301 -#: 478b4f7b443f4f728085a2ea686b0248 +#: 461dfd630cb34a6c833d803dbc6fde75 msgid "Multi-factor authentication reset" msgstr "" #: ../features.rst:302 -#: 02079fe76d2041aaba48a6b2079630f1 +#: 73ad0b101d244196bb1bce7c516078a8 msgid "Token emission" msgstr "" #: ../features.rst:303 -#: 814519684d8c47a5b0b5ae6eaa9aa66e +#: 42d20b5c805c45c289c4e76202ca10ea msgid "Token refresh" msgstr "" #: ../features.rst:304 -#: 4489f99b64dd40248f28453fb8b4b0df +#: 62b5a24c52434109abbef7d96a6566da msgid "Token revokation" msgstr "" #: ../features.rst:305 -#: 99abcc04f85649c1b184e22e67b36f18 +#: 9c696c7b26174b6bacf9a65d84f6ba8e msgid "New consent given for client application" msgstr "" #: ../features.rst:306 -#: c64802d623a74d678c4aca29f82c39d7 +#: f036ee77fd30459f8b17970f43d3faaa msgid "Consent revokation" msgstr "" #: ../features.rst:311 -#: f9d92f5f76a745ee97ea36afc853c516 +#: 50c4cb979d764e9fad538a0c95490708 msgid "Development and testing tool" msgstr "" #: ../features.rst:316 -#: 9c0500515a5847c2bec5b1bb743f42fc +#: 28171f4aabbe4c209ba0d928d7fceb51 msgid "Unit-testing tool" msgstr "" #: ../features.rst:318 -#: b1dc62a0c2024ff1bd6682408301766a +#: b4efc9d6589d47f3816505275ce27bed msgid "Thanks to its lightweight :ref:`in-memory database ` and its curated :ref:`dependency list `, Canaille can be used in the unit test suite of your application, so you can check how it behaves against a real world OpenID Connect server. If you work with python you might want to check :doc:`pytest-iam:index`." msgstr "" #: ../features.rst:321 -#: ff4f45059bc2485eb5fa0145f5f01f9a +#: fb449cf78c2c4a80bf32a5417bebcade msgid "Development server" msgstr "" #: ../features.rst:323 -#: a430530dc1ac42b680a9024e920dad7d +#: 2a86b8ed7f734e8992d7449f3b6b9880 msgid "It can also being launched in your development environment, if you find that launching a Keycloak in a Docker container is too heavy for your little web application." msgstr "" #: ../features.rst:328 -#: 3594d882079a4c89b28f0d9b25b5a647 +#: 0adf57513787473680b4af6d3fad5100 msgid "Continuous Integration tools" msgstr "" #: ../features.rst:330 -#: f7bb141a215c46df915ce63b47f13cdb +#: e18a26ec34c740dcbab5a69449464f51 msgid "It also fits well in continuous integration scenarios. Thanks to its :ref:`CLI `, you can prepare data in Canaille, let your application interact with it, and then check the side effects." msgstr "" #: ../features.rst:333 -#: beb39ccb89e040118104ba0c0f41eb71 +#: 2603a014b9f74261b4e108f98b2d8e05 msgid "Roadmap" msgstr "" #: ../features.rst:336 -#: 4fee3c311fe844bbb345bd5b562844ad +#: 843a62acc9414741ace4ed40372359fe msgid "Bêta version" msgstr "" #: ../features.rst:338 -#: f699343ae7fe4f12a9d12f4692c22827 +#: 5af3d35132f44adab7d0a442d742db59 msgid "To go out of the current Alpha version we want to achieve the following tasks:" msgstr "" #: ../features.rst:340 -#: c8aec1fe7d574a789319e75cc64bd2e7 +#: 7f1b9a153b2a4174b7c70668fdf717b7 msgid ":issue:`Configuration validation using pydantic <138>`" msgstr "" #: ../features.rst:343 -#: 706d590389f54c40ba1b219877946bb5 +#: 317b18e87a674ce5a39f0aef073a5e1c msgid "Stable version" msgstr "" #: ../features.rst:345 -#: 54c0d4cc60054a5ebe7456575b1b70c3 +#: 074aa5b4bbf94a5282c9493291f8bcf7 msgid "Before we push Canaille in stable version we want to achieve the following tasks:" msgstr "" #: ../features.rst:348 -#: 7807e2d92e264bc78fd5b6a3c63beb3a +#: 32e169e1f36441549ddbee882110def8 msgid "Security" msgstr "" #: ../features.rst:350 -#: 577ab46503ee45e89daa8c42938635e5 +#: 542d78c7c5bc4dea80a39a63ce215989 msgid ":issue:`Password hashing configuration <175>`" msgstr "" #: ../features.rst:351 -#: a337cb0aac704dbca90dd70f1d68456d +#: e0ab0dd48216432ea2f3e683b151f7d0 msgid ":issue:`Authentication logging policy <177>`" msgstr "" #: ../features.rst:352 -#: 39adf64b80444b27bb6f9f11747a6960 +#: 1e865664fc1b4c6ea020e5924e36e4f0 msgid ":issue:`Intruder lockout <173>`" msgstr "" #: ../features.rst:353 -#: 3eeac7b1dec04fe9b990864b8810db50 +#: eff48eadd8d546508709110ee4297ccc msgid ":issue:`Password expiry policy <176>`" msgstr "" #: ../features.rst:354 -#: 4ad4707b7d02481ab507ded2d410eb70 +#: b57aa03df49f4bed8674f579ed2be7de msgid ":issue:`Multi-factor authentication: Email <47>`" msgstr "" #: ../features.rst:355 -#: 478b4f7b443f4f728085a2ea686b0248 +#: 7cd9c56ff1ec4fe4844ba21eac411b41 msgid ":issue:`Multi-factor authentication: SMS <47>`" msgstr "" #: ../features.rst:356 -#: fd624a7e3d404428830928ee05ec5348 +#: 5349695bf05a4f9fa1072fe0bb6c4b58 msgid ":issue:`Multi-factor authentication: OTP <47>`" msgstr "" #: ../features.rst:359 -#: a6acbc89a16a4fad8658fb33764830ad +#: 7d5beadbd8184d7eb1fdd52b06f8a0bc msgid "Packaging" msgstr "" #: ../features.rst:361 -#: 575b556539994d1190e50cbfd0133bd4 +#: 90de3f4dabb043a58c125c85126c5c3a msgid ":issue:`Nix package <190>`" msgstr "" #: ../features.rst:362 -#: f8facef108bf4d668509e57200f732bb +#: f86de768f08c4e44bda3b40a54193b1c msgid ":issue:`Docker / OCI package <59>`" msgstr "" #: ../features.rst:365 -#: 92825d26f07c4b718121c2784a9b6b81 +#: 8f0ff63fc2264a2994584ca350cfacb9 msgid "And beyond" msgstr "" #: ../features.rst:367 -#: ac17ddb06c4d400ebc190454535608c2 +#: 18f71a0ecade47288245c41b1fcd4bad msgid ":issue:`OpenID Connect certification <182>`" msgstr "" #: ../features.rst:368 -#: 1b80703b0f434fe6ade3288840b9cf3c +#: d2176d37d72c4b7d8cc90a8374661c98 msgid ":issue:`SCIM support <116>`" msgstr "" #: ../index.rst:15 -#: 2c1f5afe842843a6bbedd65606fde0f5 +#: 3cd93747449e4826a82978400fa0021a msgid "Lightweight Identity and Authorization Management" msgstr "" #: ../index.rst:19 -#: 0fa9dc97ee984c00a9460a07144eba66 +#: e1f076af69624d368f1c12f86cfc965d msgid "**Canaille** is a French word meaning *rascal*. It is roughly pronounced **Can I?**, as in *Can I access your data?* Canaille is a lightweight identity and authorization management software. It aims to be very light, simple to install and simple to maintain. Its main features are :" msgstr "" #: ../index.rst:31 -#: 8b56e6fd5b374afbadf70d3371ad8538 +#: 88bafd653fb4418ea8afaa3cde8baa0b msgid "User profile and groups management, Basic permissions" msgstr "" #: ../index.rst:38 -#: ae2a113a2f63489ebb6a9696df422ed1 +#: 8054216c1dd746c2b1210f5c402cb1f1 msgid "Authentication, registration, email confirmation, \"I forgot my password\" emails" msgstr "" #: ../index.rst:40 -#: c4659885674a4b848e904b352c94b89c +#: 60a03d30d8fe43fbae685b2702612b09 msgid "SSO" msgstr "" #: ../index.rst:44 -#: 3dabf6a8010d4aff943f07dbf6fe52aa +#: 142f93e5c0ad4fb2a486b4aa87f90cef msgid "OpenID Connect identity provider" msgstr "" #: ../index.rst:46 -#: f7caa27d43354246a89db295901976cb +#: 24e2262cc93549c2a6997f62f8f7e38e msgid "Multi-database support" msgstr "" #: ../index.rst:50 -#: 73b988c55cc241eeafe075a55fd037a0 +#: ccf5ab1611aa4893aa498f3cad5f6107 msgid "PostgreSQL, Mariadb and OpenLDAP first-class citizenship" msgstr "" #: ../index.rst:52 -#: 9caead4464284ccca1a59bff67fbec2d +#: 510ac22471fe41ea981c5b6f8b6503db msgid "Customization" msgstr "" #: ../index.rst:56 -#: e2604712b57b4583b53181a9fefcda0e +#: bf2a273bba904d2393eb781cc5e84b84 msgid "Put Canaille at yours colors by choosing a logo or use a custom theme!" msgstr "" #: ../index.rst:58 -#: b168d0612c04400e8b259edb581dc6c7 +#: 1c7791be752c4b288c420a47929998af msgid "Developers friendliness" msgstr "" #: ../index.rst:62 -#: 8b5f849ae22348f19d5d8feca1590032 +#: 9b22b1a84542414d9448bde94c60b8b7 msgid "Canaille can easily fit in your unit tests suite or in your Continuous Integration." msgstr "" #: ../index.rst:66 -#: a4dbd4558bda425cab549061b5952854 +#: 4d0c2675411c4891a1da5945a8d99894 msgid ":doc:`Full feature list ` :doc:`Common use cases `" msgstr "" #: ../references/commands.rst:4 -#: 574cb073f7584f8599a4cc129a337c4a +#: 88c4569acf554105957f705b7f6a9d10 msgid "Canaille provide several commands to help administrator manage their data." msgstr "" #: ../references/commands.rst:6 -#: aa7436e81d0347aca49e76837769f92b +#: e29d45adb32440248cfc56c951ada110 msgid "Generally, some configuration has to be loaded by `Canaille`. This can be achieved by :ref:`configuration loading method` available, but most of the time a ``CONFIG`` environment variable is used. For the sake of readability, it is omitted in the following examples." msgstr "" #: ../../canaille check:1 -#: d3880ac07b8641fbb96a657384193437 +#: ecbba95cc3894bb5922eb1c5d9aab9db msgid "Test the configuration file." msgstr "" #: ../../canaille check:1 -#: 8edd9caa824f4c3aa3298a3e0b28a418 +#: bb7356ed147f4b589cd06e1ba1aa2a31 msgid "Attempt to reach the database and the SMTP server with the provided credentials." msgstr "" #: ../../canaille clean:1 -#: 15fc7dadf416460fb034401cb2298ddc +#: e54877b8950d4ca586a827146ddc381b msgid "Remove expired tokens and authorization codes." msgstr "" +#: ../../canaille dump:1 +#: 328ab9586ff247b599244e1ed1ec4ee1 +msgid "Dump all the available models." +msgstr "" + #: ../../canaille install:1 -#: f58f2f270c9642208409eab2a078aa10 +#: ecf525c0e8d24ed887d09a8bce106b90 msgid "Installs canaille elements from the configuration." msgstr "" #: ../../canaille install:1 -#: ee828128d3684eaea85f63a4d8efb295 +#: d060c2fbfe874a949db94e78b9dd86a1 msgid "For instance, depending on the configuration, this can generate OIDC keys or install LDAP schemas." msgstr "" #: ../../canaille populate:1 -#: df2355b792904bae8c2adfdc44e3abc1 +#: 9e2e5a1d5c724de6907206c8713565b4 msgid "Populate the database with generated random data." msgstr "" #: ../references/commands.rst:0 -#: 25c273b3659241e5a58c4ccfc4d1aa62 -#: 23e595a7ef3e40738c72964260d647d4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: f7857604a6af425d92b5f49a3a571724 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: 979aef4626814c74bd3208394714d692 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 -#: b9df5380bb904ef3b2c158886514b1f4 +#: 0be3fdcbc5e8477eb729119840fc94db +#: 73af358a71184c90a446a0aec6a49490 +#: a72c738435cf4a199cc28f9e168d61b4 +#: 612db4d6c17246c4981bfc66b03e4c27 +#: f82b2b0573fb4be1bce67c535184ce1b +#: c2646781921c4d9daa443b1c74c4e5fd +#: 497abf548fb54afaa71c4b751530be5d +#: 16a8dfcef5164d229c53bae4fa67074b +#: 0e5017c92c494defaba493327d2d6ec7 +#: bb84806cf1c845b0baa936309a8215a8 +#: 79f94d26480e45f9a8a1d2e8c3e1f455 +#: 452b4f3fb3e54255aec3d1dcac05cffd +#: ac24f0ea4e174d5ebb6596ec5f61176a +#: 1d054222a5a749a6bd071daa0e7f95f1 +#: 30ae5e08dac14ce7920d1211d29a4d36 +#: d5b54dc8b2e74c668a904c368289f197 +#: 57fb21a4ea444457be0c8f905443be56 +#: 177c1bf012b94b2bbfeea4a6568030b2 +#: 5c5a57ae32c44aab8a068eea26fa5683 +#: b44f96fbfcd942d6a7434e8e473ba97b msgid "Options" msgstr "" #: ../../canaille populate:1 -#: 757aacf7045343ac87f0d6123fe1e181 +#: 366e3818f94644f69b0ea3d3f9020dfa msgid "Number of items to create" msgstr "" #: ../../canaille populate groups:1 -#: 0e4a01018e724dc6a6ca0b638d66852a +#: e4b4b48f7fb946efb4411110c1d641b9 msgid "Populate the database with generated random groups." msgstr "" #: ../../canaille populate groups:1 -#: b8f050417d3e4d5cb1abef74d5b23fef +#: d129a8ce41e94f9fa44c53f570f20781 msgid "The maximum number of users that will randomly be affected in the group" msgstr "" #: ../../canaille populate users:1 -#: 27cbff2cac6c4d0ba3a881e593e6d298 +#: 6f71793741a04ec694f309a274727f16 msgid "Populate the database with generated random users." msgstr "" #: ../../canaille get authorizationcode:1 -#: 3b7cec01bf904fbd95a74ecc629450d4 +#: 1856e19b41084221967584aa188d3768 msgid "Search for authorizationcodes and display the matching models as JSON." msgstr "" #: ../../canaille get client:1 -#: 04713bc174844fbc90ffcd66309a32d7 +#: 59eea12c091c408084fddbb81dbf5193 msgid "Search for clients and display the matching models as JSON." msgstr "" #: ../../canaille get consent:1 -#: 3d85785b1e954ca48fb3600e102060dc +#: 912e0992bca64d958062aee12cefdc6c msgid "Search for consents and display the matching models as JSON." msgstr "" #: ../../canaille get group:1 -#: a7f5ed4db7ca4b6e990d3008e3df40dd +#: 42b53a54d53c486696864c0e7c8c8219 msgid "Search for groups and display the matching models as JSON." msgstr "" #: ../../canaille get token:1 -#: f28ab88c832f4310ba8fce02409a0471 +#: 97406ed4387e42c1840f5ab179be4c67 msgid "Search for tokens and display the matching models as JSON." msgstr "" #: ../../canaille get user:1 -#: 243977ad7e504fedbd9646f89f934592 +#: a1bb3a313c9d4650934186a4b25dccdb msgid "Search for users and display the matching models as JSON." msgstr "" #: ../../canaille set authorizationcode:1 -#: 0e3e63095aaa4d10827812a9df412418 +#: 9155eca32e47450c91c0951a506c0098 msgid "Update a authorizationcode and display the edited model in JSON format in the standard output." msgstr "" #: ../../canaille delete authorizationcode:1 #: ../../canaille set authorizationcode:1 -#: 272d0df08f904f519632f9fd2fe65385 -#: 272d0df08f904f519632f9fd2fe65385 +#: 502a6cdfbcb346aa81489816b3b21085 +#: bc1755a860354bfbbc2d37ac3601e5a2 msgid "IDENTIFIER should be a authorizationcode id or authorization_code_id" msgstr "" #: ../references/commands.rst:0 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 -#: 68201cc09cab43ae872191c5e1e0de51 +#: aa12a9d952cf41499ebd5244b9f67ef0 +#: 40009c8c78e942f59d6290fd420b2006 +#: 4c066924118e4106ba70f7f1d4266443 +#: 6298303ab0684cc1ad8858bdf39a46c8 +#: a99fbbf913cb438983b5e61e58f66d44 +#: 74e52188f29743449a244bdaa1dfbb94 +#: b281d9fe2cad4c9c888aebb03111ca0e +#: d05ee88f1feb418fb4602fe3fe81f500 +#: ed946bcc41d54f09a1b9e6bb43f8c680 +#: e386fefc0ba14f128b72383b66800191 +#: 9ad2daf76c0c4d4a991b69eaad1c5863 +#: 7fc91b00ce1546ba97c4d79416db666c +#: 8349f6b5685b420abc56fb0d625c6e2e msgid "Arguments" msgstr "" @@ -3814,371 +3824,373 @@ msgstr "" #: ../../canaille set group:1 #: ../../canaille set token:1 #: ../../canaille set user:1 -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a -#: cafe88a3ce2e428eac214691a4cceb5a +#: e73a83348f80436ea9281503ad63de3b +#: 9bd472787e5745e4bc51f308a19f70fb +#: bca4dc351b19409e9642b69df0cedf1b +#: bec4293a1baf42fc87d730b31bb053b1 +#: 5f5b177343204b6697edda987c93309c +#: b282e290019942a99468d86dfe2fb92e +#: cd37ce7521cc45deb7893a68ef4a8f77 +#: 1eac8e8f62634c139608ebbf792fdf29 +#: 0f347c920d444e079131929ef7b19209 +#: d3c357a9ddce40fdbad45e6e04720e2f +#: 07ca99703bca4ce1815d0d14bcaf0884 +#: 4ce856a10c6b411b81caf2e961d35084 +#: c86318d21435475f972a7ea91e52b543 msgid "Required argument" msgstr "" #: ../../canaille set client:1 -#: 8fd29a2556aa4939a91f5dff64f750f9 +#: 82881bc9fae94bea951683d3eb3638aa msgid "Update a client and display the edited model in JSON format in the standard output." msgstr "" #: ../../canaille delete client:1 #: ../../canaille set client:1 -#: 1fe7624c6c204327b3dea4672369b25c -#: 1fe7624c6c204327b3dea4672369b25c +#: 19e76b8f40d24e89847673a45a2b9dea +#: e545f6ec93cf4cf2af8a5d099dbb8be1 msgid "IDENTIFIER should be a client id or client_id" msgstr "" #: ../../canaille set consent:1 -#: bc9887077625496493e99ffd14864f21 +#: 94055381228c4006948d67b4d53496ae msgid "Update a consent and display the edited model in JSON format in the standard output." msgstr "" #: ../../canaille delete consent:1 #: ../../canaille set consent:1 -#: c40a621613bb4a57ae61d0bf635d4be1 -#: c40a621613bb4a57ae61d0bf635d4be1 +#: bc0c92990b414a05b301f1d9c64ab815 +#: c5cae07741284c2aa8f5bcf6db9e5fe9 msgid "IDENTIFIER should be a consent id or consent_id" msgstr "" #: ../../canaille set group:1 -#: 24bf72192e064a11ba8f4408dc6cd2f2 +#: cf971b160de14b57aca3c219daae8f5a msgid "Update a group and display the edited model in JSON format in the standard output." msgstr "" #: ../../canaille delete group:1 #: ../../canaille set group:1 -#: f9bb7a0e3cb74e87bd9647b1d854d4c5 -#: f9bb7a0e3cb74e87bd9647b1d854d4c5 +#: 61ab5cbb0d29421cb2c7f6782606f222 +#: 2d2c44a7edae495d93109429f16fc48b msgid "IDENTIFIER should be a group id or display_name" msgstr "" #: ../../canaille set token:1 -#: ed64c8271e11430f829f537ac1c9fb03 +#: 1b02610f05e74f1998213d3bd334fcf8 msgid "Update a token and display the edited model in JSON format in the standard output." msgstr "" #: ../../canaille delete token:1 #: ../../canaille set token:1 -#: 5872d15912fa4904bc7429f1e6c4e4e5 -#: 5872d15912fa4904bc7429f1e6c4e4e5 +#: a8b1c621ffd44dc78c45e92bd7f5aae9 +#: a8c3ec382ac644aea294a7352e7c6c9a msgid "IDENTIFIER should be a token id or token_id" msgstr "" #: ../../canaille set user:1 -#: 6db0783b2700470888b19c5bc6144406 +#: 5b0d012ca9b14c97ac52fe32bc38549d msgid "Update a user and display the edited model in JSON format in the standard output." msgstr "" #: ../../canaille delete user:1 #: ../../canaille reset-otp:1 #: ../../canaille set user:1 -#: e98462e8df9b4465af9a63c0bbf21546 -#: e98462e8df9b4465af9a63c0bbf21546 -#: df12574865ac496e81bfdf5c8218cba0 +#: 522ea543a79a43bead732048d8732e37 +#: f280546270254fa2a708d954fb308141 +#: dc4e9f9c0a83411b8edcc6e6775c2233 msgid "IDENTIFIER should be a user id or user_name" msgstr "" #: ../../canaille create authorizationcode:1 -#: 428bc4494e3f4f6d875f2a701295e030 +#: 03ccc90e00c04cf085f412f08796fa3f msgid "Create a new authorizationcode and display the created model in JSON format in the standard output." msgstr "" #: ../../canaille create client:1 -#: 4f234a94637b44698b95c220d5c3d59e +#: a188a2b7df4047568c522d8547cbfb90 msgid "Create a new client and display the created model in JSON format in the standard output." msgstr "" #: ../../canaille create consent:1 -#: 741d27c2f5fb448da39ad4955e77518e +#: f6f36d745e5d43e1b216278b68ca5c3a msgid "Create a new consent and display the created model in JSON format in the standard output." msgstr "" #: ../../canaille create group:1 -#: 973102f969a0499692c7a2416dd0f469 +#: 17e167ef7039482cad4dbec0e88e0120 msgid "Create a new group and display the created model in JSON format in the standard output." msgstr "" #: ../../canaille create token:1 -#: 4f44ca45c9f8454b950534b228e8ef12 +#: f1adad3af4dd4428af1b96bd65897c6d msgid "Create a new token and display the created model in JSON format in the standard output." msgstr "" #: ../../canaille create user:1 -#: 35ce000da38042699e6154f107a3e814 +#: 32aa21ad4e204a46a9aef2e718d684d6 msgid "Create a new user and display the created model in JSON format in the standard output." msgstr "" #: ../../canaille delete authorizationcode:1 -#: 4607eae8cf4c40a3a37bef887f2254a1 +#: 84e90972c7eb4446a8eb7c0f5efa1d91 msgid "Delete a authorizationcode." msgstr "" #: ../../canaille delete client:1 -#: 01b65f6e61a848c490034606d1d00095 +#: 56132374fa444822835b04c957f0a9aa msgid "Delete a client." msgstr "" #: ../../canaille delete consent:1 -#: b1dfdb33eba94dc2a71f9172cff74acb +#: 8722277683284356b26927adab59e187 msgid "Delete a consent." msgstr "" #: ../../canaille delete group:1 -#: 6c79a439e1f54f4f81194cc8d6fc5944 +#: 533f8e3e48114b52a851f37bad10a06c msgid "Delete a group." msgstr "" #: ../../canaille delete token:1 -#: 1fb9fa8740c442ff82297d480fbba5ca +#: a4686b65e4f04af3a4c4f95948e4e489 msgid "Delete a token." msgstr "" #: ../../canaille delete user:1 -#: b0298caa666647268cd204cbd1cccd4d +#: d1b92475013e46aeb9503ee1c44bf476 msgid "Delete a user." msgstr "" #: ../../canaille reset-otp:1 -#: 541bd186f2b6471d823d13677e2477bb +#: 93d47f3e20c74d97878f3a870cfca1e7 msgid "Reset one-time password authentication for a user and display the edited user in JSON format in the standard output." msgstr "" #: ../references/configuration.rst:2 +#: ../tutorial/databases.rst:22 #: ../tutorial/provisioning.rst:18 -#: 6c3d1ad364a84afb9586b1b62e42dedb -#: 07783d84d6c64841b473c97c38f85937 +#: 1746a821036a46f1bf9e04427bc4fb80 +#: 79476926999b413589ab6aef13766ee0 +#: 1a1b8b34fb0f4b49bc4d1030ebf3915c msgid "Configuration" msgstr "" #: ../references/configuration.rst:5 -#: fca2326d4bf84702b7d8d0f5d3a65f20 +#: 43e4202c704b4f929984e19d0a4b5a88 msgid "Load the configuration" msgstr "" #: ../references/configuration.rst:7 -#: 51e2253170d4489ab9598217182b6f1d +#: 62f81648893f4ed7be3c389a91401d2b msgid "Canaille can be configured either by a environment variables, environment file, or by a configuration file." msgstr "" #: ../references/configuration.rst:10 -#: 1560e71d7b2d42aa8ec0accc06131b3d +#: 4ab1e9b916ad468b8ddd8b8882aed01e msgid "Configuration file" msgstr "" #: ../references/configuration.rst:14 -#: 0fc2b0bc764345caba3f9402376e279a +#: 020bb61791d54e60b4c993071882ed69 msgid "The configuration can be written in `toml` configuration file which path is passed in the :envvar:`CONFIG` environment variable." msgstr "" #: ../../canaille/app/configuration.py:docstring of canaille.app.configuration.RootSettings:11 #: ../references/configuration.rst:16 #: ../references/configuration.rst:98 -#: ../tutorial/databases.rst:23 -#: ../tutorial/databases.rst:37 -#: ../tutorial/databases.rst:138 -#: 3626de52eeca4eecbda8f1d47354a80c -#: f59eab2f20b542f1af3ae7e6e4856266 -#: f59eab2f20b542f1af3ae7e6e4856266 -#: c1e56e5ab5ba40228c68cd9eb470348d -#: 8acf4c15626e4f6897aa81c2e5e8ef42 -#: 830059290ddc4cf1b2249c45fc303b98 +#: ../tutorial/databases.rst:26 +#: ../tutorial/databases.rst:50 +#: ../tutorial/databases.rst:151 +#: ee25cbe0654e482eafb8ab5b1511fa44 +#: 0a2249d90bc14a049505d39144b4a916 +#: 6c96db7fc97d4eeabdd6201e65ec105d +#: 79476926999b413589ab6aef13766ee0 +#: 79476926999b413589ab6aef13766ee0 +#: 79476926999b413589ab6aef13766ee0 msgid "config.toml" msgstr "" #: ../references/configuration.rst:28 -#: 4b63b3891e1c45788780ea1af554d1db +#: b506560b86214ae28304658d7ea2e061 msgid "You can have a look at the :ref:`example file ` for inspiration." msgstr "" #: ../references/configuration.rst:31 -#: 8cbac0cd9e3e4bc3ad5fc60d82180568 +#: 855fd5086aa74bde85c68c3fb4473eca msgid "Environment variables" msgstr "" #: ../references/configuration.rst:33 -#: b909831b5aed44a4b439b37701feabb7 +#: f5ff88a87e1241d4a07a2c4c3f670b54 msgid "In addition, parameters that have not been set in the configuration file can be read from environment variables. The way environment variables are parsed can be read from the `pydantic-settings documentation `_." msgstr "" #: ../references/configuration.rst:38 -#: fd22a354c18f4733b8b1962cfcbe2139 +#: f7fcfa2d43864f288d1c0746fd8ed74e msgid "For environment vars, the separator between sections and variables is a double underscore: ``__``. For instance, the ``NAME`` var in the ``CANAILLE`` section shown above is ``CANAILLE__NAME``." msgstr "" #: ../references/configuration.rst:42 -#: f12f0cbb606e4627be2fa3b2a895f162 +#: ba95ac0bec524f2186c0c5a2fd55ddc4 msgid "Environment file" msgstr "" #: ../references/configuration.rst:44 -#: 434c11ee0d6a4a118f9b8802d407d447 +#: d301925be3cf4943be48ae119f0d518e msgid "Any environment variable can also be written in an environment file, which path should be passed in the ``ENV_FILE`` environment variable. For instance, set ``ENV_FILE=.env`` to load a ``.env`` file." msgstr "" #: ../references/configuration.rst:47 #: ../tutorial/theming.rst:45 -#: 83d91b20c3204d09b61a4a6de8c84769 -#: 457a1eceffa94e44afeb7c6d55ef5ea8 +#: 399b3ea19a0f47509d8bc251ed19246f +#: 39e63609b8d14eabb7f70dbd257c3f05 msgid ".env" msgstr "" #: ../references/configuration.rst:65 -#: 8fc48610072c4e248c494befe2a4c8f6 +#: 8c82c49133f34f779dcc9309e3633625 msgid "Configuration methods priority" msgstr "" #: ../references/configuration.rst:67 -#: d3fdde7c8d9841e49e92bcba763e33d8 +#: 29a90274aef046c09f17682553736efc msgid "If a same configuration option is defined by different ways, here is how Canaille will choose which one to use:" msgstr "" #: ../references/configuration.rst:69 -#: b79bfecad485446b85a8866657222448 +#: 5fe899a247494a3babcecca1746b08cd msgid "environment vars have priority over the environment file and the configuration file;" msgstr "" #: ../references/configuration.rst:70 -#: 63800f5a14d44e1fa3ed0266e19f5482 +#: 0cd4875aa3a047329f866dba98ea29d8 msgid "environment file will have priority over the configuration file." msgstr "" #: ../references/configuration.rst:73 #: ../references/templates.rst:0 -#: e8e7a0f78d68479a9586036adf25e183 -#: e618c439d01140e89d1dc5192b332e88 -#: f4db2269f8ad4c409d39e94fe1dcaa04 -#: 68c66fa321bf4fe2a26894cfb9893ef0 -#: d7c47aab465445b8bc425f9441587869 -#: 52bdc51455ac48d2bdb9d260bdb350cf -#: 0fb7c750d22647d788376d6343f66caf -#: f92c045d1a5a4d00b038fa12d93eff2e -#: 90d78d2e0fdb420ab3c4d75f9909ebca -#: c86ca15b6d43459db4613bed7711b415 -#: 025f6511bb9848d4a1434b34d8af8ed5 -#: 5bd3a111c63e47598c6a88827ea19ffe -#: d2ba0706e4954be5b7ae534c589f6aca -#: 9e2f1558bdac4c4eb1f753e347f81def -#: eb3ec759399744d3a0b8340459257502 -#: 7a6f904d5199479faf1f9475e8f28ec8 -#: aa80eea655004e6aa3ed31b683743446 -#: 47e7b3bef2d7471b9b71292a43c594f0 -#: d477ef4794834bcd88e238de37086828 -#: af7c4339cf534ca499a21f430a2cfddc -#: c537eb4e5a054b4da0cce51226e90ae8 -#: 3e425d243a7e46c4ba306bdc43551133 -#: 65568f4bca8a4d9f9a4fcdc05b5e446c -#: 833bc5945dc84c89947a25733c1029dc -#: fa1f3f1eebc5442cb616ba17c22aa22d -#: 5093360aed9a4fd0a361bd81f3310e2c +#: 2eb621ffce2f420680529f3bf4901f73 +#: a044d8c4524a4d36bb09196ba221c543 +#: c69f134bcb144ad0a92381365ab2f83e +#: 974e15495c234b3a8eb9ce7968e7beda +#: 6b633fbb96d84ec7a52e3a57c7ddb347 +#: 515ac97c820c4d6da9aeec7264d9f8b8 +#: 02faf1b58dfd4a0f9319a47d7ec47ae2 +#: 32d1ed5dd4b842df9bc42ce6a343892e +#: 0b9656a5f894494db688a75cd7d0c642 +#: 6edf1abe2cee40738eece983144306d5 +#: 941e74d08cb443e48a940d76e5d04438 +#: 9a57301253854e968388a7c4cee2002f +#: 4fd00dbcf8c143e4bccbed3edcbee864 +#: d187ad28099a4b569019d8dadba7ec13 +#: e35b68481ffb4d068cb15274894b15f9 +#: e99cb8030e8e4cdfbf4c01e06a3e714c +#: 8a29fb06720c4c4397ad4957b490a8c0 +#: a8e69ab44b5540439b59f6f0bf6a38a1 +#: a32ac168931245b68611cd6955faeea5 +#: b2e8743b32164566be10d124c518e437 +#: bbbaacd277154bceaf2283930962ba8c +#: 71db7835a9984c0b9124fcf46045e799 +#: a33a17334e9b4d16a42c11374a9e5095 +#: 7529ea6abdac43299a57a0b242497b4c +#: 689c48da2d964dff82be0f72974e6498 +#: 63a0c611ea4640a3ad0562e6d8ad7f21 msgid "Parameters" msgstr "" #: ../../canaille/app/configuration.py:docstring of canaille.app.configuration.RootSettings:1 -#: ba32908d458e4689a5d90a46b386fdf3 +#: 84e2009dde284788b29008558f7ee8df msgid "The top-level namespace contains the configuration settings unrelated to Canaille." msgstr "" #: ../../canaille/app/configuration.py:docstring of canaille.app.configuration.RootSettings:4 -#: fffc30ea67ab47d99472750172be2a29 +#: 233b44cb5f924b92b55e0717ec868cc7 msgid "The configuration parameters from the following libraries can be used:" msgstr "" #: ../../canaille/app/configuration.py:docstring of canaille.app.configuration.RootSettings:6 -#: ae9ceb139bfc47f8b383dec852b507c2 +#: 528ffc1283f1453f8b5a315650653aad msgid ":doc:`Flask `" msgstr "" #: ../../canaille/app/configuration.py:docstring of canaille.app.configuration.RootSettings:7 -#: 3d01d0dc9cdc47e59420f5b121370277 +#: 8434735c37f44b4a9dca422dcfa35fb0 msgid ":doc:`Flask-WTF `" msgstr "" #: ../../canaille/app/configuration.py:docstring of canaille.app.configuration.RootSettings:8 -#: d573a04c56154eaf857d49c057690bfd +#: 36e7ddf80e5a439482c95b1cdc3138a2 msgid ":doc:`Flask-Babel `" msgstr "" #: ../../canaille/app/configuration.py:docstring of canaille.app.configuration.RootSettings:9 -#: 552391e3f12c4385abb3e1a2e3929cfa +#: 53c48e3c1ee04722bbd19d1a0647ab84 msgid ":doc:`Authlib `" msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.DEBUG:1 -#: 4309008dba2c4aa79584299f19987ac4 +#: 0266d76fe0494ebe951de15dff0a03de msgid "The Flask :external:py:data:`DEBUG` configuration setting." msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.DEBUG:3 -#: f8cb9ba68ed14b818c2fb2bcfbffb16a +#: 91084957d9a44fba848f2d3bdc4f173b msgid "This enables debug options." msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.DEBUG:7 -#: 553b378e895a4b74aa242c08cd29450f +#: 4411e21377474f2395da5cf994bf9b5f msgid "This is useful for development but should be absolutely avoided in production environments." msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.PREFERRED_URL_SCHEME:1 -#: cb2cc7437e4a4d3c90895c4148186b25 +#: 2631e6c917144dcda0f45f75dca3e045 msgid "The Flask :external:py:data:`PREFERRED_URL_SCHEME` configuration setting." msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.PREFERRED_URL_SCHEME:4 -#: 530f78ce6f4842c983c10b38fe4c4b93 +#: 17d256877da540b4af0ecb3f816527d1 msgid "This sets the url scheme by which canaille will be served." msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.SECRET_KEY:1 -#: 42e179fea274407eb26dd67e4a6d14a5 +#: ce0a09e3f4bb40b8a88d5d8a02c78b53 msgid "The Flask :external:py:data:`SECRET_KEY` configuration setting." msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.SECRET_KEY:3 -#: b16e239dce5c4f199a2fba1707c82d1a +#: 054498e41f0c4cf19ba9b6d9a7bd344b msgid "You MUST change this." msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.SERVER_NAME:1 -#: 0f0f60195f334cf597f67857740b2ace +#: 29d21b789ee2499a81b40546ac5bc867 msgid "The Flask :external:py:data:`SERVER_NAME` configuration setting." msgstr "" #: ../../docstring of canaille.app.configuration.RootSettings.SERVER_NAME:3 -#: 39edb89e79af4a10a154a5c42d51e86e +#: c244712d83da4e2ea46b19c7f7c9677f msgid "This sets domain name on which canaille will be served." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.CoreSettings:1 -#: d831c1b108eb4e96bb11a6ddc92ed45e +#: 8abadcc23b59421eaf1866cf66f16b82 msgid "The settings from the ``CANAILLE`` namespace." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.CoreSettings:3 -#: a51801e81d914eb3bfe1fa4e649133c1 +#: b197626889354c289279eb095892940e msgid "Those are all the configuration parameters that controls the behavior of Canaille." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ACL:1 -#: 89de24471b434051a4a84e39bc47aded +#: 83e6e2dfc47a4a0da12b26098911529d msgid "Mapping of permission groups. See :class:`ACLSettings` for more details." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ACL:3 -#: 1f85af06bed64d9da4417c6e6f7e244e +#: cb73b597fa1e4394b1c5bb2bb2435e99 msgid "The ACL name can be freely chosen. For example:" msgstr "" @@ -4186,758 +4198,773 @@ msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.PERMISSIONS:6 #: ../../docstring of canaille.core.configuration.CoreSettings.ACL:5 #: ../../docstring of canaille.core.configuration.CoreSettings.LOGGING:12 -#: 56ce67b55d3b4d8eba9a07b4feed2587 -#: d9b0f4816c2644679233ec3b797c2fc4 -#: d9b0f4816c2644679233ec3b797c2fc4 -#: d9b0f4816c2644679233ec3b797c2fc4 +#: 881bf101872546348dd1fbe1e0876ce2 +#: 14afae3efc904e2085f73676b352e16f +#: f269c5d6271a4989a1bcfddeee3ee9c2 +#: a159a694d7e14098907617eed4f35aa0 msgid "..code-block:: toml" msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ACL:7 -#: dc73b62baf4f465598787ebb33191c7b +#: 7df785453bf2449bb5fa56a6eb3f40d2 msgid "[CANAILLE.ACL.DEFAULT] PERMISSIONS = [\"edit_self\", \"use_oidc\"] READ = [\"user_name\", \"groups\"] WRITE = [\"given_name\", \"family_name\"]" msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ACL:12 -#: 56d15bcfdbcc4556a3848702228b970f +#: bb75dcb394b84875a95ea5029a452027 msgid "[CANAILLE.ACL.ADMIN] WRITE = [\"user_name\", \"groups\"]" msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ADMIN_EMAIL:1 -#: e07c109febe5434e95b532da3dadf454 +#: 753080f7763646d1ad22a17240e53b6c msgid "Administration email contact." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ADMIN_EMAIL:3 -#: 7a5e93e36d434fcb96b85beea8f1adc6 +#: 5c58da831ccb44d4b19d5681c996c78f msgid "In certain special cases (example : questioning about password corruption), it is necessary to provide an administration contact email." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.EMAIL_CONFIRMATION:1 -#: 478effaaf0da47a1a31b996b06b8c650 +#: 426b66feb6d3450eaf7638586fec400f msgid "If :py:data:`True`, users will need to click on a confirmation link sent by email when they want to add a new email." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.EMAIL_CONFIRMATION:4 -#: b82dc4dc6818409eb5fa256462c4ac19 +#: 6479ecaa27d94cf89171e9587af6d468 msgid "By default, this is true if ``SMTP`` is configured, else this is false. If explicitly set to true and ``SMTP`` is disabled, the email field will be read-only." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.EMAIL_OTP:1 -#: 8e19d8a485fe456191ab16773f84483e +#: 7c9b9868ad8c4e99832f5a2d3a5e6aee msgid "If :py:data:`True`, then users will need to authenticate themselves via a one-time password sent to their primary email address." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ENABLE_INTRUDER_LOCKOUT:1 -#: 8e19d8a485fe456191ab16773f84483e +#: e374204dc15d4778b430968d4bc5f9d9 msgid "If :py:data:`True`, then users will have to wait for an increasingly long time between each failed login attempt." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ENABLE_PASSWORD_COMPROMISSION_CHECK:1 -#: cb4478169a09415a9f17e3df16239ecd +#: 4170c86b23554c8ea2c883557a8deec0 msgid "If :py:data:`True`, Canaille will check if passwords appears in compromission databases such as `HIBP `_ when users choose a new one." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ENABLE_PASSWORD_RECOVERY:1 -#: b70cf94037df4bd1ae8a74acc370b3a5 +#: bb6bad71e08a4d36b3339537790b147c msgid "If :py:data:`False`, then users cannot ask for a password recovery link by email." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ENABLE_REGISTRATION:1 -#: 6ee78ec59c21456e8761778153d4f700 +#: 5f8fcd4a000d411c8502c630e54f04ee msgid "If :py:data:`True`, then users can freely create an account at this instance." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.ENABLE_REGISTRATION:4 -#: 979b9444b9c04354add2e781bd324752 +#: d92660e43b9347d0ade1e397bc5207b8 msgid "If email verification is available, users must confirm their email before the account is created." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.FAVICON:1 -#: 8931d55b0c264be0982765f04f83ae38 +#: 8718e146c23448f682ee9642c6cb911a msgid "You favicon." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.FAVICON:3 -#: 7991e0eec12c457dad401f49b34ad835 +#: 8d1fc56d14134aa9ac8ad88fb924d401 msgid "If unset and :attr:`LOGO` is set, then the logo will be used." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.HIDE_INVALID_LOGINS:1 -#: 8e19d8a485fe456191ab16773f84483e +#: bdf0b98c2bed4013b5bed76ae6326c87 msgid "If :py:data:`True`, when users try to sign in with an invalid login, a message is shown indicating that the password is wrong, but does not give a clue whether the login exists or not." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.HIDE_INVALID_LOGINS:5 -#: dffe6e218f4f48e981ac5a9fa9a21e37 +#: 192cdb38b79048aaa18dcad8e675d6e9 msgid "If :py:data:`False`, when a user tries to sign in with an invalid login, a message is shown indicating that the login does not exist." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.HTMX:1 -#: b200882d189b46f3a83f217ff8b59551 +#: 988c8b75a0884b80a0a1d65f53ac680e msgid "Accelerates webpages loading with asynchronous requests." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.INVITATION_EXPIRATION:1 -#: 2dc15bd9ea8a4386b7202dbdbab5de36 +#: 4b6029f0ed44414f953feda8afe9b63e msgid "The validity duration of registration invitations, in seconds." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.INVITATION_EXPIRATION:3 -#: c6aaae8719c34838aec54b8fea2d5101 +#: b6745de2c7b84f54b498403bdca444d1 msgid "Defaults to 2 days." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.JAVASCRIPT:1 -#: 70d5c7fa2dfa4e6695c84f2b4ab547c9 +#: f760d39408a748ce908e65a24a0c6a80 msgid "Enables Javascript to smooth the user experience." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LANGUAGE:1 -#: 1e1cda3ec4c04a4aaeb2069ccc8f376f +#: e02332b4e43042de98a09d40a948302a msgid "If a language code is set, it will be used for every user." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LANGUAGE:3 -#: 6818acfcf652444db48e1c61878b6bb6 +#: 1a676dafa9194a46ae41884d78b1a8a6 msgid "If unset, the language is guessed according to the users browser." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LOGGING:1 -#: 63800f5a14d44e1fa3ed0266e19f5482 +#: a16f42d36574410e929fb61e6ef8abac msgid "Configures the logging output using the python logging configuration format:" msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LOGGING:3 -#: 62d20006362a45ca8ff0f0a8fbb82bf4 +#: fb272f04203f46e098520a67a969659e msgid "If :data:`None`, everything is logged in the standard error output. The log level is :data:`~logging.DEBUG` if the :attr:`~canaille.app.configuration.RootSettings.DEBUG` setting is :py:data:`True`, else this is :py:data:`~logging.INFO`." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LOGGING:6 -#: 44c6ded187ab4e44aac024c2cdb85303 +#: b970691fac51473d9fbc00f9f1a97f64 msgid "If this is a :class:`dict`, it is passed to :func:`logging.config.dictConfig`:" msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LOGGING:7 -#: 6e269ac8b9144e9699a5856c375d7a37 +#: fa42a52c1dc84ef4b56ce123d98cd612 msgid "If this is a :class:`str`, it is expected to be a file path that will be passed to :func:`logging.config.fileConfig`." msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.PERMISSIONS:4 #: ../../docstring of canaille.core.configuration.CoreSettings.LOGGING:10 -#: ba8b9d6794e2459492abfa778736328a -#: ba8b9d6794e2459492abfa778736328a +#: fb6acd57fe244d02bbd69015275cd69c +#: f33e86db2dc74cd0a98a6d5c0d928e73 msgid "For example:" msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LOGGING:14 -#: 2eedaa2fba4545698dfd11007a2e0c9c +#: a5b8c52cf10a429699e2054f42658c17 msgid "[CANAILLE.LOGGING] version = 1 formatters.default.format = \"[%(asctime)s] %(levelname)s in %(module)s: %(message)s\" root = {level = \"INFO\", handlers = [\"canaille\"]}" msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LOGGING:19 -#: 4b44c1c288c3433fb0edba70dd9c1343 +#: 2524ebb40666405b8630a4778d4334fd msgid "[CANAILLE.LOGGING.handlers.canaille] class = \"logging.handlers.WatchedFileHandler\" filename = \"/var/log/canaille.log\" formatter = \"default\"" msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.LOGO:1 -#: 851b93aeb7b54426872a6b4a2ed973b9 +#: 19233db1937d4d398e9bc82d88b2aeb4 msgid "The logo of your organization, this is useful to make your organization recognizable on login screens." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.MAX_PASSWORD_LENGTH:1 -#: 88cd67b65c954dc7a261df77d1823cda +#: b8115919bf52465c8ecad2294c9cb3f5 msgid "User password maximum length." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.MAX_PASSWORD_LENGTH:3 -#: 435e72d3f33642da9016c521a88f15e6 +#: acfb34baa52d40c2ac93f84d1d1b0b45 msgid "There is a technical of 4096 characters with the SQL backend. If the value is 0, :data:`None`, or greater than 4096, then 4096 will be retained." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.MIN_PASSWORD_LENGTH:1 -#: b15846ed6b2a4ad49bbb19cde177023a +#: 06396a965c9342b697bc45dcc011f2be msgid "User password minimum length." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.MIN_PASSWORD_LENGTH:3 -#: 820670101aa7436eb014aa61e1c1a7eb +#: 7efa39bf27bb468b9df98c5248428124 msgid "If 0 or :data:`None`, password won't have a minimum length." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.NAME:1 -#: a41944f564f5438fb8572449b5d13995 +#: 5e65abc8483f455a991d9e047e73da66 msgid "Your organization name." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.NAME:3 -#: d61df1326c344b45b6d1c7b24e12b207 +#: 606e9a684c9243359899a63d7e2c07d2 msgid "Used for display purpose." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.OTP_METHOD:1 -#: 622f83bdd580459cad5b3b328fb2de3b +#: 04b59ac479f548bd9740d2b7e243e0be msgid "If OTP_METHOD is defined, then users will need to authenticate themselves using a one-time password (OTP) via an authenticator app. If set to ``TOTP``, the application will use time one-time passwords, If set to ``HOTP``, the application will use HMAC-based one-time passwords." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.PASSWORD_COMPROMISSION_CHECK_API_URL:1 -#: 4501d236ecc142e2ad045599ee19ac19 +#: efecdcc0b3c44808aab72f448d73bf42 msgid "Have i been pwned api url for compromission checks." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.PASSWORD_LIFETIME:1 -#: 1072c369689f4922997715eb5337795a +#: c9deb9285c2e43869c2acf1319bc5cf5 msgid "Password validity duration." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.PASSWORD_LIFETIME:3 -#: 4262b875a3a148dab5e94595cb2a981f +#: e54d23138f1b4d63ab45a1ea9cd55dbd msgid "If set, user passwords expire after this delay. Users are forced to change their password when the lifetime of the password is over. The duration value is expressed in `ISO8601 format `_. For example, delay of 60 days is written \"P60D\"." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.SENTRY_DSN:1 -#: 0b234cbe21824f31b27a3b3c893fd37b +#: f2e004ed1352465e8d32c0565f60dc08 msgid "A `Sentry `_ DSN to collect the exceptions." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.SENTRY_DSN:3 -#: 2eab9799f4c0478aa5479f62e826b170 +#: 396fd294d31a4d2d9ad9967ea5845ea7 msgid "This is useful for tracking errors in test and production environments." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.SMPP:1 -#: 79d66e38b7d94974a21563fac9a58149 +#: 2548a23167c14ca791a00efef39a5fba msgid "The settings related to SMPP configuration." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.SMPP:3 -#: 41d396512e7d40b28223841b21f8ed09 +#: 58473f24986d42edb6abb6ac7447701b msgid "If unset, sms-related features like sms one-time passwords won't be enabled." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.SMS_OTP:1 -#: 8e19d8a485fe456191ab16773f84483e +#: 0d4b32baaef746d0920a8d7b49f41f4c msgid "If :py:data:`True`, then users will need to authenticate themselves via a one-time password sent to their primary phone number." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.SMTP:1 -#: 79d66e38b7d94974a21563fac9a58149 +#: e2bfd599192e4c6f9bfeaead50f548ed msgid "The settings related to SMTP and mail configuration." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.SMTP:3 -#: 41d396512e7d40b28223841b21f8ed09 +#: 444f30f696184ee6898c385d19fc647b msgid "If unset, mail-related features like password recovery won't be enabled." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.THEME:1 -#: e327a089ace6495285f29ade69226d1b +#: d006eeb6ee7c4d1cb5249d35faeda62e msgid "The name of a theme in the 'theme' directory, or a path to a theme." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.THEME:3 -#: 641146b41ecc461d9fa7280687a462d9 +#: 3b7e2c30ab29424a8b1e74cd9404ffce msgid "Defaults to ``default``. Theming is done with `flask-themer `_." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.TIMEZONE:1 -#: 421c3427b77b4cc4af9619406463c1c2 +#: 503564e13430483fbbdbdf3d3933c331 msgid "The timezone in which datetimes will be displayed to the users (e.g. ``CEST``)." msgstr "" #: ../../docstring of canaille.core.configuration.CoreSettings.TIMEZONE:4 -#: d8d80524578e4697a5bb9f7e83c7d113 +#: 0906370280b743b782a2a6dde00ca491 msgid "If unset, the server timezone will be used." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.SMTPSettings:1 -#: 2f0178f9dbe747c695273f89e42da8c2 +#: 57a55ca2875c462babb31fd7b4aaa3d4 msgid "The SMTP configuration. Belong in the ``CANAILLE.SMTP`` namespace. If unset, mail related features will be disabled, such as mail verification or password recovery emails." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.SMTPSettings:5 -#: 598e1ca109154455ad98b50d8853891d +#: 9a813b531406465e94e5348aef282cd0 msgid "By default, Canaille will try to send mails from localhost without authentication." msgstr "" #: ../../docstring of canaille.core.configuration.SMTPSettings.FROM_ADDR:1 -#: 8ab9425f8a6b42dc9097b69e3eaa334a +#: ddac936f417d41c0ab52e7899e0cd6c3 msgid "The sender for Canaille mails." msgstr "" #: ../../docstring of canaille.core.configuration.SMTPSettings.FROM_ADDR:3 -#: f8f5f1377e5147d4baf9782ff95b4aa3 +#: c9aa4a06ffaf45fcac8c2d518bd32d97 msgid "Some mail provider might require a valid sender address." msgstr "" #: ../../docstring of canaille.core.configuration.SMTPSettings.HOST:1 -#: 9059b29ae44849efb180f3b2da128c19 +#: ec91a927a1974be1a89fd6f9cf1a9e80 msgid "The SMTP host." msgstr "" #: ../../docstring of canaille.core.configuration.SMTPSettings.LOGIN:1 -#: 0bf8168dc84545cb810a8f25bbb4abf7 +#: 579743b8464b4d29a118d73e1ec74c94 msgid "The SMTP login." msgstr "" #: ../../docstring of canaille.core.configuration.SMTPSettings.PASSWORD:1 -#: ec1b4f81894e45f5abcae80dfaee87a9 +#: 2a70d820c61c4b3cad94d66bae196094 msgid "The SMTP password." msgstr "" #: ../../docstring of canaille.core.configuration.SMTPSettings.PORT:1 -#: 514104bb8bcc4331b1e7fff12e550ba3 +#: f59d761d5304416dbb5e2711598e00a4 msgid "The SMTP port." msgstr "" #: ../../docstring of canaille.core.configuration.SMTPSettings.SSL:1 -#: f4e65d7811cb43d5b7d86ec07af2576d +#: 83650c04663f4c4ab803282325a29073 msgid "Whether to use SSL to connect to the SMTP server." msgstr "" #: ../../docstring of canaille.core.configuration.SMTPSettings.TLS:1 -#: bd8dac0e38f14b6583d024fca1768b7d +#: c6ec3788d99d46a68815e355bc37e6b0 msgid "Whether to use TLS to connect to the SMTP server." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.SMPPSettings:1 -#: 2f0178f9dbe747c695273f89e42da8c2 +#: 05a0a772c0964569a863b02e60bb2b60 msgid "The SMPP configuration. Belong in the ``CANAILLE.SMPP`` namespace. If not set, sms related features such as sms one-time passwords will be disabled." msgstr "" #: ../../docstring of canaille.core.configuration.SMPPSettings.HOST:1 -#: 9059b29ae44849efb180f3b2da128c19 +#: ff31eb63e9c84d4cacd175f5028acda7 msgid "The SMPP host." msgstr "" #: ../../docstring of canaille.core.configuration.SMPPSettings.LOGIN:1 -#: 0bf8168dc84545cb810a8f25bbb4abf7 +#: b18653341cdd49a8bd3cc74e9dc0d177 msgid "The SMPP login." msgstr "" #: ../../docstring of canaille.core.configuration.SMPPSettings.PASSWORD:1 -#: ec1b4f81894e45f5abcae80dfaee87a9 +#: d8f1c895bda94702aa5efa1b3ffd7f8b msgid "The SMPP password." msgstr "" #: ../../docstring of canaille.core.configuration.SMPPSettings.PORT:1 -#: 1c6040260eac4930a107d3f612c6ef6e +#: 8e46db242a7b43ccbb26ca42a7a44a97 msgid "The SMPP port. Use 8775 for SMPP over TLS (recommended)." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.ACLSettings:1 -#: 45f3089188214078ab06f2b1cff3b0e0 +#: 1032e74cacef4f1d8c4cc5a72c374dc0 msgid "Access Control List settings. Belong in the ``CANAILLE.ACL`` namespace." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.ACLSettings:3 -#: 733df203b313404eb417f40ed8708a2e +#: 4a2a439777264fee9754f94f04b23815 msgid "You can define access controls that define what users can do on canaille. An access control consists in a :attr:`FILTER` to match users, a list of :attr:`PERMISSIONS` matched users will be able to perform, and fields users will be able to :attr:`READ` and :attr:`WRITE`. Users matching several filters will cumulate permissions." msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.FILTER:1 -#: a14933a4c7244138bb59a43c9d288955 +#: 30704fd262e54feaa7505f5da3bff786 msgid ":attr:`FILTER` can be:" msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.FILTER:3 -#: d0f71dfab2ec47fca2184767e58eec59 +#: 49f0a37bc20a46f788cbcf4e5a67f5b6 msgid ":py:data:`None`, in which case all the users will match this access control" msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.FILTER:4 -#: e33849bb0c954228951cb18c56a9e70d +#: c383b32ac2134422b95321c1159422d2 msgid "a mapping where keys are user attributes name and the values those user attribute values. All the values must be matched for the user to be part of the access control." msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.FILTER:7 -#: 2ed07fdd7da94cfd90167b2d1f4cb4eb +#: 588e0e10a4b347e6a3fdda1ea444b4c7 msgid "a list of those mappings. If a user values match at least one mapping, then the user will be part of the access control" msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.FILTER:10 -#: 657a11f5921947b88bfc47cf8affbe00 +#: e662b5f42e8f488ca47ef2885a2e8c85 msgid "Here are some examples::" msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.PERMISSIONS:1 -#: df95253032c647229909e34386b1e5cc +#: 947459704a294f38b0ee5b0ab39c3d5b msgid "A list of :class:`Permission` users in the access control will be able to manage." msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.PERMISSIONS:8 -#: 700fa74aeea44e9aa6dd204df7870e90 +#: 7b7a62237cca42a6bc1cf641951bd872 msgid "PERMISSIONS = [\"manage_users\", \"manage_groups\", \"manage_oidc\", \"delete_account\", \"impersonate_users\"]" msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.READ:1 -#: ab801708874c4b1bb937f62969614340 +#: fd894bac29b14289abb8b997d80f2ace msgid "A list of :class:`~canaille.core.models.User` attributes that users in the ACL will be able to read." msgstr "" #: ../../docstring of canaille.core.configuration.ACLSettings.WRITE:1 -#: 384d296240314638a1f1b6b7719c6bb6 +#: ed3af117e73c4a08a4cc9570d9505564 msgid "A list of :class:`~canaille.core.models.User` attributes that users in the ACL will be able to edit." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.Permission:1 -#: f9eec27878c64e608b2783b5e89172ed +#: 3630076631504884994de04711e79c85 msgid "The permissions that can be assigned to users." msgstr "" #: ../../canaille/core/configuration.py:docstring of canaille.core.configuration.Permission:3 -#: 217cf0cc0b9b4a48a26abeaad488c131 +#: 836f0d6eb00a449b8f593fe22f4c6e3d msgid "The permissions are intended to be used in :attr:`ACLSettings `." msgstr "" #: ../../docstring of canaille.core.configuration.Permission.DELETE_ACCOUNT:1 -#: 370dec6e2b8049d0b7353b085340b102 +#: 2a00700bc3df406bb414932e14a777aa msgid "Allows users to delete their account." msgstr "" #: ../../docstring of canaille.core.configuration.Permission.DELETE_ACCOUNT:3 -#: f7be239942c94727a948d27c6c93408e +#: 10ce363401a14711b73f41bf58f5b11c msgid "If used with :attr:`~canaille.core.configuration.Permission.MANAGE_USERS`, users can delete any account." msgstr "" #: ../../docstring of canaille.core.configuration.Permission.EDIT_SELF:1 -#: 1f716bb0d0ec481ab5dff0a02f5c9e37 +#: 7876013cd8d34f059c292d35a93e8bed msgid "Allows users to edit their own profile." msgstr "" #: ../../docstring of canaille.core.configuration.Permission.IMPERSONATE_USERS:1 -#: c9018bb9aceb40bc9536cc03320c5bad +#: 133a7a2df544419db9c12a1d81adb463 msgid "Allows users to take the identity of another user." msgstr "" #: ../../docstring of canaille.core.configuration.Permission.MANAGE_GROUPS:1 -#: 1072c369689f4922997715eb5337795a +#: 197c146b044d41e1a91760b38f7fa42b msgid "Allows group edition and creation." msgstr "" #: ../../docstring of canaille.core.configuration.Permission.MANAGE_OIDC:1 -#: 014b4028381e4f4d8dcc8dc8a5e3a26f +#: 1187d515878b4a73a383eb5dafc3cdf3 msgid "Allows OpenID Connect client managements." msgstr "" #: ../../docstring of canaille.core.configuration.Permission.MANAGE_USERS:1 -#: ff39df8edc7143c7b23d22bb773b5198 +#: 3fc23fff9e2541ad9e079c331bfb1296 msgid "Allows other users management." msgstr "" #: ../../docstring of canaille.core.configuration.Permission.USE_OIDC:1 -#: c7e27c4618a9460e8373c17f558f8d1e +#: 500b7afe49f34db3885ae75a2aa99ff8 msgid "Allows OpenID Connect authentication." msgstr "" #: ../../canaille/oidc/configuration.py:docstring of canaille.oidc.configuration.OIDCSettings:1 -#: e2e226bd197b4d6f87291ee45a3004ef +#: af3b4287fa40413fa0a9095a0972aa94 msgid "OpenID Connect settings." msgstr "" #: ../../canaille/oidc/configuration.py:docstring of canaille.oidc.configuration.OIDCSettings:3 -#: db9af81a48ac4b1a914370a2e47bf4e0 +#: 569811f41eca490eb6d44f79521b19e4 msgid "Belong in the ``CANAILLE_OIDC`` namespace." msgstr "" #: ../../docstring of canaille.oidc.configuration.OIDCSettings.DYNAMIC_CLIENT_REGISTRATION_OPEN:1 -#: 092f0d4259994eb8b834b256a8f72453 +#: 3a4739edd59b43b3b39b6ec25b438b20 msgid "Whether a token is needed for the RFC7591 dynamical client registration." msgstr "" #: ../../docstring of canaille.oidc.configuration.OIDCSettings.DYNAMIC_CLIENT_REGISTRATION_OPEN:3 -#: 506f1fcd0f424df4bdafd9a69307f645 +#: 81d8fadf800643b5880c3a9b2da2f026 msgid "If :py:data:`True`, no token is needed to register a client. If :py:data:`False`, dynamical client registration needs a token defined in :attr:`DYNAMIC_CLIENT_REGISTRATION_TOKENS`." msgstr "" #: ../../docstring of canaille.oidc.configuration.OIDCSettings.DYNAMIC_CLIENT_REGISTRATION_TOKENS:1 -#: 30861c9a3a294daf8105dd5ac9007282 +#: b9b0f251f5a040788db035222a1833d7 msgid "A list of tokens that can be used for dynamic client registration." msgstr "" #: ../../docstring of canaille.oidc.configuration.OIDCSettings.JWT:1 -#: 04e054bb3d094e4ea8f23ab6fdec9bf6 +#: 8d4cca4d5d8248569a8b5e284cf2a628 msgid "JSON Web Token settings." msgstr "" #: ../../docstring of canaille.oidc.configuration.OIDCSettings.REQUIRE_NONCE:1 -#: 95b1ee4fd0da4ec2b30beb3e25944cd9 +#: 45dab080b9b542a78d7c5e7d8f11efdc msgid "Force the nonce exchange during the authentication flows." msgstr "" #: ../../docstring of canaille.oidc.configuration.OIDCSettings.REQUIRE_NONCE:3 -#: de680082bc4546a6883ff4826df0067b +#: 9d35f18ffd9540198d0f197c1c2a4240 msgid "This adds security but may not be supported by all clients." msgstr "" #: ../../canaille/oidc/configuration.py:docstring of canaille.oidc.configuration.JWTSettings:1 -#: 750fbe7d77954d87855e68d3199c81e7 +#: f862449d0b374ae0add26d95ef2f5cb7 msgid "JSON Web Token settings. Belong in the ``CANAILLE_OIDC.JWT`` namespace." msgstr "" #: ../../canaille/oidc/configuration.py:docstring of canaille.oidc.configuration.JWTSettings:3 -#: 03945dc4192c4f7abefbcd2b5c7c2bd9 +#: 04bb58dabe1849068f0e8fbbde1b6c8c msgid "You can generate a RSA keypair with::" msgstr "" #: ../../docstring of canaille.oidc.configuration.JWTSettings.ALG:1 -#: d65a4aaf4cb64130ac59c97cddcffb0b +#: 29ec28a6230a458885f7b7aa999c8a66 msgid "The key algorithm." msgstr "" #: ../../docstring of canaille.oidc.configuration.JWTSettings.EXP:1 -#: c0c460480db94b1a9ebceea06528d426 +#: 9430c7f0daae460db38df33e90d593ba msgid "The time the JWT will be valid, in seconds." msgstr "" #: ../../docstring of canaille.oidc.configuration.JWTSettings.ISS:1 -#: 6501426215db4b27b7b5d217954ca6be +#: 3a87f42a35f94be488f736b99fdc235a msgid "The URI of the identity provider." msgstr "" #: ../../docstring of canaille.oidc.configuration.JWTSettings.KTY:1 -#: 3e338458e42e405fb025bfcfc53688f4 +#: 2e7bd63f53ce4691b16b0ddb6def6788 msgid "The key type." msgstr "" #: ../../docstring of canaille.oidc.configuration.JWTSettings.PRIVATE_KEY:1 -#: 27a15f235d63447884175edd85e55cf4 +#: 93f87ea252884bac976fdb483026a745 msgid "The private key." msgstr "" #: ../../docstring of canaille.oidc.configuration.JWTSettings.PRIVATE_KEY:3 #: ../../docstring of canaille.oidc.configuration.JWTSettings.PUBLIC_KEY:3 -#: 29d2c1b105e74d46b80db01b78954711 -#: 29d2c1b105e74d46b80db01b78954711 +#: 5a38848e470044cc86d8088acba470ee +#: d65e8c973f9b4574838315b2ac4fbc6b msgid "If :py:data:`None` and debug mode is enabled, then an in-memory key will be used." msgstr "" #: ../../docstring of canaille.oidc.configuration.JWTSettings.PUBLIC_KEY:1 -#: e88605c89e4b47989186fd27e5aff172 +#: 065eb721cbb646c3957f30587b650b09 msgid "The public key." msgstr "" #: ../../canaille/oidc/configuration.py:docstring of canaille.oidc.configuration.JWTMappingSettings:1 -#: 235687b99f2c408aaf1c063061975f77 +#: d9a0b99e00254e1dbae60d4d0f92d268 msgid "Mapping between the user model and the JWT fields." msgstr "" #: ../../canaille/oidc/configuration.py:docstring of canaille.oidc.configuration.JWTMappingSettings:3 -#: ebe87d5efdaa458b97451b5ab4fdeb3d +#: dc177e3a15bd44a58ad9a78d86488317 msgid "Fields are evaluated with jinja. A ``user`` var is available." msgstr "" #: ../../canaille/scim/configuration.py:docstring of canaille.scim.configuration.SCIMSettings:1 -#: e2e226bd197b4d6f87291ee45a3004ef +#: eb8831b391be4590a8ff7004ce5deec5 msgid "SCIM settings." msgstr "" #: ../../canaille/backends/sql/configuration.py:docstring of canaille.backends.sql.configuration.SQLSettings:1 -#: b7ccdac0ebd14f47be2d77ea52bd75d7 +#: ed5d3f22ff8c4dcc98caafbb1c9ef5d3 msgid "Settings related to the SQL backend." msgstr "" #: ../../canaille/backends/sql/configuration.py:docstring of canaille.backends.sql.configuration.SQLSettings:3 -#: 07e03b184cb54e0a92ca3a33033da5cd +#: 7a39e104f4d24b5bb0f2999a30e7dd39 msgid "Belong in the ``CANAILLE_SQL`` namespace." msgstr "" +#: ../../docstring of canaille.backends.sql.configuration.SQLSettings.AUTO_MIGRATE:1 +#: c49da2725c2b4bcaa81ff15f505ea439 +msgid "Whether to automatically apply database migrations." +msgstr "" + +#: ../../docstring of canaille.backends.sql.configuration.SQLSettings.AUTO_MIGRATE:3 +#: 47e7693d96434baca0d3dd196c5a4db4 +msgid "If :data:`True`, database migrations will be automatically applied when Canaille web application is launched. If :data:`False`, migrations must be applied manually with ``canaille db upgrade``." +msgstr "" + +#: ../../docstring of canaille.backends.sql.configuration.SQLSettings.AUTO_MIGRATE:8 +#: b58635cfdb7f4240854239418e78fe14 +msgid "When running the CLI, migrations will never be applied." +msgstr "" + #: ../../docstring of canaille.backends.sql.configuration.SQLSettings.DATABASE_URI:1 -#: 4d1ff118c1a44a50a962e527d1a8e2a2 +#: 4536c2d4cb2149eeb579656c7d6fef22 msgid "The SQL server URI. For example:" msgstr "" #: ../../docstring of canaille.backends.sql.configuration.SQLSettings.DATABASE_URI:6 -#: 4bb9ca2e412a461caacf1a146582247f +#: 07d66e79d7df497d85858df1396e191c msgid "DATABASE_URI = \"postgresql://user:password@localhost/database_name\"" msgstr "" #: ../../docstring of canaille.backends.sql.configuration.SQLSettings.PASSWORD_SCHEMES:1 -#: b1827fc993454e8fbfbe2868c28e751c +#: 10845b88dbdc43c788ee2e0bc36350e1 msgid "Password hashing scheme." msgstr "" #: ../../docstring of canaille.backends.sql.configuration.SQLSettings.PASSWORD_SCHEMES:3 -#: 2e0dbdbc64944ec7948324890d02b255 +#: 52fdf7d843c9432db315f114054c9395 msgid "Defines password hashing scheme in SQL database. examples : \"mssql2000\", \"ldap_salted_sha1\", \"pbkdf2_sha512\"" msgstr "" #: ../../canaille/backends/ldap/configuration.py:docstring of canaille.backends.ldap.configuration.LDAPSettings:1 -#: e656ae1d120e45109618f653d29d845e +#: e15e2823c04d4ec28c7babecc8562d74 msgid "Settings related to the LDAP backend." msgstr "" #: ../../canaille/backends/ldap/configuration.py:docstring of canaille.backends.ldap.configuration.LDAPSettings:3 -#: 9877879932a3406b87f9893f4a6bf8f3 +#: 83424c682e70455799fea1843996c454 msgid "Belong in the ``CANAILLE_LDAP`` namespace." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.BIND_DN:1 -#: 96d852cc067c459cabfcc201a7271cf0 +#: abd1149eb47f4ca391af208bac04862e msgid "The LDAP bind DN." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.BIND_PW:1 -#: 084f3814a8604375aed794d649845045 +#: 0d9db8acc3bb462e959c147787183929 msgid "The LDAP bind password." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.GROUP_BASE:1 -#: 8f56c7d2bfb348afbcc36de24398dfac +#: dfe0dce641704dfe8e107c25c9a48395 msgid "The LDAP node under which groups will be looked for and saved." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.GROUP_BASE:3 -#: 58cf9c9e87464b709e4e8508577fbd63 +#: d1a484ad5d9b416882079b981605b592 msgid "For instance `\"ou=groups,dc=mydomain,dc=tld\"`." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.GROUP_CLASS:1 -#: 3b6a2121763e4302aa1780cb6d51d9d6 +#: c683dd1cef604a8eb3b22d39d848788d msgid "The object class to use for creating new groups." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.GROUP_NAME_ATTRIBUTE:1 -#: 10d8bb8232bf4b30b6c631847ea70b2b +#: 82b43769a16441fa96297e1e31f03062 msgid "The attribute to use to identify a group." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.GROUP_RDN:1 -#: 688132cb0d4e4f27973a02406d50edaa +#: f3fb1e7028544214a4ea3b83f3c3d49f msgid "The attribute to identify an object in the Group DN." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.ROOT_DN:1 -#: 4428b1de4b664a55b077caa3969d6769 +#: 3f3bc5cd8b044803b3fba6e4fdfde1e3 msgid "The LDAP root DN." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.TIMEOUT:1 -#: 5a175d6a66e445458ee6bc473d614a45 +#: d5d1aa6b21c64ed4b81236594911f285 msgid "The LDAP connection timeout." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.URI:1 -#: 3172b80b5b86434699f226a3b713c52f +#: f20bc6eb339648d893a110829ce14ab1 msgid "The LDAP server URI." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.USER_BASE:1 -#: 0e03c3262f504b79b84847041ee442e5 +#: 9b091562c6774d6b81e8fe6dd81c93cd msgid "The LDAP node under which users will be looked for and saved." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.USER_BASE:3 -#: e1d16301542b40929d9e65c9a949b303 +#: c61024ac66b44e35925082e9876b8a9a msgid "For instance `ou=users,dc=mydomain,dc=tld`." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.USER_CLASS:1 -#: 92a1f8f8665848c9aaf4d5f9f1f3b6b7 +#: cd09943f22a8453fbca1aa2173e3186c msgid "The object class to use for creating new users." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.USER_FILTER:1 -#: 228fcd64b4704fa0b4ea52ab85f48f08 +#: 894a2a5356004edaa5fc0ac68e8e4742 msgid "Filter to match users on sign in." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.USER_FILTER:3 -#: f61c66f7c0e94e67ae5a4ce5de0dc548 +#: 4daf3e1956864084aa30ea039bdc1ef7 msgid "For instance ``(|(uid={{ login }})(mail={{ login }}))``. Jinja syntax is supported and a ``login`` variable is available, containing the value passed in the login field." msgstr "" #: ../../docstring of canaille.backends.ldap.configuration.LDAPSettings.USER_RDN:1 -#: d49e7765b3d6440d9fdcb0ecb18c06c1 +#: 44e7dc51f57347f1b02ad3d371f174e9 msgid "The attribute to identify an object in the User DN." msgstr "" #: ../references/configuration.rst:94 -#: c4674c5a1b434e81944983c7ec2fb0f1 +#: 3dd3777a442446f594c09782013d74f1 msgid "Example file" msgstr "" #: ../references/configuration.rst:96 -#: 87c3dcb2ef5a4f649ec0fa9005449a79 +#: d1a4ab70ee764b0bb698a26a11818542 msgid "Here is a configuration file example:" msgstr "" #: ../references/index.rst:2 -#: 51ac90bb647f41b69879253e3e7c475e +#: 071913032bd34cd2bd443cd511ed0f99 msgid "References" msgstr "" #: ../references/models.rst:2 -#: bf9a972313e94c6aa0e72470dfc9677c +#: 8449e7712a554bf88b595a0bbb2d0c4c msgid "Data models" msgstr "" #: ../references/models.rst:4 -#: 620f9112555349eba4cc5daecdb72217 +#: bee5e0d6c994427f8c8b66eb51ea1eb9 msgid "This reference details the data models used by Canaille. This is mostly useful for developers." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features:1 #: ../../canaille/backends/models.py:docstring of canaille.backends.models.BackendModel:1 #: ../../canaille/backends/models.py:docstring of canaille.backends.models.Model:1 -#: b407db3f81d14e789f9f7f2e2bec7613 -#: b29fcc3a6bdc4ee582d1e14851e430b7 -#: 3ac32584e20443aaae7659c3e894cb06 +#: 38d2033e866440eeaafe892cc6064c18 +#: 23d8ede99f5a4ee39d8da74d996a4a1d +#: 3a3408d8f3904b038bce47acee950437 msgid "Bases: :py:class:`object`" msgstr "" #: ../../canaille/backends/models.py:docstring of canaille.backends.models.BackendModel:1 -#: 664ca63468e648ddb0b2f2f957139ae9 +#: c25bd1ffbbd349e5ad1dea57b25154c8 msgid "The backend model abstract class." msgstr "" #: ../../canaille/backends/models.py:docstring of canaille.backends.models.BackendModel:3 -#: e16c978524f44a57affe6f2e15fdb5e2 +#: 7ef9431bea8e442ebb713b76b3bc64ff msgid "It details all the methods and attributes that are expected to be implemented for every model and for every backend." msgstr "" #: ../../canaille/backends/models.py:docstring of canaille.backends.models.Model:1 -#: 9f46b7e1801e4a57a346c598161cbdac +#: 9b1a6bcb81134359bc30467d1dd705ab msgid "The model abstract class." msgstr "" #: ../../canaille/backends/models.py:docstring of canaille.backends.models.Model:3 -#: f4dad754b1d7448f842620b4f7b6069b +#: 4e4cc81400bd4a4589afcdce71b2b087 msgid "It details all the common attributes shared by every models." msgstr "" #: ../../docstring of canaille.backends.models.Model.created:1 -#: 8685782e932b476a8b6f80256ebca659 +#: a8d222c7abad4c26a9aca53d2227a03d msgid "The :class:`~datetime.datetime` that the resource was added to the service provider." msgstr "" #: ../../docstring of canaille.backends.models.Model.id:1 -#: 112d9fd0a032418682875fe5f5685fc8 +#: dd7a51180db84215bf6bae28646204cf msgid "A unique identifier for a SCIM resource as defined by the service provider. Id will be :data:`None` until the ``Backend.save`` method is called." msgstr "" #: ../../docstring of canaille.backends.models.Model.id:5 -#: fe3e4be3b44b43ebbbd11fe81fdc2613 +#: c267b02c5d9f44d2b6fa54a4fa80c07a msgid "Each representation of the resource MUST include a non-empty \"id\" value. This identifier MUST be unique across the SCIM service provider's entire set of resources. It MUST be a stable, non- reassignable identifier that does not change when the same resource is returned in subsequent requests. The value of the \"id\" attribute is always issued by the service provider and MUST NOT be specified by the client. The string \"bulkId\" is a reserved keyword and MUST NOT be used within any unique identifier value. The attribute characteristics are \"caseExact\" as \"true\", a mutability of \"readOnly\", and a \"returned\" characteristic of \"always\". See Section 9 for additional considerations regarding privacy." msgstr "" #: ../../canaille/backends/models.py:docstring of canaille.backends.models.Model.identifier:1 -#: 4f16f8a2628746e0bbb013e0ebdd53de +#: 68b886ca51e94b929e6a81dece535871 msgid "Returns a unique value that will be used to identify the model instance." msgstr "" #: ../../canaille/backends/models.py:docstring of canaille.backends.models.Model.identifier:4 -#: 570af0c54d8a4b9ca5e1180a154578c6 +#: b942d5bf24f8490790ea02f455feef27 msgid "This value will be used in URLs in canaille, so it should be unique and short." msgstr "" #: ../../docstring of canaille.backends.models.Model.last_modified:1 -#: a64d636f5ae843698bae18cbc27adae5 +#: e2986b332a464e609b4d1a6042569839 msgid "The most recent :class:`~datetime.datetime` that the details of this resource were updated at the service provider." msgstr "" #: ../../docstring of canaille.backends.models.Model.last_modified:4 -#: 1478742051c64d3c8e8cb44b101c2337 +#: bc822b66fbc04a00801cac82d2dae44c msgid "If this resource has never been modified since its initial creation, the value MUST be the same as the value of :attr:`~canaille.backends.models.Model.created`." msgstr "" @@ -4947,1103 +4974,1103 @@ msgstr "" #: ../../canaille/oidc/basemodels.py:docstring of canaille.oidc.basemodels.Client:1 #: ../../canaille/oidc/basemodels.py:docstring of canaille.oidc.basemodels.Consent:1 #: ../../canaille/oidc/basemodels.py:docstring of canaille.oidc.basemodels.Token:1 -#: 31058fb082044629ab68e330524f37d4 -#: 963c873782434df6bc7a6314e406858e -#: ec3b5ed7c8e94f728377c74990bc94e6 -#: ec3b5ed7c8e94f728377c74990bc94e6 -#: ec3b5ed7c8e94f728377c74990bc94e6 -#: ec3b5ed7c8e94f728377c74990bc94e6 +#: 82169b55a46b4c65b4beb8d57b131a7c +#: ec3b388e2afc44389fbc8ba448b91118 +#: 71f525f7b5c0407db5b52bbd115bc09d +#: 5a01ffa3802640ffa56b74edf6b87cd3 +#: db8c684605854a7e860884b4467182d6 +#: e1f14f010ff54e918cc97dc2d2345ff6 msgid "Bases: :py:class:`~canaille.backends.models.Model`" msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.Group:1 -#: d8d4759602c44e048e0d4f053dc5c895 +#: 1957213a8dd2445ea66f5fa8155fdec7 msgid "User model, based on the `SCIM Group schema `_." msgstr "" #: ../../docstring of canaille.core.models.Group.display_name:1 -#: f557ae62a380458ca1e212165ff7ebd2 +#: 329f754548e54099a1f7ffcbfeab9e77 msgid "A human-readable name for the Group." msgstr "" #: ../../docstring of canaille.core.models.Group.display_name:3 #: ../../docstring of canaille.oidc.basemodels.Client.client_id:1 -#: 3a782effac4c44f2b4084280c168f909 -#: 038998149ec146249f6cd7993b6ea7c2 +#: 0ba4b47f809b4adfb4faa401ab882eb1 +#: 1687fff7eedc4a9294f55b5c0e71460d msgid "REQUIRED." msgstr "" #: ../../docstring of canaille.core.models.Group.members:1 -#: 83c94299de834bb7899fc5d919567ddf +#: 3849324e8bd9411ca14cf42753424f0b msgid "A list of members of the Group." msgstr "" #: ../../docstring of canaille.core.models.Group.members:3 -#: f8395458983d4efd966c1f2bd3e771dc +#: bfeaf8af5e9a4adaabbdc92a9c16c0b3 msgid "While values MAY be added or removed, sub-attributes of members are \"immutable\". The \"value\" sub-attribute contains the value of an \"id\" attribute of a SCIM resource, and the \"$ref\" sub-attribute must be the URI of a SCIM resource such as a \"User\", or a \"Group\". The intention of the \"Group\" type is to allow the service provider to support nested groups. Service providers MAY require clients to provide a non-empty value by setting the \"required\" attribute characteristic of a sub-attribute of the \"members\" attribute in the \"Group\" resource schema." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.User:1 -#: 3de74c338e4e45d4ada0909e1d6a2c1d +#: e70c0af0475547bab48542208e6960ab msgid "User model, based on the `SCIM User schema `_, `Entreprise User Schema Extension `_ and `SCIM Password Management Extension `_ draft. Attribute description is based on SCIM and put there for information purpose. The description may not fit the current implementation in Canaille." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.User.can:1 -#: dd44c29c7f88458e923a6bdc89ff4bd8 +#: cb1ff62500f2400f80efb9a83b666257 msgid "Whether or not the user has the :class:`~canaille.core.configuration.Permission` according to the :class:`configuration `." msgstr "" #: ../../docstring of canaille.core.models.User.department:1 -#: d09b761f1c3d4bcda3c7c5841cb86768 +#: 1a0701e1fb5c4fb0b538e5a1998394a4 msgid "Identifies the name of a department." msgstr "" #: ../../docstring of canaille.core.models.User.display_name:1 -#: 7a92e34396f14701a901c6342ba43372 +#: b02fd0fbb2dd404c94264ede072af9d3 msgid "The name of the user, suitable for display to end-users." msgstr "" #: ../../docstring of canaille.core.models.User.display_name:3 -#: e89fec83b2eb42deaac70264489240e3 +#: 2c6a95db4eb2484dbc839cf9d5874f6a msgid "Each user returned MAY include a non-empty displayName value. The name SHOULD be the full name of the User being described, if known (e.g., \"Babs Jensen\" or \"Ms. Barbara J Jensen, III\") but MAY be a username or handle, if that is all that is available (e.g., \"bjensen\"). The value provided SHOULD be the primary textual label by which this User is normally displayed by the service provider when presenting it to end-users." msgstr "" #: ../../docstring of canaille.core.models.User.emails:1 -#: 5383ce6b712040c4a0bba18c1bbef93d +#: 09d7beb59dda4fba94ad22d25e6e6e6d msgid "Email addresses for the User." msgstr "" #: ../../docstring of canaille.core.models.User.emails:3 -#: dcbfe09f878141a4bd5a20b9e2d9b6da +#: f2a627a9e2d64f6e98a8a7d49c6e3960 msgid "The value SHOULD be specified according to [RFC5321]. Service providers SHOULD canonicalize the value according to [RFC5321], e.g., \"bjensen@example.com\" instead of \"bjensen@EXAMPLE.COM\". The \"display\" sub-attribute MAY be used to return the canonicalized representation of the email value. The \"type\" sub-attribute is used to provide a classification meaningful to the (human) user. The user interface should encourage the use of basic values of \"work\", \"home\", and \"other\" and MAY allow additional type values to be used at the discretion of SCIM clients." msgstr "" #: ../../docstring of canaille.core.models.User.employee_number:1 -#: 6cc0c003bd234628a0bc0a0c27cccaee +#: 2fad1dcd5a98494782a7261a060cc54d msgid "A string identifier, typically numeric or alphanumeric, assigned to a person, typically based on order of hire or association with an organization." msgstr "" #: ../../docstring of canaille.core.models.User.family_name:1 -#: db1cbc1b88a44555ac36431d951ed1bc +#: de6af42b8a78479c80c17f9650ff40c0 msgid "The family name of the User, or last name in most Western languages (e.g., \"Jensen\" given the full name \"Ms. Barbara Jane Jensen, III\")." msgstr "" #: ../../docstring of canaille.core.models.User.formatted_address:1 -#: 19bb2c52eb2747a8bae2df988b0f3226 +#: a98d8370e3ac4f0e8b69c6bbe070c064 msgid "The full mailing address, formatted for display or use with a mailing label." msgstr "" #: ../../docstring of canaille.core.models.User.formatted_address:4 -#: aaf2f2de713c468a8388bd976795c621 +#: 231f865353d84dd4a48c1df380cb67f9 msgid "This attribute MAY contain newlines." msgstr "" #: ../../docstring of canaille.core.models.User.formatted_name:1 -#: 6e02928b97a944b5929f0002f9c7b70c +#: 756e32b2f48c4bb699750c4fb7bfeee4 msgid "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display (e.g., \"Ms. Barbara Jane Jensen, III\")." msgstr "" #: ../../docstring of canaille.core.models.User.given_name:1 -#: 0adf168d41024021aca8fcbf22e2b575 +#: 9ea5b53d4e104215b57ac2bbdd26ce37 msgid "The given name of the User, or first name in most Western languages (e.g., \"Barbara\" given the full name \"Ms. Barbara Jane Jensen, III\")." msgstr "" #: ../../docstring of canaille.core.models.User.groups:1 -#: ef755a48c32047c187a2405190a88b07 +#: 38f2628961964453b52af44ae8b771de msgid "A list of groups to which the user belongs, either through direct membership, through nested groups, or dynamically calculated." msgstr "" #: ../../docstring of canaille.core.models.User.groups:4 -#: 0d7136476f7649ddad322de96971e938 +#: 028cef824f9f4aa4bc32e25d85675aa4 msgid "The values are meant to enable expression of common group-based or role-based access control models, although no explicit authorization model is defined. It is intended that the semantics of group membership and any behavior or authorization granted as a result of membership are defined by the service provider. The canonical types \"direct\" and \"indirect\" are defined to describe how the group membership was derived. Direct group membership indicates that the user is directly associated with the group and SHOULD indicate that clients may modify membership through the \"Group\" resource. Indirect membership indicates that user membership is transitive or dynamic and implies that clients cannot modify indirect group membership through the \"Group\" resource but MAY modify direct group membership through the \"Group\" resource, which may influence indirect memberships. If the SCIM service provider exposes a \"Group\" resource, the \"value\" sub-attribute MUST be the \"id\", and the \"$ref\" sub-attribute must be the URI of the corresponding \"Group\" resources to which the user belongs. Since this attribute has a mutability of \"readOnly\", group membership changes MUST be applied via the \"Group\" Resource (Section 4.2). This attribute has a mutability of \"readOnly\"." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.User.has_password:1 -#: 034f9fa73a5d455382726ac4b448c136 +#: 0f2b60791a8b4de6ad01e2aae8599351 msgid "Check whether a password has been set for the user." msgstr "" #: ../../docstring of canaille.core.models.User.hotp_counter:1 -#: 05380b82ddda46bfa9678288cebf85a7 +#: 7270ae13d163421c834873b5c783e59c msgid "HMAC-based One Time Password counter, used for multi-factor authentication." msgstr "" #: ../../docstring of canaille.core.models.User.last_otp_login:1 -#: bdfeb17b4cc24311b1945121f22d4e61 +#: 3733def07fab41e6a20187ed1d5b3e0e msgid "A DateTime indicating when the user last logged in with a one-time password. This attribute is currently used to check whether the user has activated one-time password authentication or not." msgstr "" #: ../../docstring of canaille.core.models.User.locality:1 -#: 3d50110e459f4ba3b06af609c8f2bef8 +#: 35cad569116b41dfbe6bbe2b8104b76b msgid "The city or locality component." msgstr "" #: ../../docstring of canaille.core.models.User.lock_date:1 -#: bc9386fb2f7c41cc82308c45d919feb9 +#: 633f6bdeb83f4913a8ee2f882af9002c msgid "A DateTime indicating when the resource was locked." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.User.locked:1 -#: 8f227ede6e584fda946d50e86049afcb +#: 39db3feba62644ffa9786bffc2ab4a7f msgid "Whether the user account has been locked or has expired." msgstr "" #: ../../docstring of canaille.core.models.User.one_time_password:1 -#: 4f6ac05bac3845ea8325c2b34e8c0824 +#: f18bf157b3d146f9a1ce6b555d34e063 msgid "One time password used for email or sms multi-factor authentication." msgstr "" #: ../../docstring of canaille.core.models.User.one_time_password_emission_date:1 -#: cc1503678fc046f9bb759040e7e561e1 +#: 3524d8036e604f5ea0b79f6923281e59 msgid "A DateTime indicating when the user last emitted an email or sms one-time password." msgstr "" #: ../../docstring of canaille.core.models.User.organization:1 -#: 39b14adbf8ad42b39c2cdd9fb0fcf96c +#: 4d9f6ad494f04647ab74303cf4ac43ff msgid "Identifies the name of an organization." msgstr "" #: ../../docstring of canaille.core.models.User.password:1 -#: a4ec9a6f72834b47b82db401e1ebed2f +#: 40d6c48066524cfc8351cc767f41346a msgid "This attribute is intended to be used as a means to set, replace, or compare (i.e., filter for equality) a password. The cleartext value or the hashed value of a password SHALL NOT be returnable by a service provider. If a service provider holds the value locally, the value SHOULD be hashed. When a password is set or changed by the client, the cleartext password SHOULD be processed by the service provider as follows:" msgstr "" #: ../../docstring of canaille.core.models.User.password:9 -#: 4a4c0608f0ac4739bbb358ebfffbc94c +#: 8f905c9dd5d348c3a471dba091253875 msgid "Prepare the cleartext value for international language comparison. See Section 7.8 of [RFC7644]." msgstr "" #: ../../docstring of canaille.core.models.User.password:12 -#: 770cfb12f1c943188e281ef2e527ccb2 +#: 2ebe8572767c40ef994cdebbe78d85de msgid "Validate the value against server password policy. Note: The definition and enforcement of password policy are beyond the scope of this document." msgstr "" #: ../../docstring of canaille.core.models.User.password:16 -#: 736bf805f27d4dfb8c1292b5afaca0be +#: 75918453e12d4bceb114c825c4bc2be3 msgid "Ensure that the value is encrypted (e.g., hashed). See Section 9.2 for acceptable hashing and encryption handling when storing or persisting for provisioning workflow reasons." msgstr "" #: ../../docstring of canaille.core.models.User.password:20 -#: 605f5a91894e42ee9d14686ae2f346cd +#: b9119fbfcde14dbca59820b443efd8a2 msgid "A service provider that immediately passes the cleartext value on to another system or programming interface MUST pass the value directly over a secured connection (e.g., Transport Layer Security (TLS)). If the value needs to be temporarily persisted for a period of time (e.g., because of a workflow) before provisioning, then the value MUST be protected by some method, such as encryption." msgstr "" #: ../../docstring of canaille.core.models.User.password:28 -#: 198ed93545fe467ea461cef9a184362c +#: 16ddf15766214a3f80f303269bddbb79 msgid "Testing for an equality match MAY be supported if there is an existing stored hashed value. When testing for equality, the service provider:" msgstr "" #: ../../docstring of canaille.core.models.User.password:32 -#: becd82e6d299471d94ab4906ce105218 +#: 827dd01cece04053a65fed8877f35e51 msgid "Prepares the filter value for international language comparison. See Section 7.8 of [RFC7644]." msgstr "" #: ../../docstring of canaille.core.models.User.password:35 -#: ca91b3fdd3ae434dbb47d55b73ccbcb2 +#: 1e4a8c9cfd7a4bd6960d66a5f63742ab msgid "Generates the salted hash of the filter value and tests for a match with the locally held value." msgstr "" #: ../../docstring of canaille.core.models.User.password:38 -#: 0c4d62a31f2d442981432c2f841abdac +#: 8f6cfda04ae544c6822f4a7f06cea845 msgid "The mutability of the password attribute is \"writeOnly\", indicating that the value MUST NOT be returned by a service provider in any form (the attribute characteristic \"returned\" is \"never\")." msgstr "" #: ../../docstring of canaille.core.models.User.password_failure_timestamps:1 -#: af54ab55d44c469d886fbacc828582d6 +#: 2bcfd4fcbfb044239e08740a87b836cf msgid "This attribute stores the timestamps of the user's failed authentications." msgstr "" #: ../../docstring of canaille.core.models.User.password_failure_timestamps:4 -#: 785dc2a557f5471fb7e5cdebbaf84443 +#: 947638406ec447c69ee529ec5db689c9 msgid "It's currently used by the intruder lockout delay system." msgstr "" #: ../../docstring of canaille.core.models.User.password_last_update:1 -#: f1bb412648244da18357a6e88d57836b +#: 9ed3dec804234490afb3e06065614fcb msgid "Specifies the last time the user password was changed. By default, the date of creation of the password is retained." msgstr "" #: ../../docstring of canaille.core.models.User.phone_numbers:1 -#: 636757499c76498ca8a1cbad6ea4fbb7 +#: e6c0fe4b0a3142fe9197d175f60b217c msgid "Phone numbers for the user." msgstr "" #: ../../docstring of canaille.core.models.User.phone_numbers:3 -#: dabf654512714fda965fded70f74aeac +#: 4e5ec315754d41568d9b1b84d5a7dce7 msgid "The value SHOULD be specified according to the format defined in [RFC3966], e.g., 'tel:+1-201-555-0123'. Service providers SHOULD canonicalize the value according to [RFC3966] format, when appropriate. The \"display\" sub-attribute MAY be used to return the canonicalized representation of the phone number value. The sub- attribute \"type\" often has typical values of \"work\", \"home\", \"mobile\", \"fax\", \"pager\", and \"other\" and MAY allow more types to be defined by the SCIM clients." msgstr "" #: ../../docstring of canaille.core.models.User.photo:1 -#: 27d8a36d06ce46858ed9974cfb3a9a9b +#: 509e5e62dcb240599d27a5f02e7a7e03 msgid "A URI that is a uniform resource locator (as defined in Section 1.1.3 of [RFC3986]) that points to a resource location representing the user's image." msgstr "" #: ../../docstring of canaille.core.models.User.photo:5 -#: 8d0e8ca2555c48b0aad26fa7fdb102cf +#: 207121916f8140a89ac96917fb82c3c8 msgid "The resource MUST be a file (e.g., a GIF, JPEG, or PNG image file) rather than a web page containing an image. Service providers MAY return the same image in different sizes, although it is recognized that no standard for describing images of various sizes currently exists. Note that this attribute SHOULD NOT be used to send down arbitrary photos taken by this user; instead, profile photos of the user that are suitable for display when describing the user should be sent. Instead of the standard canonical values for type, this attribute defines the following canonical values to represent popular photo sizes: \"photo\" and \"thumbnail\"." msgstr "" #: ../../docstring of canaille.core.models.User.postal_code:1 -#: ca9c10bc74eb4a2b90365bbd3473b1be +#: bb30484b20b44c4c8a5e790565a75c52 msgid "The zip code or postal code component." msgstr "" #: ../../docstring of canaille.core.models.User.preferred_language:1 -#: 5c7d29d6e6334161b21068010f566af2 +#: d28cb1c7653f48619c4ea69883c99982 msgid "Indicates the user's preferred written or spoken languages and is generally used for selecting a localized user interface." msgstr "" #: ../../docstring of canaille.core.models.User.preferred_language:4 -#: c45f7e1feb59446daa9dbea7cce24305 +#: 65ba0d81d5b4453dac85fbb4b80521b4 msgid "The value indicates the set of natural languages that are preferred. The format of the value is the same as the HTTP Accept-Language header field (not including \"Accept-Language:\") and is specified in Section 5.3.5 of [RFC7231]. The intent of this value is to enable cloud applications to perform matching of language tags [RFC4647] to the user's language preferences, regardless of what may be indicated by a user agent (which might be shared), or in an interaction that does not involve a user (such as in a delegated OAuth 2.0 [RFC6749] style interaction) where normal HTTP Accept-Language header negotiation cannot take place." msgstr "" #: ../../docstring of canaille.core.models.User.profile_url:1 -#: 267adc8c4ecf4750a9db3464eb2b8573 +#: dc41821b1f6940468c4c18d70de4b372 msgid "A URI that is a uniform resource locator (as defined in Section 1.1.3 of [RFC3986]) and that points to a location representing the user's online profile (e.g., a web page)." msgstr "" #: ../../docstring of canaille.core.models.User.profile_url:5 -#: 7f227419ab034b3da8303fe94affeb6c +#: 8481e9db6717497da875c95d2f8c5a8d msgid "URIs are canonicalized per Section 6.2 of [RFC3986]." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.User.readable_fields:1 -#: e064888816ad4e228797af005daa0c1b +#: 82072608d7184c37ab37493cacb7b587 msgid "The fields the user can read according to the :class:`configuration ` configuration." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.User.readable_fields:4 -#: d51b5c9a3058444187f7f52aafcc57ce +#: c02e2a584e0c4473b1001c024b24696f msgid "This does not include the :attr:`writable ` fields." msgstr "" #: ../../docstring of canaille.core.models.User.region:1 -#: 7781da46bb4f45c19d4061a73efd1860 +#: 037f259a6e984ca1aea1e1f80d9b6079 msgid "The state or region component." msgstr "" #: ../../docstring of canaille.core.models.User.secret_token:1 -#: 3764681cd7844fdaa69cc2ab072ff732 +#: 5f56d77ac5ee40d192cc5b122e0f79ae msgid "Unique token generated for each user, used for multi-factor authentication." msgstr "" #: ../../docstring of canaille.core.models.User.street:1 -#: e15de46ed1a745e580399d0bf40e96b8 +#: e57fcc9747814887a3643ba92cc6dc53 msgid "The full street address component, which may include house number, street name, P.O." msgstr "" #: ../../docstring of canaille.core.models.User.street:4 -#: 663a1b080f3646f5bbc30492beccda49 +#: 563c42f617d444ec90c40d6af35f43a8 msgid "box, and multi-line extended street address information. This attribute MAY contain newlines." msgstr "" #: ../../docstring of canaille.core.models.User.title:1 -#: 96571ab69f47443087e9de7cdf2af3ef +#: 6d2d009ee87746d4bcb3d63c3bc9f8cb msgid "The user's title, such as \"Vice President\"." msgstr "" #: ../../docstring of canaille.core.models.User.user_name:1 -#: 5a41c74aee6040d78b20e68feedbe91d +#: 89f788bca8344b2ba7f5967a62e7bcce msgid "A service provider's unique identifier for the user, typically used by the user to directly authenticate to the service provider." msgstr "" #: ../../docstring of canaille.core.models.User.user_name:4 -#: 305c46ac8a734b4fb513c2da9c0bd78d +#: f6806a97c1b74c79b9600427618fed91 msgid "Often displayed to the user as their unique identifier within the system (as opposed to \"id\" or \"externalId\", which are generally opaque and not user-friendly identifiers). Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users. This attribute is REQUIRED and is case insensitive." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.User.writable_fields:1 -#: f99945951b7f476484908fef5eb9bee4 +#: 2017dc660a66445db67269640fd1fd8f msgid "The fields the user can write according to the :class:`configuration `." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.string_code:1 -#: 81f725c1782d45b395593f37c0776e41 +#: b1de5e85f60e43b282a0030180652af0 msgid "Add leading 0 if the code length does not match the defined length." msgstr "" #: ../../canaille/core/models.py:docstring of canaille.core.models.string_code:3 -#: 1cc69f629da14627a5d08132c7388c45 +#: 97af099fefbe45d6a996d9a721da82c3 msgid "For instance, parameter ``digit=6``, but ``code=123``, this method would return ``000123``::" msgstr "" #: ../../canaille/oidc/basemodels.py:docstring of canaille.oidc.basemodels.AuthorizationCode:1 -#: 470216f2acc344a9bc4fe9408cf38b4c +#: adb7d97f3da14c2aacca22dd9662c8ff msgid "OpenID Connect temporary authorization code definition." msgstr "" #: ../../canaille/oidc/basemodels.py:docstring of canaille.oidc.basemodels.Client:1 -#: b0248a05ffa44100bfcf4e84de0e154b +#: 5b28461fe1a648319cb0c397a99b4e53 msgid "OpenID Connect client definition, based on the `OAuth 2.0 Dynamic Client Registration protocols `_ and the `OpenID Connect RP-Initiated Logout `_ specifications." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_id:3 -#: 9630f3464163481993a425c28c308969 +#: e0657b683d9647658874cadf0850f835 msgid "OAuth 2.0 client identifier string. It SHOULD NOT be currently valid for any other registered client, though an authorization server MAY issue the same client identifier to multiple instances of a registered client at its discretion." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_id_issued_at:1 #: ../../docstring of canaille.oidc.basemodels.Client.client_secret:1 #: ../../docstring of canaille.oidc.basemodels.Client.post_logout_redirect_uris:1 -#: 05d209d5010c49c99c2e88fd070c5595 -#: 05d209d5010c49c99c2e88fd070c5595 -#: 05d209d5010c49c99c2e88fd070c5595 +#: 967cfa0d0db440809c848e54df164c07 +#: 4b4d070c368a434f8cc01bd90da45fc9 +#: f0ca582d84334ea1a5507f264b52ef8b msgid "OPTIONAL." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_id_issued_at:3 -#: fb189c4d73054f559edc1f71e252013c +#: 0838ce8aace4443387c90b0261ca5378 msgid "Time at which the client identifier was issued. The time is represented as the number of seconds from 1970-01-01T00:00:00Z as measured in UTC until the date/time of issuance." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_name:1 -#: 90b1171c71784152b30c868ce6a69e92 +#: 717188e85d47456ebd89ff518aa68b29 msgid "Human-readable string name of the client to be presented to the end-user during authorization." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_name:4 -#: 2f438f6285d3455f81459326d3ed2a3d +#: 245a799f27b0452d8b0796e99a80f07d msgid "If omitted, the authorization server MAY display the raw \"client_id\" value to the end-user instead. It is RECOMMENDED that clients always send this field. The value of this field MAY be internationalized, as described in Section 2.2." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_secret:3 -#: b659e17a18ae49d6b460ce4bfd3ef720 +#: c1fc10e0d4c54f52a51026a03b857b99 msgid "OAuth 2.0 client secret string. If issued, this MUST be unique for each \"client_id\" and SHOULD be unique for multiple instances of a client using the same \"client_id\". This value is used by confidential clients to authenticate to the token endpoint, as described in OAuth 2.0 [RFC6749], Section 2.3.1." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_secret_expires_at:1 -#: fe3efeb714e642038fddaee69b85a240 +#: 9cfc3339a1dd46189984275692dba718 msgid "REQUIRED if \"client_secret\" is issued." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_secret_expires_at:3 -#: 8224ead887464588a9b93fc320780f69 +#: 1186270fd481486caa704d2fd7528b4f msgid "Time at which the client secret will expire or 0 if it will not expire. The time is represented as the number of seconds from 1970-01-01T00:00:00Z as measured in UTC until the date/time of expiration." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_uri:1 -#: c7ec8c5c04bd41fa87825f3d6f4e71b3 +#: b0291c41aa9c4f2c8f66a0c71b9b4711 msgid "URL string of a web page providing information about the client." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.client_uri:3 -#: 8be313c7ec5848419e7a0062beefd60c +#: f478bd954ac24382b1de1588c419c6a2 msgid "If present, the server SHOULD display this URL to the end-user in a clickable fashion. It is RECOMMENDED that clients always send this field. The value of this field MUST point to a valid web page. The value of this field MAY be internationalized, as described in Section 2.2." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.contacts:1 -#: 133418eefb1d484ba26f492838063c04 +#: f6e323978f9a463cabca1ddcaa5f6d0b msgid "Array of strings representing ways to contact people responsible for this client, typically email addresses." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.contacts:4 -#: 4c4d89f737af445da4e7eb5882887e00 +#: de7fc414bed34c7aab0a55ad3cd826f4 msgid "The authorization server MAY make these contact addresses available to end-users for support requests for the client. See Section 6 for information on Privacy Considerations." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:1 -#: 5105e93451e946fea6c3fd0b09c19683 +#: 23b30053d45946ecaf4f2d8bc5469f90 msgid "Array of OAuth 2.0 grant type strings that the client can use at the token endpoint. These grant types are defined as follows:" msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:4 -#: 471bb398e08d45d588f320d2c25cb025 +#: 75a3dfb08d97436eb62cc7855c3610ea msgid "\"authorization_code\": The authorization code grant type defined in OAuth 2.0, Section 4.1." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:7 -#: c1785e60703f46e5a3a6e7131ba26894 +#: ae2400d35211470f9ad2dc29e743ecb0 msgid "\"implicit\": The implicit grant type defined in OAuth 2.0, Section 4.2." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:10 -#: 99ec3801466340bd83367ab92a351ac3 +#: 0af327a65a014400b624754d17db1304 msgid "\"password\": The resource owner password credentials grant type defined in OAuth 2.0, Section 4.3." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:13 -#: a62c7b8185ee4863aec423c5fe445ae5 +#: 33eb8a7321934eef8b1b8f7c77ca6e04 msgid "\"client_credentials\": The client credentials grant type defined in OAuth 2.0, Section 4.4." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:16 -#: 2fd298fce6974e4da2f670da31280955 +#: 986d1fe697094e24b8d1c5d9abcbe542 msgid "\"refresh_token\": The refresh token grant type defined in OAuth 2.0, Section 6." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:19 -#: 2fb0f1de8f46429eb46970d53c954d91 +#: 04635a2484cb4aa98c04ef7e6d06047e msgid "\"urn:ietf:params:oauth:grant-type:jwt-bearer\": The JWT Bearer Token Grant Type defined in OAuth JWT Bearer Token Profiles [RFC7523]." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:23 -#: dd4f8e0551e048d599a3f95740ea3cf1 +#: 30c6734c6f254c9ab0c1bd628606080d msgid "\"urn:ietf:params:oauth:grant-type:saml2-bearer\": The SAML 2.0 Bearer Assertion Grant defined in OAuth SAML 2 Bearer Token Profiles [RFC7522]." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.grant_types:27 -#: 241768369988480b8f79cae93fa06ff4 +#: cde679d2d9524468863e856afe8a7b60 msgid "If the token endpoint is used in the grant type, the value of this parameter MUST be the same as the value of the \"grant_type\" parameter passed to the token endpoint defined in the grant type definition. Authorization servers MAY allow for other values as defined in the grant type extension process described in OAuth 2.0, Section 4.5. If omitted, the default behavior is that the client will use only the \"authorization_code\" Grant Type." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.jwk:1 -#: 779d5b8c355f4e469d0880100f197dbd +#: 03fcc115c5ff4506bdd2a9adef32c993 msgid "Client's JSON Web Key Set [RFC7517] document value, which contains the client's public keys." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.jwk:4 -#: 786a840808f042fdb3a97eb1bd7f7a98 +#: 02fefaf4edc14d88ad63f66d929fbc8f msgid "The value of this field MUST be a JSON object containing a valid JWK Set. These keys can be used by higher-level protocols that use signing or encryption. This parameter is intended to be used by clients that cannot use the \"jwks_uri\" parameter, such as native clients that cannot host public URLs. The \"jwks_uri\" and \"jwks\" parameters MUST NOT both be present in the same request or response." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.jwks_uri:1 -#: 29bbb97b4b0545df84cf23ec1e6b14cf +#: 3517e8d1433c4a29af4e1a37e51745b0 msgid "URL string referencing the client's JSON Web Key (JWK) Set [RFC7517] document, which contains the client's public keys." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.jwks_uri:4 -#: 4021b5fbeabb464d938a3903ef7e718b +#: a4cea848089b4921b616a4cc682df264 msgid "The value of this field MUST point to a valid JWK Set document. These keys can be used by higher-level protocols that use signing or encryption. For instance, these keys might be used by some applications for validating signed requests made to the token endpoint when using JWTs for client authentication [RFC7523]. Use of this parameter is preferred over the \"jwks\" parameter, as it allows for easier key rotation. The \"jwks_uri\" and \"jwks\" parameters MUST NOT both be present in the same request or response." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.logo_uri:1 -#: 723f17b9b9df481394bcff341b2730b1 +#: 1058da51ab304a729c47f357ba058b65 msgid "URL string that references a logo for the client." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.logo_uri:3 -#: 6b1a034be4f248e98f185c7a0ef2c3b5 +#: 897286c50a844afeaa8822854d80c376 msgid "If present, the server SHOULD display this image to the end-user during approval. The value of this field MUST point to a valid image file. The value of this field MAY be internationalized, as described in Section 2.2." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.policy_uri:1 -#: 92446c1f45fc4da9bf18fed32b046f26 +#: 3b42d4ff71e940519fe684fb1ff948f7 msgid "URL string that points to a human-readable privacy policy document that describes how the deployment organization collects, uses, retains, and discloses personal data." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.policy_uri:5 #: ../../docstring of canaille.oidc.basemodels.Client.tos_uri:5 -#: 470f3a6ebe5a470d97207d2d724d7a50 -#: 470f3a6ebe5a470d97207d2d724d7a50 +#: 8b45eca8d1ba446abf902daadf5e1fda +#: 3387991465b848b2a30d39647bbb4957 msgid "The authorization server SHOULD display this URL to the end-user if it is provided. The value of this field MUST point to a valid web page. The value of this field MAY be internationalized, as described in Section 2.2." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.post_logout_redirect_uris:3 -#: 80775602163f4c4eae2aa73101fb4a59 +#: fc67d35b36e44cf8aba020e20ed0541f msgid "Array of URLs supplied by the RP to which it MAY request that the End-User's User Agent be redirected using the post_logout_redirect_uri parameter after a logout has been performed. These URLs SHOULD use the https scheme and MAY contain port, path, and query parameter components; however, they MAY use the http scheme, provided that the Client Type is confidential, as defined in Section 2.1 of OAuth 2.0 [RFC6749], and provided the OP allows the use of http RP URIs." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.redirect_uris:1 -#: 9864218626a9495d837ca07ecabe2e83 +#: 9a33ca942bb24edf8a01c21608ea2f73 msgid "Array of redirection URI strings for use in redirect-based flows such as the authorization code and implicit flows." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.redirect_uris:4 -#: a1f4e7a342764daf9b91f5c582e0d704 +#: 68f13c9e8ebb40aeb80f1f8646b9c17a msgid "As required by Section 2 of OAuth 2.0 [RFC6749], clients using flows with redirection MUST register their redirection URI values. Authorization servers that support dynamic registration for redirect-based flows MUST implement support for this metadata value." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.response_types:1 -#: 2b675d8a76b64442baaf96288a99145f +#: 14f38992c4cd441ebbc8581b5cfc81ed msgid "Array of the OAuth 2.0 response type strings that the client can use at the authorization endpoint. These response types are defined as follows:" msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.response_types:5 -#: 3f19f3d3bf244c669c336230f4e548e5 +#: f10a2f7b651b49f3a478805baa7d1ba7 msgid "\"code\": The authorization code response type defined in OAuth 2.0, Section 4.1." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.response_types:8 -#: 8be17e9ef4c642a0a227974a40450da2 +#: 5afdef305ded4cb09fd75ef4733d4a7a msgid "\"token\": The implicit response type defined in OAuth 2.0, Section 4.2." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.response_types:11 -#: 3be1d7f3ab82407ebcf77c9ad6294934 +#: 31436e43c2444893993f0537a739bb97 msgid "If the authorization endpoint is used by the grant type, the value of this parameter MUST be the same as the value of the \"response_type\" parameter passed to the authorization endpoint defined in the grant type definition. Authorization servers MAY allow for other values as defined in the grant type extension process is described in OAuth 2.0, Section 4.5. If omitted, the default is that the client will use only the \"code\" response type." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.scope:1 -#: 99bf5a0735f3490eb63943c7926eb165 +#: ee96854b70914411b34d691bee4ea794 msgid "String containing a space-separated list of scope values (as described in Section 3.3 of OAuth 2.0 [RFC6749]) that the client can use when requesting access tokens." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.scope:5 -#: d9c4d3be73ae454fbc08c0452c4cafba +#: 867579989e8343099f2645ec3daae661 msgid "The semantics of values in this list are service specific. If omitted, an authorization server MAY register a client with a default set of scopes." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.software_id:1 -#: ee3bd26091c94945b33584e781c19370 +#: c267bd27bc0643dfa799a288bba6898c msgid "A unique identifier string (e.g., a Universally Unique Identifier (UUID)) assigned by the client developer or software publisher used by registration endpoints to identify the client software to be dynamically registered." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.software_id:6 -#: 8fd0e02b12354b72b7175ade2536eac3 +#: b39f9748f4d94612bce4bbafa631edb5 msgid "Unlike \"client_id\", which is issued by the authorization server and SHOULD vary between instances, the \"software_id\" SHOULD remain the same for all instances of the client software. The \"software_id\" SHOULD remain the same across multiple updates or versions of the same piece of software. The value of this field is not intended to be human readable and is usually opaque to the client and authorization server." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.software_version:1 -#: 2d69ee9b36d244ec98fb0ca3135ac74f +#: 1c86069cf82d405b80e9449c82ecd79e msgid "A version identifier string for the client software identified by \"software_id\"." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.software_version:4 -#: 0da082aab3354aad8196b87ea111796f +#: 76d6a1a3931a4366a86c58de3c921b06 msgid "The value of the \"software_version\" SHOULD change on any update to the client software identified by the same \"software_id\". The value of this field is intended to be compared using string equality matching and no other comparison semantics are defined by this specification. The value of this field is outside the scope of this specification, but it is not intended to be human readable and is usually opaque to the client and authorization server. The definition of what constitutes an update to client software that would trigger a change to this value is specific to the software itself and is outside the scope of this specification." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.token_endpoint_auth_method:1 -#: e666c285e9d0483a8b06ed07b9596fd1 +#: a931df28521e48ac9f2e294e6b40c1af msgid "String indicator of the requested authentication method for the token endpoint. Values defined by this specification are:" msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.token_endpoint_auth_method:4 -#: 75019e0ffa134fe0a48fc885130c97ee +#: d03d2336b72748abb03b7629c8cb236c msgid "\"none\": The client is a public client as defined in OAuth 2.0, Section 2.1, and does not have a client secret." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.token_endpoint_auth_method:7 -#: 6d1fcab0de3a41e18101687e93c45444 +#: 1d75c85686a6406e80c0609011503309 msgid "\"client_secret_post\": The client uses the HTTP POST parameters as defined in OAuth 2.0, Section 2.3.1." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.token_endpoint_auth_method:10 -#: 75493a43244c4357842d2fdfa745f330 +#: 3fce72a657484e9987ed472193f364a2 msgid "\"client_secret_basic\": The client uses HTTP Basic as defined in OAuth 2.0, Section 2.3.1." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.token_endpoint_auth_method:13 -#: 070320a7585e4d9ba744cbaed1593208 +#: 01d6f8a488754b5f8da1973c101cffdb msgid "Additional values can be defined via the IANA \"OAuth Token Endpoint Authentication Methods\" registry established in Section 4.2. Absolute URIs can also be used as values for this parameter without being registered. If unspecified or omitted, the default is \"client_secret_basic\", denoting the HTTP Basic authentication scheme as specified in Section 2.3.1 of OAuth 2.0." msgstr "" #: ../../docstring of canaille.oidc.basemodels.Client.tos_uri:1 -#: 95cc7b66c6da48e5a189a32abaa9c24e +#: a87b9ed913e74134a96ab13db76ac51f msgid "URL string that points to a human-readable terms of service document for the client that describes a contractual relationship between the end-user and the client that the end-user accepts when authorizing the client." msgstr "" #: ../../canaille/oidc/basemodels.py:docstring of canaille.oidc.basemodels.Consent:1 -#: bf6c359aadbc4404ba1967b1b8d26255 +#: 1ce3e3e8887242d4887f1d65ded91a08 msgid "Long-term user consent to an application." msgstr "" #: ../../canaille/oidc/basemodels.py:docstring of canaille.oidc.basemodels.Token:1 -#: a20eaa516c854599a62222141346d76b +#: 5165dd5a43e7441cb556b288dd912159 msgid "OpenID Connect token definition." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_account_lockability:1 -#: 51e69cc91e5b411db5b8ebdb30702245 +#: e317757c8739489cb4c606d40a90cb90 msgid "Indicate whether the user accounts can be locked." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_account_lockability:3 -#: e8475984eb0f465f97109240832fc978 +#: 4935317ffeda47b785292d21e926c3a3 msgid "It depends on the backend used by Canaille. This is only disabled for OpenLDAP versions under 2.6." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_email_confirmation:1 -#: db40ea1562de466b8cd314d95f04fb64 +#: 2970459a63174e829259ae220ec911dc msgid "Indicate whether the user email confirmation is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_email_confirmation:3 -#: 24739facc2bd4c75aaabe0ab4f870c52 +#: c1079035d9be414983104194b2ab2120 msgid "It is controlled by the :attr:`CANAILLE.EMAIL_CONFIRMATION ` configuration parameter." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_email_otp:1 -#: 21ca21a9a0c240f7899bc11bca2da3b0 +#: 479b07160b35479abc87e2221bec17b2 msgid "Indicate whether the email OTP authentication factor is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_email_otp:3 -#: e064888816ad4e228797af005daa0c1b +#: e84db66b26a44edfa4dc1e6cbde4a367 msgid "It is controlled by the :attr:`CANAILLE.EMAIL_OTP ` configuration parameter." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_intruder_lockout:1 -#: 1998dd6eda9e42f981d690ad9c3114d3 +#: 61712b4872ac426aa90f58eee9fe9e4c msgid "Indicate whether the intruder lockout feature is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_intruder_lockout:3 -#: f673ed471ad545b18ac0693ba051f9ba +#: aef23f3499454b14b5bd0b7bbfec559d msgid "It is controlled by the :attr:`CANAILLE.ENABLE_INTRUDER_LOCKOUT ` configuration parameter." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_oidc:1 -#: 07510d9a21e7471a86b8cb67ebd3f818 +#: 2aabb9553b6949709c73253180bd4d4e msgid "Indicate whether the OIDC feature is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_oidc:3 -#: aabe8d66effa4394829dee8ebdbc387b +#: 82fb878e33854d91b056aa833b95c490 msgid "This feature is required to make Canaille an authorization server for other applications and enable SSO. It is controlled by the :class:`CANAILLE_OIDC ` configuration parameter, and needs the ``oidc`` extra package to be installed." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_otp:1 -#: aa9a89f7384f49e680ea30d8baa145b3 +#: 7b629967c62d4d4082395fd70d845fac msgid "Indicate whether the OTP authentication factor is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_otp:3 -#: 97dbc9427f2942639739f4ca336b2c5f +#: 04109fcdb7c5458290d27321fe20d363 msgid "It is controlled by the :attr:`CANAILLE.OTP_METHOD ` configuration parameter, and needs the ``otp`` extra package to be installed." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_password_recovery:1 -#: be057526037b4c0ca9eeadd4d59faf00 +#: 30f3561a2c7f4f82940e8659e07b9fce msgid "Indicate whether the password recovery feature is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_password_recovery:3 -#: 25817e283da2497d805bfcad9c0175cf +#: 8dbab1baf660461b957ab458b86f8d1a msgid "It is controlled by the :attr:`CANAILLE.ENABLE_PASSWORD_RECOVERY ` configuration parameter." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_registration:1 -#: 625966afc8b04095b75167729f416662 +#: 1a46b31407b94556b7d7ba1b1efb72b5 msgid "Indicate whether the user account registration is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_registration:3 -#: 2805f75ef1fb4cd0832d589018d21548 +#: 8a808dd6387b49d69a88d23b8da5c3de msgid "It is controlled by the :attr:`CANAILLE.ENABLE_REGISTRATION ` configuration parameter." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_scim_server:1 -#: aaecfeba0f154fe2977fa24558dac7f8 +#: b6353866864746679e731902db3a6ad5 msgid "Indicate whether the SCIM server feature is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_scim_server:3 -#: f585e4196fbb439189756d2389b6c9fc +#: 0e4e8b0c28bf4ff893e4b015d4c045e3 msgid "This feature is required to make Canaille a provisioning server. It is controlled by the :attr:`CANAILLE_SCIM.ENABLE_SERVER ` configuration parameter, and needs the ``scim`` extra package to be installed." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_sms_otp:1 -#: 961e256a62724e12aafb8a09b127b0fd +#: 46464c2c705e4b34b764e4c2442678c7 msgid "Indicate whether the SMS OTP authentication factor is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_sms_otp:3 -#: 9f61b04bb6874c56a8774ff9c10a23e3 +#: 5138fc9cb274425b86314c1a729a4ab9 msgid "It is controlled by the :attr:`CANAILLE.SMS_OTP ` configuration parameter, and needs the ``smpp`` extra package to be installed." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_smtp:1 -#: 3a89ac39a9e643149dc0173956a001a3 +#: 6252fb79e38d40f5b8826dfe87efd84c msgid "Indicate whether the mail sending feature is enabled." msgstr "" #: ../../canaille/app/features.py:docstring of canaille.app.features.Features.has_smtp:3 -#: 28bd58a812e84704a83f61aa5e9f0832 +#: 849b7de93582432cb12e533cacf3d864 msgid "This feature is required to :attr:`validate user email addresses `, send email OTP passwords etc. It is controlled by the :attr:`CANAILLE.SMTP ` configuration parameter." msgstr "" #: ../references/templates.rst:2 -#: 25d974aba30140f4ad6e3445c3d71f50 +#: 5f9d52fbb7344304a33a0eb7cfb015fb msgid "Templates" msgstr "" #: ../references/templates.rst:4 -#: 29dfdb16379245fbb820e7677490ee2a +#: 0ec160217743460aa21c2c99a386524f msgid "This references the template files, their role and the variables available in their contexts. The intended audience for this reference is designers wishing to build their custom Canaille theme." msgstr "" #: ../references/templates.rst:8 -#: a9dc7731e37b4ca3900d9a269af917b2 +#: c4dae69dc590432f9691c0d763f7df8c msgid "Base" msgstr "" #: ../references/templates.rst:10 -#: 0083cf8f344a4aebb0db66182082b38e +#: 2d86d946bebb41a69933f921f2b7312d msgid "Those templates are shared by all the pages rendered by Canaille." msgstr "" #: ../references/templates.rst:13 #: ../references/templates.rst:35 #: ../references/templates.rst:53 -#: b7454449e2d74b1ba858b35dd9506974 -#: 017f3391e5324507b57d461e17c87379 -#: d98c6d77a83046edba83238c1c41f765 +#: a5a0c7c729174b69b7161dbc8abbd969 +#: 298198cd92ec45a490362f33c0e75741 +#: 74c0ab51e1da40efb5b75f98868222a9 msgid "Template files" msgstr "" #: ../../:1 -#: 8da82919623541cf99ddb3719a66ce6c +#: 7be0a83bad854553b20777a2a0782d23 msgid "The main template inherited by almost every other templates." msgstr "" #: ../../:1 -#: 0302eac895db4e9192dcda1cf138e681 +#: ade7caad09f74fbbbb8e6ae9276e3be8 msgid "The current user, if logged in." msgstr "" #: ../../:1 -#: e3c9d7ed1b37441a9ea451dc09bf0256 +#: 276fe3eb9c3346dd987a579dad80e69b msgid "The features enabled and available in Canaille." msgstr "" #: ../../:1 -#: 92d32aa698334d27bccff184e7f56f4a +#: 2d0ad06c56034e4296882043db94e127 msgid "The user locale." msgstr "" #: ../../:1 -#: 46c7365e792d4e44bd0964d401ba3d8d +#: bc1a541d4be4473d9ea86978fb5cbd9f msgid "The Canaille instance defined in :attr:`~canaille.core.configuration.CoreSettings.NAME`." msgstr "" #: ../../:1 -#: 4eb0dc013f754cd19b2b0ead85436fc2 +#: e4a5a4c5dc6f40cdb50a5bbd11ad13ca msgid "The URL of the instance logo defined in :attr:`~canaille.core.configuration.CoreSettings.LOGO`." msgstr "" #: ../../:1 -#: 36b2a2855bb84f5a82440c1ce7a066af +#: a2c4eb224d834cfa8438bfa3da66f569 msgid "The URL of the instance favicon defined in :attr:`~canaille.core.configuration.CoreSettings.FAVICON`." msgstr "" #: ../../:1 -#: b5502e90eb964459b7477ba8cfd4bb56 +#: d547da6f559b42d78fb3a73d97f0447e msgid "Whether the page is boosted by :attr:`~canaille.core.configuration.CoreSettings.HTMX`." msgstr "" #: ../../:1 -#: abaac915defc44a39bb760b0fa1ca058 +#: e96fbba85e69401794cd24472a510920 msgid "Whether to display the menu or not." msgstr "" #: ../../:1 -#: 4a846a9c1bf04b76bce93d3f51c2c63a +#: 915e2d15e72f448581b4232462138de8 msgid "Whether the app has been launched in debug mode." msgstr "" #: ../../:1 -#: 9a6481ec7a844690a56433119b0a980a +#: 8e94e267a2e24fd086ff86ca5dd2d000 msgid "The error page. Displayed for all kinds of errors (not found, internal server error etc.)." msgstr "" #: ../../:1 -#: 3c9236009d544093ab37e413f94d45b3 +#: 2306a7ac505241a7be52428c377fdf3b msgid "The code of the HTTP error (404, 500, etc.)" msgstr "" #: ../../:1 -#: 072ab6b535b245c0b5c16c84a51e0293 +#: 4bacf1c221314a0caa4206f59268df11 msgid "The error code description." msgstr "" #: ../../:1 -#: 01363257f0fd47a9beba953b1580f6f2 +#: d55fefef1f0142afae9079c733167f2d msgid "An optional Font Awesome icon reference." msgstr "" #: ../../:1 -#: 5eee8575ceec4ab6bb88624d75a23204 +#: 0a534694c6044876aa823571cc6431d6 msgid "Macros for Flask flash message rendering" msgstr "" #: ../../:1 -#: 6df3858522a34bc181b21c3985dab099 +#: de9e78670ac34fd2a8bfeb84e5fd449a msgid "Macros for form and form field rendering." msgstr "" #: ../../:1 -#: 45d3e7a61b2247f0b294c31fcdfd752b +#: 010fef6420b54e9fa0030bff7cf89d66 msgid "Connects WTForms, Fomantic-UI and HTMX." msgstr "" #: ../../:1 -#: 29a5444bd2c545e3a16b992c005e6626 +#: 722e1cc69d054b6b90eccbbf14d34fe4 msgid "Macros for rendering table paginated with HTMX." msgstr "" #: ../references/templates.rst:22 #: ../references/templates.rst:40 #: ../references/templates.rst:58 -#: 4e87bb3eb49f4aef877cc6d31a2141b8 -#: 10827c0bcbb14fc3a1b8054d412a9a7d -#: a1745ac8a300467b9a58c9ae79837332 +#: c1141c3140ed49efb429fe7e0ddb07d5 +#: f66b89d5a0514f8fbc41b532ceb496b6 +#: ddd9f189d96f48cb92e11a1819d26a8f msgid "Forms" msgstr "" #: ../../canaille/app/forms.py:docstring of canaille.app.forms.TableForm:1 -#: 438cfba9a79f484b9721d0f91a75b81a +#: 391264c8ae9342b98ccd4af5cfbcf383 msgid "Bases: :py:class:`~canaille.app.forms.I18NFormMixin`, :py:class:`~flask_wtf.form.FlaskForm`" msgstr "" #: ../../canaille/app/forms.py:docstring of canaille.app.forms.TableForm:1 -#: 57e0185db0a449f485f8c651f063748f +#: bbbef09257294353ae83fcc921eca400 msgid "A form for table rendering of object collections." msgstr "" #: ../references/templates.rst:30 -#: 162e7b075ee14548a43f9cff48b480a2 +#: a6ad4ce568a44098a9e487453d689dd5 msgid "Core" msgstr "" #: ../references/templates.rst:32 -#: 006bb138232740cdba8de572fe62fa24 +#: 43fe331ad9c54541ac476bbe141b0a51 msgid "The core templates are displayed in the authentication and profile edition pages." msgstr "" #: ../../:1 -#: e38aa98840094488a64497fcdbaa0264 +#: d19a70214ef0419bb0ce07ea39578834 msgid "The 'About' page. This is an informational page, displaying the project links." msgstr "" #: ../../:1 -#: 4c4ed92740f14deb87533cfa65ee80bf +#: 51aba32d8e6d4e43ab37c3042b830e3a msgid "The current Canaille version." msgstr "" #: ../../:1 -#: d95f55f7f9ff4b5f9686be3dc9a7847f +#: d296db599ed840dda1ffa1af92ce9e15 msgid "The first login page." msgstr "" #: ../../:1 -#: 25602187d8a1450d93af69c3a5cb8676 +#: da37d9d1681e41b7beb4d8eb1f52ee17 msgid "This page is displayed to users who do not have set a password yet." msgstr "" #: ../../:1 -#: b40d8dbabfb942b9a7e43fd2be5260fb +#: 41cf2f06296f4529825add3e93ecce87 msgid "Password forgotten page." msgstr "" #: ../../:1 -#: 168380710d5343d3ab70eaa096d1eaba +#: 5544ff3d795643299723088da49f54d2 msgid "This page displays a form asking for the email address of users who cannot remember their password." msgstr "" #: ../../:1 -#: c5a709077f1948dc85448baca9d505b2 +#: 91f95a21d2cf4cd682dbf7622895f744 msgid "Group edition page." msgstr "" #: ../../:1 -#: 1d741cc01a7b477ebe6484f595b1ae27 +#: eb70b7161ea14a59800362c10a234635 msgid "Displays the group edition or creation form." msgstr "" #: ../../:1 -#: 1bb598284f574fadb4afdaa186936d45 +#: 8b37ea965e5e49358b31b3f72980cd14 msgid ":data:`None` in a creation context. In edition context this is the edited group." msgstr "" #: ../../:1 -#: cfb58971b75b4288af102ce52358148d +#: c34b493558f041089780f1ee6d8bc0cb msgid "The group edition/creation form." msgstr "" #: ../../:1 -#: 6a01b239a7364e059ac20e5c32156147 +#: e6f30f59e1984b9696c77b053200c933 msgid "The group list page." msgstr "" #: ../../:1 -#: 8f596f7adabe4f35be79f5f12beb5e50 +#: 1123e6271a2547938e77a710f559788a msgid "A :class:`~canaille.core.models.Group` pagination form." msgstr "" #: ../../:1 -#: b7309cf53df840c1ba19e7177f27c99f +#: bb18bceefbe644b39f75dd515e56f4f0 msgid "The invitation form page." msgstr "" #: ../../:1 -#: 9fd33d67aac641e7a5c4fc9098332edc +#: 84e88c0d7f8146e7b245b725fa1527a1 msgid "Displays the invitation form to users with the invitation permission." msgstr "" #: ../../:1 -#: 06e9aef4cee8405f96f76c99084ab2ef +#: e6ed714de65843e5bf138d95d9d61316 msgid "The invitation form." msgstr "" #: ../../:1 -#: 50937b6a974343eab8527a1977b6280a +#: dd60812049374cd18c7d3cfa6dfaec5c msgid "The invitation acceptation page." msgstr "" #: ../../:1 -#: 5781a7c918ac43d0842b01eb38b74cd5 +#: 8c9de3bd5fd64142b2f1b40644c04114 msgid "This page is displayed to users who have clicked on invitation links sent by mail (or by other media). It displays a basic account creation form." msgstr "" #: ../../:1 -#: b447524d0fb1461b81bf503c13eb3788 +#: f3767e9183b5463b8dc502ac64917496 msgid "The account creation form." msgstr "" #: ../../:1 -#: 6f56b461666743eabb55c179df25b96b +#: f8d7f98b7554401081a21e260a78f706 msgid "The login page." msgstr "" #: ../../:1 -#: 0160e1cfedb04735a642a373eba00f85 +#: 735e538185894b8282b972ca8b9d3426 msgid "This page displays a form to get the user identifier." msgstr "" #: ../../:1 -#: d2c554cbdaa941f089c6e1d178e2c40a +#: 013c3dbd2c544946b7d26f65bf77a272 msgid "The login form." msgstr "" #: ../../:1 -#: 5bf5c4af6d5949978459c9558e5959c0 +#: 81b9105d642d4fadaec60fe2f3ae2b2b msgid "User account creation page." msgstr "" #: ../../:1 -#: 052f0f9a73e54baa90e2beb51100c62f +#: ad5a3f08284e4d97bb932d57aa7d689e msgid "This template displays an account creation form. It is used in the registration page, and in the manual account creation page available for users with *user management* permission." msgstr "" #: ../../:1 -#: 32e07b796f2542448a5c4f651407e05e +#: c4c05e7a207c4a55a3be41d8f4b25339 msgid "The user creation form. Dynamically built according to the user :attr:`~canaille.core.configuration.ACLSettings.READ` and :attr:`~canaille.core.configuration.ACLSettings.WRITE` permissions. The available fields are those appearing in *READ* and *WRITE*, those only appearing in *READ* are read-only." msgstr "" #: ../../:1 -#: 94e9b36ee7a04d4db509845398904973 +#: 242018ca141f4b478d46d6837d5e2d70 msgid "The profile edition template." msgstr "" #: ../../:1 -#: b86d69135b324d5b879980406f1b321b +#: f330ada37637476fb4bdb1c84a2ae6ea msgid "Displays a user profile edition form." msgstr "" #: ../../:1 -#: b7dedbaafbf4421dad65efa4edb64bc7 -#: f4ab6a408b4846a28755a25c75d49e9d +#: 4c2881082edb4939b2915eadb7ab9bef +#: 010d499b81f04fb199ed2ba1931ee496 msgid "The user that the form will edit." msgstr "" #: ../../:1 -#: e971a69e070545b6a3efb2ef229a5e78 -#: 57372626a5504526a6602a9903be25f3 +#: 8866fc8c9c8e4bf6a3a2f677fd272d3a +#: 4f5e9a4af8cd4f50a56d6ba6f8e5e853 msgid "The user profile edition form. Dynamically built according to the user :attr:`~canaille.core.configuration.ACLSettings.READ` and :attr:`~canaille.core.configuration.ACLSettings.WRITE` permissions. The available fields are those appearing in *READ* and *WRITE*, those only appearing in *READ* are read-only." msgstr "" #: ../../:1 -#: 232f10ffd4634e3e8d30fd95968ff20e +#: c4f0fe40593a4ffaa798eca30b4aac78 msgid "An email edition form. Used when the :attr:`~canaille.app.features.Features.has_email_confirmation` feature is enabled." msgstr "" #: ../../:1 -#: 6f083b8c024042d2afc6e830605fcb29 +#: 779dc49b2ca248c4b05af1ddacec02b6 msgid "The profile settings template." msgstr "" #: ../../:1 -#: 1e1b6ca57eee407ea373fabfa6b68203 +#: 40f89421dbc748bca7235657984eb30f msgid "Displays the user settings edition form." msgstr "" #: ../../:1 -#: 79751bf3182a4e728ce7c771919c012e +#: ea6777c05f4a4e62b2e2385062c6dc8f msgid "Whether the editor is allowed to delete the account of the edited user." msgstr "" #: ../../:1 -#: f6fbc394bb0e4d23b2025ad9512ed7f8 +#: d1d48c1e0d9c43dca9c07b4617b609c1 msgid "The password reset template." msgstr "" #: ../../:1 -#: ac11fe027baa47d08507ce462ccf6521 +#: 61f93db68163494f9443a2954a20d7e9 msgid "Displays a password reset form." msgstr "" #: ../../:1 -#: 022dc36a70434d0cbbc929e6389ed667 +#: 5b94f171e4174999b79c79239f3a0e63 msgid "The password reset form." msgstr "" #: ../../:1 -#: b78ecf9a56b94a57a3b3708a76eb115e +#: 0179c0c333d049749ff14ac90ef2ed73 msgid "The user associated with the URL." msgstr "" #: ../../:1 -#: 2ad2199bf9a543bc89f2b1eab1575ed3 +#: 8cbae008b22349cab8e5647fbba5756e msgid "The secret link hash." msgstr "" #: ../../:1 -#: d33d88c5756d4573bff6aed0f8b22df9 +#: b0015de385324c26ab05aaae65cc53bc msgid "The multi-factor authentication initialization template." msgstr "" #: ../../:1 -#: fd9b649f626b4b3e93dc09db80ce6ca4 +#: 5f61ae62c1f54123872391a3b49eed9f msgid "Display a QR-code and the OTP secret." msgstr "" #: ../../:1 -#: 0f8aaa24949f428d91f05bb8ea510a5e +#: 1f370c74d1e44aeaa97929094036c1f1 msgid "The user initializing the OTP." msgstr "" #: ../../:1 -#: 23c8614367454fe48500f84535d7345d +#: a372567c3b3b4ff2a99da5b529c6597a msgid "The OTP secret." msgstr "" #: ../../:1 -#: ce26bc1edce5450e867c020efdf0879a +#: 16636bc9c47b44b79d22b301e102acb2 msgid "A QR-code image representing the OTP secret." msgstr "" #: ../../:1 -#: 5a2fdfda2f1346bf8027c51f73374f77 +#: d164582bacae40b7b2cc7474d6f9fb3e msgid "The users list." msgstr "" #: ../../:1 -#: 3578a4cf58144521ab2d0883f7aa772e +#: 882b8d87c79845379937941cc0c97219 msgid "Displays a paginated list of :class:`~canaille.core.models.User`." msgstr "" #: ../../:1 -#: 27156299d35549f6a45ff3b7ff201226 -#: c6be1b3ce3d840fb953550cdaf6e1a29 -#: 5cb81767c1704260bc729322c4d6d013 -#: 68d31f09582d4ec2ac3706a0f578de31 +#: 708426b50822492ea31a6c0da17b2c48 +#: 125a29d6209f4166bf05a177110f8daf +#: 70d1cef7e598494e868fdb5c6803edda +#: 7cfa3fb4f0f24c93aab1cf503a1a7223 msgid "The paginated list form." msgstr "" #: ../../:1 -#: 8f7a6ad97f984f7b90953f39a07c9bb5 +#: d56775ed9ad242d4836769c7eedf12f2 msgid "The multi-factor authentication code verification template." msgstr "" #: ../../:1 -#: 1180b06a92c045c189a11016f3d869b3 +#: 25a01008fa74404d9b4cd104c129c446 msgid "Displays a form that asks for the multi-factor authentication code." msgstr "" #: ../../:1 -#: 653c3e233b7e41b689dd61a1a575768f +#: 55e4772a75ef4013bd616b2a95f6f318 msgid "The code verification form." msgstr "" #: ../../:1 -#: c070afb39eb34d9b92862ae453876355 +#: fe2303972b36464c930cefc5633d251e msgid "The username of the user attempting to log-in." msgstr "" #: ../../:1 -#: 1995353d10d24e2e86c87864fc8b17cc +#: 28f6d34d343e49d4820c4954328a6831 msgid "The authentication factor method." msgstr "" @@ -6063,873 +6090,888 @@ msgstr "" #: ../../canaille/oidc/endpoints/forms.py:docstring of canaille.oidc.endpoints.forms.ClientAddForm:1 #: ../../canaille/oidc/endpoints/forms.py:docstring of canaille.oidc.endpoints.forms.LogoutForm:1 #: ../../canaille/oidc/endpoints/forms.py:docstring of canaille.oidc.endpoints.forms.TokenRevokationForm:1 -#: c6b8f8c4f50047c4ad6f8d99a6de0f22 -#: 66162ad74b1f491e9815987352e3f843 -#: 3d9992e3d5db4bd0928836aca626058a -#: 3b72a3535cb84d30a1e44d8b91b96903 -#: b95ae3bb349946949cb639e4ef9dc552 -#: 47a533342bda4ba2a94c62a94fcb70ad -#: 738540f528d74bcba2787fc6e25a04e1 -#: 79b58787a6954501a9b171492c9ba562 -#: cec55d6a542843f7bf4133f5e7160a89 -#: ba39e17ba4834e048f841ce0689e48ba -#: d5d0648bb1b543a4bcd2f863306b2bf8 -#: 9075862fb6944b5d93ec7c848595e7be -#: 99b9891b663544458c6c24aafbaa4355 -#: 43741eee6aed4f1885f590c4baf20f83 -#: 27c2b976b7ae469d9f82c19665688817 -#: 4d826f68173b4b47bac9d96a2abe03a7 +#: 7557d735c06048ccb03d3c4ffed21a1e +#: f5f7ab5ae7484c86a89b57c79ae4d9d6 +#: fb8d2b222f4b4d57abf77d5f8faafcc7 +#: d75199c9f7c0404e8853973b78f0215e +#: 9e95fee049e0435cbd4159781f1edd50 +#: 2cb77273b20c4212831821fbd01496a6 +#: 8c8d1dee54184a78812ac3d859aa7038 +#: e460257810ed4a33a7cb85fe807494ad +#: ec61c50a963d4d8fb3aa676239db3c5c +#: b9313e7cc1e546e0839ac8bd0fa1760e +#: 06303d0c8056424983870c202d19074f +#: 5a75a23845964be5b79acd05e664377a +#: 01c7c817569e47c991d87c04991e1b93 +#: 994f96504a2d4c4eae1c01b3ef956af4 +#: 69946c83cd194c83be75b93e19961443 +#: 364071d215404e7197f25862ad916888 msgid "Bases: :py:class:`~canaille.app.forms.Form`" msgstr "" #: ../../canaille/core/endpoints/forms.py:docstring of canaille.core.endpoints.forms.CreateGroupForm:1 -#: e4a35724e14d4581afe8c1d76256145b +#: bce83bbe98ba42a8aa85ba83608565c9 msgid "The group creation form." msgstr "" #: ../../canaille/core/endpoints/forms.py:docstring of canaille.core.endpoints.forms.EditGroupForm:1 -#: d3488ce4b62b455cbc5919a3592c5eaf +#: 6bc2bd87056e48ce9974042c0d00bfbc msgid "The group edition form." msgstr "" #: ../../canaille/core/endpoints/forms.py:docstring of canaille.core.endpoints.forms.InvitationForm:1 -#: a3b72e9abc8b44e9862481fe20209e3f +#: a909bb654e4c4565ac1ea27f28611b10 msgid "The user invitation form." msgstr "" #: ../references/templates.rst:50 -#: 16e60f31d5e549d8b0332ecdd2c8ec33 +#: 1e8006623dfc46f3871671308d57d286 msgid "The OIDC templates are displayed in the OIDC consent pages." msgstr "" #: ../../:1 -#: 6d3187567112498bafed8211d4e63aa9 +#: 7b424e4d64804074874788b1d21f10c4 msgid "The list of authorizations." msgstr "" #: ../../:1 -#: ab9ee4b402464232a04de5af272ec4a2 +#: 49a2e809fc454e9eb81444bfa5aea2fd msgid "Displays a paginated list of :class:`~canaille.oidc.basemodels.AuthorizationCode`." msgstr "" #: ../../:1 -#: af96456e16b5452da48beda8aa765d4d +#: 59ce05b851854f99b0eb2a80c72487c0 msgid "Authorization details template." msgstr "" #: ../../:1 -#: 60b6bca7f05c44c1863aeb04e3cc2f53 +#: b4c494183b864ab2a7c99778f68941c5 msgid "Displays details about an :class:`~canaille.oidc.basemodels.AuthorizationCode`." msgstr "" #: ../../:1 -#: 4ddc2e41ee114c249fcebd0f7a4e86f8 +#: 5044fed4cfb1448fa17f25b4328f8bc6 msgid "The detailed authorization." msgstr "" #: ../../:1 -#: 0b979bab813e4ff39f47fc84cc204598 +#: f737bff0908640b78e347324f2c5aa42 msgid "Consent request template." msgstr "" #: ../../:1 -#: 567c68d08849430da9230de7c671e93a +#: b34520f53fde44cf94788a8c83ea3f20 msgid "This templates is displayed to users accessing a new application that requests to access to personal information. It lists the personal information requested by the application, and offers the user to accept or decline." msgstr "" #: ../../:1 -#: 21f53e087f2148f39791bfc780edefb7 +#: 9585274c74414512be370fea928f1c78 msgid "The user whose consent is asked." msgstr "" #: ../../:1 -#: 48a0c4f1b88f4aaa9f10b158450a7bb1 +#: 5697b00cb677424f8c60d2ac42ce8e35 msgid "The OIDC grant." msgstr "" #: ../../:1 -#: f6bbf416c64247dbb06044aa221ab515 +#: 54d27cd742d645eea8d2b8d20258580d msgid "The client addition template." msgstr "" #: ../../:1 -#: acbe06b62ce6465b915b5678d5426a35 +#: e38ade13b3f34dcd8f06043609e0cf87 msgid "Displays a form to create a new :class:`~canaille.oidc.basemodels.Client`." msgstr "" #: ../../:1 -#: 3f0bb36f5d614523876371b9466e7861 -#: fc6afaad7f0040ba8bc9e5018bf3ebdd +#: 5a6e238a9dd04938b14706662f3ba7a6 +#: ab09685570cc4cfcb98550e38e2f08cd msgid "The client creation form." msgstr "" #: ../../:1 -#: 0c6c8a94ac7f41969c583a4e50c7f8c6 +#: 52c08a4adbab4524b7fe5b67e6fe2253 msgid "The client edition template." msgstr "" #: ../../:1 -#: fc89d67d55e84fa39dd02decf27c7ad0 +#: 7b0dfa914fa641d984e21ef0fad3112e msgid "Displays a form to edit a :class:`~canaille.oidc.basemodels.Client`." msgstr "" #: ../../:1 -#: 69829ae75e504c15a7042fa0d0ca9a45 +#: aef123f8ca564e2dac9acc501f3f26e2 msgid "The edited client." msgstr "" #: ../../:1 -#: e4137e9e29764f91ae4314a2b1b55ea9 +#: b22265b671f74acdbc32dde7f2d90d9a msgid "The list of OIDC clients." msgstr "" #: ../../:1 -#: e417b00de6f14e44b9fe8a0212f90d24 +#: 6c42ffb024e24aea9e96df3dd65675d1 msgid "Displays a paginated list of :class:`~canaille.oidc.basemodels.Client`." msgstr "" #: ../../:1 -#: 1d341bd4be4c40f9b475cab7f3899eac +#: 6fd5e350b6974fc3866228bbbbce8734 msgid "The OIDC logout template." msgstr "" #: ../../:1 -#: 4968bf02e5154f7d84a89f9790696370 +#: d2d905e9b7c649ceacf130530b983fc2 msgid "Used during OIDC RP-initiated logout, when an user confirmation is needed." msgstr "" #: ../../:1 -#: b8bf82eb3cac45a4853dcaf6f5ac1589 +#: c5ee6b63b12d450c839d00e524666077 msgid "The logout form." msgstr "" #: ../../:1 -#: b6c0b03d71bf4873ac7b8565605d158e +#: b9f9a3b61a7e4ec18d7758b91c7021a2 msgid "The client requesting the logout." msgstr "" #: ../../:1 -#: 5bac6224d1084ae98930ff6ccdb785f4 +#: 43ad2b30770e4df0af73574b37d2aa2a msgid "The preconsented applications list." msgstr "" #: ../../:1 -#: 9c634a235c2c4991b5e7af9769279832 +#: c702a3f0221d487499921bc257cceca5 msgid "Display a list of trusted clients for which it is implied that users don't need to explicitly give their consent." msgstr "" #: ../../:1 -#: c246254d28664995a358d16c42110b49 +#: a6823066956c4fc2b276df9d83388b4d msgid "Description of the OIDC scopes." msgstr "" #: ../../:1 -#: ae25aa3ac5a345e5a23f6770e33b3ba5 +#: 707d1dfb66c04f43aa1c3a325604c102 msgid "The scopes to hide." msgstr "" #: ../../:1 -#: 076793e823214f96b43e5066270c865c +#: cd04c23769714fc283d7545736cf76df msgid "The list of implicitly consented clients." msgstr "" #: ../../:1 -#: 81333f39450142f3b492f8fe7bd17957 +#: 82ad0acba372414b871d130c914abfb7 msgid "The number of consents." msgstr "" #: ../../:1 -#: 08c463165ae2487eadebc7a4ae928bd0 +#: daf494895b0c4ccca750e702b80f6169 msgid "The number of preconsented clients." msgstr "" #: ../../:1 -#: e6d5d68657fa4c5f964a902844cf443e +#: 8863e96ede17429c8c8290507298f75e msgid "The list of tokens." msgstr "" #: ../../:1 -#: a67dbec8f19c460eac41e22b702668ac +#: 9ee471727d394a3ca69aa57a1d1ce2a0 msgid "Displays a paginated list of :class:`~canaille.oidc.basemodels.Token`." msgstr "" #: ../../:1 -#: 7aa26abc05944ecd9afa89d71ca3f60a +#: 6f8e482728da4cc4a7cc230406724ac9 msgid "The token edition template." msgstr "" #: ../../:1 -#: 0051850e1f994570be480414cb1a8e50 +#: b032ea266259462482364e665f4e8d7d msgid "Displays the details of a token :class:`~canaille.oidc.basemodels.Token`." msgstr "" #: ../../:1 -#: 47975a2ecbce481f94ee843e3a77be73 +#: 4f81edbeefee48508c2f8b6cb1e2e197 msgid "A token revokation form." msgstr "" #: ../tutorial/databases.rst:4 -#: 2934007ee99c4b5096855dd9bf47208b +#: 5c79df402123406db2947c3941513130 msgid "Canaille can read and save data in different databases. This page presents the different database backends and their specificities:" msgstr "" #: ../tutorial/databases.rst:10 -#: 4d8d9b1634cf47eca9c118b3af6173df +#: fb804421e3114ddeba964dd491d4930f msgid "Canaille comes with a lightweight inmemory backend by default. It is used when no other backend has been configured." msgstr "" #: ../tutorial/databases.rst:13 -#: 5383f833c2634382a279cf9c2e9efff5 +#: 68262ac3da6b430584cf68823fef7dce msgid "This backend is only for test purpose and should not be used in production environments." msgstr "" #: ../tutorial/databases.rst:18 -#: 5c04f9416e954990a51ad770b994755d +#: 87f0d130dcaa4f8190956d5d1a772945 msgid "Canaille can use any database supported by `SQLAlchemy `_, such as sqlite, postgresql or mariadb." msgstr "" -#: ../tutorial/databases.rst:21 -#: 5cef0f1dda384284a256492c7b8dfcca +#: ../tutorial/databases.rst:24 +#: b8d6bb4ac80d41b08f0544154cdf26f4 msgid "It is used when the ``CANAILLE_SQL`` configuration parameter is defined. For instance:" msgstr "" -#: ../tutorial/databases.rst:29 -#: cedc3bb2dba0427b93cf11791b189c96 +#: ../tutorial/databases.rst:32 +#: 0ace17711acd4f70a5fddee46acd1f29 msgid "You can find more details on the SQL configuration in the :class:`dedicated section `." msgstr "" -#: ../tutorial/databases.rst:34 -#: fd9f8f823d184c72840274fd13de5b91 +#: ../tutorial/databases.rst:35 +#: 10baeaf0e5e64feba07dc33caa1c50ff +msgid "Migrations" +msgstr "" + +#: ../tutorial/databases.rst:37 +#: eddaa2b6515740d895284b1d2b49955a +msgid "By default, migrations are applied when you run the web application. You can disable this behavior with the :attr:`~canaille.backends.sql.configuration.SQLSettings.AUTO_MIGRATE` setting. Migrations are not automatically applied with the use of the CLI though." +msgstr "" + +#: ../tutorial/databases.rst:41 +#: dc824fe2ce9047a98a90bc5ac22b09d9 +msgid "Migrations are done with :doc:`flask-alembic `, that provides a dedicated CLI to manually tune migrations. You can check the :doc:`flask-alembic documentation ` and the ``canaille db`` command line if you are in trouble." +msgstr "" + +#: ../tutorial/databases.rst:47 +#: 8a13bd9f5910475bb70637ce82181eb9 msgid "Canaille can use OpenLDAP as its main database. It is used when the ``CANAILLE_LDAP`` configuration parameter is defined. For instance:" msgstr "" -#: ../tutorial/databases.rst:52 -#: dbd09fe39b724102813c8d259ad336f6 +#: ../tutorial/databases.rst:65 +#: 476b7dba11aa40b09e46cbfc9fe108d8 msgid "If you want to use TOTP/HOTP authentication, you will need to add the ``oathHOTPToken`` class to the user:" msgstr "" -#: ../tutorial/databases.rst:58 -#: fcbc8501c455465daa5142894408bb38 +#: ../tutorial/databases.rst:71 +#: 4e72e945162d43e3a2dddb9cc73c3dd7 msgid "You can find more details on the LDAP configuration in the :class:`dedicated section `." msgstr "" -#: ../tutorial/databases.rst:61 -#: 2c710def18bc46539b2962ee1bde2bf6 +#: ../tutorial/databases.rst:74 +#: ae34abf5095c4902b974c7371e352c0f msgid "Currently, only the ``inetOrgPerson``, ``oathHOTPToken`` and ``groupOfNames`` schemas have been tested. If you want to use different schemas or LDAP servers, adaptations may be needed. Patches are welcome." msgstr "" -#: ../tutorial/databases.rst:66 -#: b7014bf888504dcc865871e8275190f6 +#: ../tutorial/databases.rst:79 +#: 50561ef9299b4b178f99b9caa13aebb0 msgid "OpenLDAP overlays integration" msgstr "" -#: ../tutorial/databases.rst:68 -#: a67abbc0745e4c7e9353697969a4fbab +#: ../tutorial/databases.rst:81 +#: 3bfe9562b46643b19dee13f11b843626 msgid "Canaille can integrate with several OpenLDAP overlays:" msgstr "" -#: ../tutorial/databases.rst:71 -#: b1eebe57d90648b3b24cb48cb49c5436 +#: ../tutorial/databases.rst:84 +#: 57a61bc80e964a168c3cfde20793fddf msgid "memberof / refint" msgstr "" -#: ../tutorial/databases.rst:73 -#: 6bb596696373483ab0a52f0e8169ab9e +#: ../tutorial/databases.rst:86 +#: d0198ad99ed248f18c75fb6d20f84945 msgid "`memberof `_ and `refint `_ overlays are needed for the Canaille group membership to work correctly." msgstr "" -#: ../tutorial/databases.rst:77 -#: ../tutorial/databases.rst:100 -#: ../tutorial/databases.rst:123 -#: bff8a12ffd4b4d179d6938a046810186 -#: bff8a12ffd4b4d179d6938a046810186 -#: bff8a12ffd4b4d179d6938a046810186 +#: ../tutorial/databases.rst:90 +#: ../tutorial/databases.rst:113 +#: ../tutorial/databases.rst:136 +#: 20e9067e28e145bcabd5174d716a9ef9 +#: 20e9067e28e145bcabd5174d716a9ef9 +#: 20e9067e28e145bcabd5174d716a9ef9 msgid "Here is a configuration example compatible with canaille:" msgstr "" -#: ../tutorial/databases.rst:79 -#: d8858049d6d44b7cae4cbd659f9f8ba2 +#: ../tutorial/databases.rst:92 +#: 5dca73b931c0468eb5bbe6c6446dafe8 msgid "memberof-config.ldif" msgstr "" -#: ../tutorial/databases.rst:83 -#: 830059290ddc4cf1b2249c45fc303b98 +#: ../tutorial/databases.rst:96 +#: 5fb07fee21a64576b0764751cd206ab3 msgid "refint-config.ldif" msgstr "" -#: ../tutorial/databases.rst:87 -#: ../tutorial/databases.rst:110 -#: 4070700e524f481ba82662576453c6b3 -#: 4070700e524f481ba82662576453c6b3 +#: ../tutorial/databases.rst:100 +#: ../tutorial/databases.rst:123 +#: c7c63b9c7d0f405ea86fe9da06a5a7be +#: c7c63b9c7d0f405ea86fe9da06a5a7be msgid "You can adapt and load those configuration files with:" msgstr "" -#: ../tutorial/databases.rst:96 -#: e37e96d3eac048e191b4da59788b6096 +#: ../tutorial/databases.rst:109 +#: 193c7d9ce5224c5082f1d1802619c7f2 msgid "ppolicy" msgstr "" -#: ../tutorial/databases.rst:98 -#: 88ed660b0098483fa77e880febad6b52 +#: ../tutorial/databases.rst:111 +#: dd723bbdded6481eb77a87638b7043e8 msgid "If the `ppolicy `_ overlay is configured and the ``pwdEndTime`` attribute is available (since OpenLDAP 2.6), then account locking support will be enabled in canaille. To allow users to manage account expiration, they need to have a *write* permission on the :attr:`~canaille.core.models.User.lock_date` attribute." msgstr "" -#: ../tutorial/databases.rst:102 -#: 0194f8cb96554ed9a209784cd1a5a10e +#: ../tutorial/databases.rst:115 +#: 71e349aa00bd4fdead29c503c330fe1d msgid "ppolicy-config.ldif" msgstr "" -#: ../tutorial/databases.rst:106 -#: 09776d76a5c54f6eb7d79e15a0dbed82 +#: ../tutorial/databases.rst:119 +#: d2a999e876784f7fba94ee1c31e67954 msgid "ppolicy.ldif" msgstr "" -#: ../tutorial/databases.rst:119 -#: 7bb7048ad0234c28a245626aa50d9c62 +#: ../tutorial/databases.rst:132 +#: ffcc75b8614c45f5a45c20886313db2b msgid "otp" msgstr "" -#: ../tutorial/databases.rst:121 -#: 89b862fd590f4c49a156ed490b778051 +#: ../tutorial/databases.rst:134 +#: d2aa3bda5d4c4f77807eecedf1a8f7ad msgid "If the `otp `_ overlay is configured, you will be able to add one-time password authentication in canaille." msgstr "" -#: ../tutorial/databases.rst:125 -#: 0194f8cb96554ed9a209784cd1a5a10e +#: ../tutorial/databases.rst:138 +#: 2a30eb140e2e4c97b8da3144326b6086 msgid "otp-config.ldif" msgstr "" -#: ../tutorial/databases.rst:129 -#: 4070700e524f481ba82662576453c6b3 +#: ../tutorial/databases.rst:142 +#: 64b6e0b40dfd4236930973e51e84ce52 msgid "You can adapt and load this configuration file with:" msgstr "" -#: ../tutorial/databases.rst:136 -#: 14e54c22e9114f30b809b1605c494c6f +#: ../tutorial/databases.rst:149 +#: e93012fc7b054366b3c4a354f8a9bf92 msgid "You will also need to add the ``oathHOTPToken`` class to the user:" msgstr "" #: ../tutorial/deployment.rst:2 -#: f396d7b4fa884f55bf66b57b6c046fdb +#: 513d899ef6dc4daa8d4d1c80b8fe09db msgid "Deployment" msgstr "" #: ../tutorial/deployment.rst:5 -#: 2cbff8a64b41470396973c1f66482110 +#: 26a94e873f1d47cfbafd6540e505d700 msgid "Application service" msgstr "" #: ../tutorial/deployment.rst:7 -#: d60be98207bd489299d7492480a091c5 +#: 93f18dfd47d74293b2d4395f986d2df8 msgid "After having finished Canaille installation you have to run it in a WSGI application server. Here are some WSGI server configuration examples you can pick. Do not forget to update the paths." msgstr "" #: ../tutorial/deployment.rst:11 -#: cf41e4599bea477a8b6742ed38c09555 +#: e2f76491a3e1478ba424f5edd746c002 msgid "gunicorn" msgstr "" #: ../tutorial/deployment.rst:15 -#: 9f4888747a6d4f5d85d9b94bc2814aff +#: 82934b4c9e8c4ada9337c45654f68b77 msgid "Write a gunicorn configuration sample file." msgstr "" #: ../tutorial/deployment.rst:18 -#: beb61a6d85dc407c923f0a1797571b4b +#: 9dd0ac25fb264f0597b815ce11a6bfb3 msgid "uwsgi" msgstr "" #: ../tutorial/deployment.rst:42 -#: 804b59080cfb46a5bece65e9dfe52ae4 +#: 962996fed1da4efca4a4a02feebd33ef msgid "Webserver" msgstr "" #: ../tutorial/deployment.rst:44 -#: 3fd8ef72a9db483aaa18397b136708a4 +#: 47141e5a9bde40d2965553cc49bfe1ee msgid "Now you have to plug your WSGI application server to your webserver so it is accessible on the internet. Here are some webserver configuration examples you can pick:" msgstr "" #: ../tutorial/deployment.rst:48 -#: 40d9837c5cdd4c9faf94797e578e409d +#: 820201befbcc48c6b3361229592dc180 msgid "Nginx" msgstr "" #: ../tutorial/deployment.rst:114 -#: 5407fc49df8b4871a993d95ebe6b216e +#: e2214f07b495472f96579f40c1db65fa msgid "Apache" msgstr "" #: ../tutorial/deployment.rst:153 -#: 9e1ca64c07984a218f094949ed99bc6e +#: 9cbe3d556cc7426393b232f3d92365fa msgid "Recurrent jobs" msgstr "" #: ../tutorial/deployment.rst:155 -#: 283551b28f2d465a830885e57a802334 +#: e8352b7061ff460a8c5e98ab8df6b855 msgid "You might want to clean up your database to avoid it growing too much. You can regularly delete expired tokens and authorization codes with:" msgstr "" #: ../tutorial/deployment.rst:164 -#: 3a91c9769ca04ed289ef4e08d71c84e0 +#: 41e645107b2f4f429d10e13fdd10dfe3 msgid "Webfinger" msgstr "" #: ../tutorial/deployment.rst:166 -#: c0c2aa060ee743e797e0e0e69ed34aad +#: f9c13500454c4b66a5e07e4daf8ce527 msgid "You may want to configure a `WebFinger`_ endpoint on your main website to allow the automatic discovery of your Canaille installation based on the account name of one of your users. For instance, suppose your domain is ``mydomain.example`` and your Canaille domain is ``auth.mydomain.example`` and there is a user ``john.doe``. A third-party application could require to authenticate the user and ask them for a user account. The user would give their account ``john.doe@mydomain.example``, then the application would perform a WebFinger request at ``https://mydomain.example/.well-known/webfinger`` and the response would contain the address of the authentication server ``https://auth.mydomain.example``. With this information the third party application can redirect the user to the Canaille authentication page." msgstr "" #: ../tutorial/deployment.rst:168 -#: d4f07f118d4443bcbd44e55144cf4d1f +#: 4ab7ac8eeb9148c9a28a3e22f40fb859 msgid "The difficulty here is that the WebFinger endpoint must be hosted at the top-level domain (i.e. ``mydomain.example``) while the authentication server might be hosted on a sublevel (i.e. ``auth.mydomain.example``). Canaille provides a WebFinger endpoint, but if it is not hosted at the top-level domain, a web redirection is required on the ``/.well-known/webfinger`` path." msgstr "" #: ../tutorial/deployment.rst:170 -#: b305def4f6e74643b1c47e5491e46126 +#: 88e080b374de43a383b7eba9c2965280 msgid "Here are configuration examples for Nginx or Apache:" msgstr "" #: ../tutorial/deployment.rst:172 -#: f07e30950c0443ea830fb6d01181cbce +#: a88231c631134524a42f216c40811164 msgid "Nginx webfinger configuration for a top level domain" msgstr "" #: ../tutorial/deployment.rst:181 -#: f166862da12146e286d09f1189b44637 +#: 808e93094e5b413e8e1a4963bdb36b14 msgid "Apache webfinger configuration for a top level domain" msgstr "" #: ../tutorial/deployment.rst:191 -#: ed7f25a6ab90437984c0249217556b7a +#: c15c08cbe5f945c8898c5d23d90362d4 msgid "Create the first user" msgstr "" #: ../tutorial/deployment.rst:193 -#: e983e9c5998a475e9472c54742b25c9f +#: 4d268375e5ca48bfa9eb90fc4e3ffb44 msgid "Once canaille is installed, soon enough you will need to add users. To create your first user you can use the :ref:`canaille create ` CLI." msgstr "" #: ../tutorial/index.rst:2 -#: 40de96b13f0b46ba88769f9f0c91bece +#: b3789b9e712b4beeb246f85f9c49d48b msgid "Tutorial" msgstr "" #: ../tutorial/install.rst:2 -#: 990b0c4570294a4c914942072b835544 +#: 06039f8070f844df9fbda359223ebd9d msgid "Installation" msgstr "" #: ../tutorial/install.rst:6 -#: 1f5645b8ce114b08abc62b4f03e8d613 +#: 4e3bbb4435314752bfbc859bd161dadd msgid "Canaille is under heavy development and may not fit a production environment yet." msgstr "" #: ../tutorial/install.rst:8 -#: a76d3b71c19b4667a34e1d4b68261499 +#: 8969df93b0b149f181069407f24c4d0f msgid "The installation of canaille consist in several steps, some of which you can do manually or with command line tool:" msgstr "" #: ../tutorial/install.rst:11 -#: de05573555224e75869a68ac41471c97 +#: c23cda31d355445f9fee914f862a52a0 msgid "Get the code" msgstr "" #: ../tutorial/install.rst:13 -#: 8d5ce5f2ad284774a673cad8e1be2cc5 +#: 3d08ef96a8624845a45354bb4d39476d msgid "As the moment there is no distribution package for canaille. However, it can be installed with the ``pip`` package manager. Let us choose a place for the canaille environment, like ``/opt/canaille/env``." msgstr "" #: ../tutorial/install.rst:24 -#: 5e8dbf51cc8e401d8e7f2738c4c1e500 +#: 7a1b423ba1a84e3b89da2a77f850bae3 msgid "Extras" msgstr "" #: ../tutorial/install.rst:26 -#: ff09c579e2834394992e462c1a7830e6 +#: 84c6d479fc1e44129da6841676091c19 msgid "Canaille provides different package options:" msgstr "" #: ../tutorial/install.rst:28 -#: fba9a7d4ab8f42c1ba19ec58827c49bb +#: 7ec187fcd85a4d31b8db333db6173f83 msgid "`front` provides all the things needed to produce the user interface;" msgstr "" #: ../tutorial/install.rst:29 -#: 3c368569b3434d0c8821fcc5aa2a9fcd +#: fa166a769fee47e98b04ca3bc5baed57 msgid "`oidc` provides the dependencies to perform OAuth2/OIDC authentication;" msgstr "" #: ../tutorial/install.rst:30 -#: d2fa3adf12b04e879e8eb1ad5a86d131 +#: ccedd8c1040a46feba1f50af045d6387 msgid "`ldap` provides the dependencies to enable the LDAP backend;" msgstr "" #: ../tutorial/install.rst:31 -#: 9f0ac2527c844d26999ac4722b7a3062 +#: 6c5366eddd4a464ab031a8a0c427de48 msgid "`sqlite` provides the dependencies to enable the SQLite backend;" msgstr "" #: ../tutorial/install.rst:32 -#: 9f8652296fdd460d9d0885fd934a924f +#: a92c054fbc9d4dfdafe81c1c3afdefe8 msgid "`postgresql` provides the dependencies to enable the PostgreSQL backend;" msgstr "" #: ../tutorial/install.rst:33 -#: dba3b5d89e9e46c6b3774b01bf2ae122 +#: ffa21589e73f4ff89df7807eba77d409 msgid "`mysql` provides the dependencies to enable the MySQL backend;" msgstr "" #: ../tutorial/install.rst:34 -#: 3284b40cd5ff4177a9369e471dcd1de2 +#: 7f6b4a5423bd4119a59432e27daa023f msgid "`sentry` provides sentry integration to watch Canaille exceptions;" msgstr "" #: ../tutorial/install.rst:35 -#: 11d315c8ffbb415cab5068a2fb287590 +#: b817b267e4d54154adb9ad22bdfa5d06 msgid "`otp` provides the dependencies to enable one-time password authentication;" msgstr "" #: ../tutorial/install.rst:36 -#: c60670612f384704ad46fba12f41dcf9 +#: 6c6fd587ec504c20811d525a2c0a0bc2 msgid "`sms` provides the dependencies to enable sms sending;" msgstr "" #: ../tutorial/install.rst:37 -#: dfd39313c050407193deac1f01f23e54 +#: ee7eda989a3c4aaeb902d0f66f3fea3d msgid "`all` provides all the extras above." msgstr "" #: ../tutorial/install.rst:39 -#: 3d0f7f47cc1a469e9762578aed91f002 +#: 29ca33d87d8f46618e3ea5f89c4a63f1 msgid "They can be installed with:" msgstr "" #: ../tutorial/install.rst:46 -#: b7732a260ca84ba3a4130bd6cb0d1619 +#: 379636cc71c64f659bf2ebd1a5116854 msgid "Configure" msgstr "" #: ../tutorial/install.rst:48 -#: 86df5b7acf954ddfbb2982dbe0a51da1 +#: 6a6c9b6a1d9d42e3899e0b689311389a msgid "Choose a path where to store your configuration file. You can pass any configuration path with the ``CONFIG`` environment variable." msgstr "" #: ../tutorial/install.rst:56 -#: 042753d9c5704f21b0da35d38a17a620 +#: f710879df41b4abebcfdc30a67527d36 msgid "You should then edit your configuration file to adapt the values to your needs. Look at the configuration details in the :doc:`configuration <../references/configuration>` page." msgstr "" #: ../tutorial/install.rst:59 -#: a87138181fe64cd9891206619cad6d2d +#: c973e8ccd9364877bf39706b06656503 msgid "Install" msgstr "" #: ../tutorial/install.rst:61 -#: 2a7cde9a8ef54f6fb6b527734b5e471d +#: 64701944f4474d878ae759bd7e578bd9 msgid "The :ref:`install command ` will apply most of the things needed to get Canaille working. Depending on the configured :doc:`database ` it will create the SQL tables, or install the LDAP schemas for instance." msgstr "" #: ../tutorial/install.rst:70 -#: faefbbda355349e19671492f478d3153 +#: f00606bdf1284a4f8014282a323a6784 msgid "Check" msgstr "" #: ../tutorial/install.rst:72 -#: ab77edb446f44686bf26ef04fbf3dc7d +#: ccda38335f984f02a53d28b9a045e4cd msgid "After a manual installation, you can check your configuration file using the :ref:`check command `:" msgstr "" #: ../tutorial/provisioning.rst:2 -#: 96b0ed3d70cf436a80f82cf3cd89bf37 +#: 9d7ccfd105804dfca14df19021f0bb00 msgid "Provisioning" msgstr "" #: ../tutorial/provisioning.rst:4 -#: a4047f8d0f904f6799d549e2f65181b2 +#: 484d232863c540ef8a27fd528e3a60f1 msgid "Canaille partially implement the :rfc:`SCIM <7642>` provisioning protocol at the ``/scim/v2`` endpoint." msgstr "" #: ../tutorial/provisioning.rst:6 -#: 969c0c2d7d2a47de8fb1c7441ec62e2d +#: acd9d2bffc9042008283550b5dc7271a msgid "At the moment, only the server part is implemented. It allows client applications to manage user profiles directly in Canaille." msgstr "" #: ../tutorial/provisioning.rst:11 -#: 37c0e4ee9eb54f9f94754fec060e0ac5 +#: f96f385b8bdd453fa8dc5dfad64571d4 msgid "Some SCIM :ref:`features and endpoints ` are not implemented. In addition to these, Canaille will implement in the future:" msgstr "" #: ../tutorial/provisioning.rst:14 -#: a5d6aea95b444cbb9d10731986ae66ac +#: 2d6934f2d1de4397a5cfc88af92433ce msgid "Access control for clients on the SCIM API endpoint, to finely manage permissions depending on clients." msgstr "" #: ../tutorial/provisioning.rst:15 -#: 98d88ce07bc640bcafedee10c9bbc98f +#: 350b84195c284bdd9ae93eed7e2d47ff msgid "Client-side implementation, to broadcast user and groups modifications among all the clients." msgstr "" #: ../tutorial/provisioning.rst:20 -#: 706556a4f4de43658b7ee3583115216a +#: 12f015c76be64351862c7d36a87f4ce3 msgid "To allow clients to access the SCIM API, the client must have the ``client_credentials`` grant type configured. 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." msgstr "" #: ../tutorial/provisioning.rst:24 -#: 5abc69c6a6ff4cd48e3f2b01cdaa1a52 +#: d039cadee3494ada9106f9226b224ab5 msgid "Then the :attr:`CANAILLE_SCIM.ENABLE_SERVER ` configuration parameter must be enabled." msgstr "" #: ../tutorial/provisioning.rst:33 -#: 08c5f12f847f4376993010f11b7055e6 +#: f3a7fcf65cc545c4a7ad8ac2009b465e msgid "Implementation details" msgstr "" #: ../tutorial/provisioning.rst:35 -#: 163f28f6d3cf4d94bc60bddec6b1b25e +#: 2d162e0038714a3b9aea13a19a098bee msgid "Due to technical reasons, the Canaille *User* and *Group* resources implementation subtly differs from the :rfc:`RFC7643 <7643>` definitions:" msgstr "" #: ../tutorial/provisioning.rst:37 -#: 5e235bded8ba46ae94fe89b82341e3a9 +#: c8d0951c350640639249f99950282b08 msgid "``User.userName`` is immutable (while it is read-write in RFC7643)." msgstr "" #: ../tutorial/provisioning.rst:38 -#: 5c0be56ebf754660b7702622cd085221 +#: 76d54c1a256240818c4a5f84d43bf76f msgid "``User.name.familyName`` is required (while it is optional in RFC7643)." msgstr "" #: ../tutorial/provisioning.rst:39 -#: 35cfdbc7fd954036805a8b64bc46ae90 +#: ac544d900c0249048f073753be25a317 msgid "``Group.displayName`` is required (while it is optional in RFC7643)." msgstr "" #: ../tutorial/provisioning.rst:40 -#: 7490ca87a3fe4b5f9fdc80991e74a130 +#: c76213daf50f40c2852de2fdec93ba48 msgid "``Group.members`` is required (while it is optional in RFC7643), i.e. groups cannot be empty." msgstr "" #: ../tutorial/provisioning.rst:43 -#: 432c05f5057e4d6ab93225079865e789 +#: 58496f192f4c4b94b70c8a760525369c msgid "Debugging" msgstr "" #: ../tutorial/provisioning.rst:45 -#: ecce1ab63ddd4b1a8dd3c7c65e9a990c +#: faa6b4b7a057496abc9d96efcca72e82 msgid "To check what data are exposed through the Canaille SCIM API, you need a *client token* and a SCIM client application. To generate a client token, you can simply manually create a token from the button on the client administration page. Then, we recommend the use of :doc:`scim2-cli:index` to interact with the API:" msgstr "" #: ../tutorial/provisioning.rst:49 -#: 0494884602794d818953870e734c721b +#: 25e370c855454c10a7f705a96e7c3049 msgid "scim2-cli usage example" msgstr "" #: ../tutorial/theming.rst:2 -#: 1e8d2a5169ed4313896d1a9c33dee1ab +#: 25ff583d708742d6b564212c42ac76a0 msgid "Theming" msgstr "" #: ../tutorial/theming.rst:4 -#: 8b9d02343d7b48a08704a60b2394672a +#: 19f015eb34ff4185b0fb33829ca916be msgid "Canaille comes with a default theme based on `Fomantic UI `__ but any part of the UI can be slightly modified or even entierely rewritten if needed." msgstr "" #: ../tutorial/theming.rst:7 -#: aaa944c2e0b64fc7a9d04703be543cc8 +#: 0fdaf7ef1f1d41e88243804d40d16984 msgid "Custom templates" msgstr "" #: ../tutorial/theming.rst:9 -#: d431b58edd7c4ab5960f4889ad4bf8b1 +#: 7e432962674842a6a4ec1321ef3d20f9 msgid "To use a custom theme, set the :attr:`~canaille.core.configuration.CoreSettings.THEME` to a path to a directory where you will host your custom templates." msgstr "" #: ../tutorial/theming.rst:11 -#: f70b37ff511248529ee7801adeae3f40 +#: f5e08d34905747839e25e36c22ee7811 msgid "Then in this directory, create new files for templates you want to override. The exhaustive list of templates is available in the :doc:`reference <../references/templates>`. You must respect the template file paths. So for instance if you want to customize the *about page*, you need to do it in a ``core/about.html`` file. You can inherit from the origin template by using the Jinja ``extend`` directive." msgstr "" #: ../tutorial/theming.rst:15 -#: 3abcbfdad0cf41628a3bb4e27789bdf0 +#: cfa8a0a2dfe1408d9dd4b339f27a3016 msgid "core/about.html" msgstr "" #: ../tutorial/theming.rst:26 -#: 19d7d3280a9b4cc8a868428d2ef5b12f +#: 08dd0f6259c34b5d92c476bda8bd40e2 msgid "Custom style sheets" msgstr "" #: ../tutorial/theming.rst:28 -#: 13f029143d7a41ee97bff9bab5c6696d +#: ee6d9940bc7d453f8b754abbf51cfcba msgid "If you simply want to put your custom style sheets in the default theme, you can just push it in the ``base.html`` template. Put your file in a ``static`` subdirectory of your theme, for instance ``static/css/custom.css`` and reference it with ``theme_static``." msgstr "" #: ../tutorial/theming.rst:31 -#: 5494d679f6294826a4fe0ec3307f1d90 +#: bcea65c8d4ef4139a353420b7e1d5cdd msgid "base.html" msgstr "" #: ../tutorial/theming.rst:43 -#: eb8604a736ba49c7a5268aff30c7045f +#: b8572e3c71c54d65ad8ea6ce986d30ea msgid "To write your custom theme and check how it is rendered, you can put the path to your theme in a ``.env`` file and run the Canaille demo instance, as described in the :ref:`contributing guide `" msgstr "" #: ../tutorial/theming.rst:50 -#: f2e3066341864ffdb46f79b737fd491c +#: 94442631b4e4430aabc6abe4b0f565db msgid "Run the demo instance" msgstr "" #: ../tutorial/troubleshooting.rst:2 -#: d5cca3688aea45bb9ed015f84d324407 +#: ae54b220570140fc9af7133272cd26f4 msgid "Troubleshooting" msgstr "" #: ../tutorial/troubleshooting.rst:5 -#: 584a62a0d78b4af391bfc8bd916e3934 +#: 3f156ee26a7646f69513b66ef675d793 msgid "The web interface throws useless error messages" msgstr "" #: ../tutorial/troubleshooting.rst:7 -#: acc3175f98324e73b0154a833f4291de +#: 0fb6c271073a4abdb010d7f95eeac81e msgid "Unless the current user has admin :class:`permissions `, or the installation is in :attr:`~canaille.app.configuration.RootSettings.DEBUG` mode, error messages won't be too technical. For instance, you can see *The request you made is invalid*. To enable detailed error messages, you can **temporarily** enable the :attr:`~canaille.app.configuration.RootSettings.DEBUG` configuration parameter." msgstr "" #: ../tutorial/troubleshooting.rst:12 -#: 358b28e47d4a4b48ba2bde7ddd4bc5f3 +#: 58570442c05e4cd19751820083151ece msgid "How to manually install LDAP schemas?" msgstr "" #: ../tutorial/troubleshooting.rst:16 -#: 5e241c1fdd044454a5a27a9d4d609a6c +#: 067c19e9f37c46ea91b8bed914bcd276 msgid "Schema installation can be automatically done using the :ref:`install command `." msgstr "" #: ../tutorial/troubleshooting.rst:18 -#: fa20dff6817848489fee9434d3e8c154 +#: b590574910044ce299bfbdb318ebea6a msgid "As of OpenLDAP 2.4, two configuration methods are available:" msgstr "" #: ../tutorial/troubleshooting.rst:20 -#: 536b6d4fabea43d48240f3b1b4e256c6 +#: 6ad84183e4c64116b49932cef2584fd0 msgid "The `deprecated `_ one, based on a configuration file (generally ``/etc/ldap/slapd.conf``);" msgstr "" #: ../tutorial/troubleshooting.rst:21 -#: 2681e5ed98de4633ab3e958980570c61 +#: 19abee92e8b14d4ba90f9506412d8118 msgid "The new one, based on a configuration directory (generally ``/etc/ldap/slapd.d``)." msgstr "" #: ../tutorial/troubleshooting.rst:23 -#: e623df73a33a4425874322d64990dd09 +#: a8ca0bf4ec6e4d71806d2071d226d2cd msgid "Depending on the configuration method you use with your OpenLDAP installation, you need to chose how to add the canaille schemas:" msgstr "" #: ../tutorial/troubleshooting.rst:26 -#: 7fa64ce5f9834bfc8a84a6b147776135 +#: e6d653692ee34c47bb5efe760a381699 msgid "Old fashion: Copy the schemas in your filesystem" msgstr "" #: ../tutorial/troubleshooting.rst:35 -#: 89ec7d1a5b9c488898dd0aeec512eb0f +#: d64d1890fd104a4ea9a8d9941189af0b msgid "New fashion: Use slapadd to add the schemas" msgstr "" #: ../tutorial/troubleshooting.rst:37 -#: cf355b0d0d224146b9aa9bde63c3285b +#: 692e81784a5e4fa48dc2bcc2e1cf4a1e msgid "Be careful to stop your ldap server before running ``slapadd``" msgstr "" #: ../tutorial/troubleshooting.rst:46 -#: b688808b89a1486ea46f0a30671f0772 +#: d404812e38644b3090d9823e682c9254 msgid "How to manually generate the OIDC keypair?" msgstr "" #: ../tutorial/troubleshooting.rst:50 -#: fe622e23c48a4ec0ba3a9e00e24cfb88 +#: 62e08f82a4804de8b5dd459b903a8cd3 msgid "The keypair generation can be automatically done using the :ref:`install command `." msgstr "" #: ../tutorial/troubleshooting.rst:52 -#: 2467c8ae6d2a4ba19056d44a89656984 +#: 06dd3710174a40e4a0ef3b2c54a2e9b5 msgid "Canaille needs a key pair to sign OIDC tokens. You can customize those commands, as long as they match the ``JWT`` section of your configuration file." msgstr "" #: ../usecases.rst:4 -#: dde73820d8ff46128f0ae5a245d4f212 +#: 168d233560c64d829ee09d581aa7d361 msgid "Use cases" msgstr "" #: ../usecases.rst:6 -#: 936471ec6e494f839a45d1a5048ddbe9 +#: a65d311c88094169acb330c3d6e3c7f7 msgid "Canaille is a lightweight IAM for simple needs. Here are a few use cases you might recognize in, where Canaille would fit your needs." msgstr "" #: ../usecases.rst:10 -#: 0c06bc8fc0754db6bdfbae05fe718b2e +#: 179edacb13c54333aace4b68c4708253 msgid "OpenID Connect provider on top of a LDAP directory" msgstr "" #: ../usecases.rst:12 -#: 0ec337c5784a4dc296538609b9d75dd6 +#: 302b4ac43f3e467e85d2bd4b19297569 msgid "Your organization has an historic :ref:`LDAP directory ` and you want to add a :ref:`OpenID Connect ` :abbr:`SSO (Single Sign-On)` layer on top of it, so users can use all your application while signin-in only once, without any data migration." msgstr "" #: ../usecases.rst:15 -#: 35bb9bbb50064dc7a5383c9d5371adfd +#: e0024a833d08474ba72b828f6eb83a8e msgid "Profile edition of LDAP users" msgstr "" #: ../usecases.rst:17 -#: 87226e31a4ef425585e8de20647d72a3 +#: ea3058635a35476eb122ab777c349dc3 msgid "Your organization has a :ref:`LDAP directory ` and you want to provide a way to your users to :ref:`edit their personal information ` by themselves, without requiring any administrator intervention." msgstr "" #: ../usecases.rst:20 -#: 22ec6d0c58ed413b80cd6aca23f637b6 +#: e81a578b174c43b194932cdd88c38500 msgid "Password recovery with a LDAP directory" msgstr "" #: ../usecases.rst:22 -#: 46f418970c7640f9ace069002ed337bd +#: 7f58bba7651f4df6870fc163b486932f msgid "Your organization has an historic :ref:`LDAP directory ` and you want to provide a way to your users to :ref:`recover their password ` when they cannot remember it, without any administrator intervention." msgstr "" #: ../usecases.rst:25 -#: f44f325b29594fc7b31521d259e27d5f +#: 2b626e10eb2b480b816b9151a8f160fd msgid "A lightweight IAM for unit testing" msgstr "" #: ../usecases.rst:27 -#: c9f537fbf3cd4b3cb0e6d140b8a2327b +#: cff10ba64f6e4184bcbfccae206f6d9c msgid "You are :ref:`developing ` an application relying on OAuth2 or OpenID Connect to authenticate the users. You don't want to mock the calls to the identity provider in your unit tests, but you want to :ref:`perform real OAuth2/OIDC requests `, and test your application against different identity provider tunings." msgstr "" #: ../usecases.rst:30 -#: 5b9b8e07b9154150a105088cc630ce6a +#: 130dbc72dcb54dbf830a1c0e199e9e3b msgid "A lightweight IAM for developing" msgstr "" #: ../usecases.rst:32 -#: 7a4ff703b94e4706b5123edb0c2abe51 +#: 0ff43cbb31f548089d237c4fbcc8e312 msgid "You are :ref:`developing ` an application relying on OAuth2 or OpenID Connect to authenticate the users. You need a :ref:`IAM server to develop ` locally, but your old computer cannot bear launching a full Keycloak in a Docker container." msgstr "" #: ../usecases.rst:35 -#: e594e15fba204d65a3f483c36e7c0aab +#: adc956f5cf0f43bc988261b4f0ba541a msgid "A lightweight IAM for CIs" msgstr "" #: ../usecases.rst:37 -#: ff03e5a191564f90af81c7d210a3de24 +#: 68048b0e31044e6eb1b844a8541f900d msgid "You are :ref:`developing ` an application relying on OAuth2 or OpenID Connect to authenticate the users. You need a IAM server that could can populate with custom data, and integrate in your :ref:`continuous integration environment `." msgstr "" #: ../usecases.rst:40 -#: 8a37de08f6594334a3ba6ed2f9a3b71e +#: ef4f06a88d3f4f3d99df361d7d25da08 msgid "A CLI to quickly edit LDAP directory users" msgstr "" #: ../usecases.rst:42 -#: b9d55e6eeca547aabb9bbfef3998f6d2 +#: aec48cc98e9043ac962854780f5e4aa5 msgid "Your organization has an historic :ref:`LDAP directory `. You are tired to deal with *ldif* syntax to manage your users and group and would prefer a simple human-readable CLI." msgstr ""