Compare commits

..

768 Commits
v0.2.2 ... v5

Author SHA1 Message Date
049e52d2cc Use tag v5 when releasing from this branch 2024-08-16 08:36:48 +02:00
10d6fb96cd #607 Release patch for v5 2024-08-13 14:36:45 +02:00
05d4d1b5f5 Fix #164 on v5 2022-09-13 10:15:10 +02:00
f9e5286603 Enable vion branch 2022-09-11 01:47:53 +02:00
68ab37e6a8 Bump version 2022-09-11 01:47:19 +02:00
ff328e9d56 #164 2022-09-11 01:46:53 +02:00
ba432f8841 Update garronej_modules_update 2022-09-04 19:09:53 +00:00
27aedbbc7f Create FUNDING.yml 2022-09-02 18:41:02 +02:00
360ed3dc4b Update garronej_modules_update 2022-08-26 16:39:19 +00:00
53fd8bd0ee Fmt (changelog ignore) 2022-08-26 16:12:55 +07:00
7e20ce4efa Remove warning about website beeing down (changelog ignore) 2022-08-26 15:52:28 +07:00
220d9d4d5e Update README.md 2022-08-04 14:15:23 +07:00
697171be1e Update ci.yaml 2022-08-02 14:23:47 +02:00
cf91c6fb8a Bump version (changelog ignore) 2022-08-02 09:07:11 +02:00
18a2e4ae04 Add extra field for u/loki344, in v6 such fields will have to be declared in the package.json #40 2022-08-02 09:06:29 +02:00
020823e933 Update garronej_modules_update 2022-07-28 04:44:01 +00:00
5879972924 Fix readme error (changelog ignore) 2022-07-28 04:38:04 +02:00
8031294230 Update ts-ci, remove changelog, use github release generated body instead 2022-07-28 04:32:27 +02:00
e0a6935c49 Bump version (changelog ignore) 2022-07-28 04:27:38 +02:00
3d581a5454 Support for React.lazy() #141 🎉 2022-07-28 04:24:10 +02:00
317ad8386c Attempt to activate renovate on project's landingpage (changelog ignore) 2022-07-23 17:45:04 +02:00
7ad5011280 Merge pull request #142 from InseeFrLab/renovate/configure
Configure Renovate
2022-07-23 16:10:40 +02:00
76990702f0 Add renovate.json
update
2022-07-23 16:09:14 +02:00
9a27824fe9 Only run the unit test in the CI pipeline (changelog ignore) 2022-07-22 18:25:09 +02:00
d877d90bf3 Writing tests for #141 2022-07-22 18:20:50 +02:00
0b790c47e6 fmt (changelog ignore) 2022-07-22 17:34:52 +02:00
6b49c8dd95 complete exhausive unit testing of replacer (changelog ignore) 2022-07-22 17:33:53 +02:00
e56f9b144e Improve unit tests (changelog ignore) 2022-07-22 17:22:23 +02:00
3c82944daf improve replacer unit test (changelog ignore) 2022-07-22 16:38:44 +02:00
5e3070a6c4 Improve unit test (changelog ignore) 2022-07-22 15:35:23 +02:00
a3a0e9eebe Add closest thing to a migration guide from v4 to v5 (changelog ignore) 2022-07-21 19:49:10 +02:00
c6593f03bc Update changelog v5.7.3 2022-07-17 01:34:02 +00:00
54dc4f650c Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-07-17 03:30:10 +02:00
dec7af0381 Bump version (changelog ignore) 2022-07-17 03:29:17 +02:00
ae001eea54 update evt and powerhooks (changelog ignore) 2022-07-17 03:28:35 +02:00
4d0e17a11e Update changelog v5.7.1 2022-07-17 03:28:34 +02:00
c708e619e9 Update changelog v5.7.2 2022-07-13 01:30:23 +00:00
2cceb3c929 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-07-13 03:27:38 +02:00
aee8704691 Bump version (changelog ignore) 2022-07-13 03:27:29 +02:00
43af60237b #135 2022-07-13 03:26:46 +02:00
e615479b41 Update changelog v5.7.1 2022-07-11 17:25:30 +00:00
973fb4d2d5 Bump version (changelog ignore) 2022-07-11 19:18:42 +02:00
964feae846 #134 2022-07-11 19:18:15 +02:00
ea3d8a5634 Update changelog v5.7.0 2022-07-07 11:56:00 +00:00
48aab2d92a Bump version (changelog ignore) 2022-07-07 13:53:20 +02:00
00eab73954 Merge pull request #120 from revolunet/logout
feat: add logout-confirm
2022-07-07 13:40:17 +02:00
5f6f8b12bd fix: use kcMessages 2022-07-07 01:05:18 +02:00
c2d4d6fd49 fix: add translations FR 2022-07-07 01:05:18 +02:00
04b660ff9b feat: add logout-confirm 2022-07-07 01:05:15 +02:00
c292d926be Update changelog v5.6.5 2022-07-06 10:01:52 +00:00
23b83ceef7 Bump version (changelog ignore) 2022-07-06 11:58:43 +02:00
1324648db6 Merge pull request #133 from bardius/fix/Issue-131-include-all-nested-folders-in-artifact-unzip
fix: Issue-131: include all nested folders in artifact unzip
2022-07-06 11:56:00 +02:00
735bff3348 Merge pull request #132 from bardius/fix/Issue-130-fix-equality-detection-of-nested-ftl-object-properties
fix: Issue-130: fix equality detection of nested ftl object property …
2022-07-06 11:55:18 +02:00
05a6aee782 fix: Issue-131: include all nested folders in artifact unzip 2022-07-06 11:44:25 +03:00
c7349c2556 fix: Issue-130: fix equality detection of nested ftl object property paths 2022-07-06 11:38:47 +03:00
51f3d06752 Update changelog v5.6.4 2022-07-06 00:08:51 +00:00
31759d86ab Bump version (changelog ignore) 2022-07-06 02:05:45 +02:00
7c6eed99d2 Fix login-register-email.ftl 2022-07-06 02:05:08 +02:00
bc4b0ec17d Update to Keycloak 18.0.2 for the test container 2022-07-06 01:30:30 +02:00
f766348b87 Update changelog v5.6.3 2022-07-03 22:05:43 +00:00
82281303d0 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-07-04 00:02:47 +02:00
1caa17beb0 Bump version (changelog ignore) 2022-07-04 00:02:39 +02:00
1c4d346f9f update powerhooks 2022-07-04 00:02:19 +02:00
4320efb049 Update changelog v5.6.2 2022-07-03 18:07:07 +00:00
a756423768 Bump version (changelog ignore) 2022-07-03 20:03:35 +02:00
8525fc74c0 Update powerhooks and EVT 2022-07-03 20:03:19 +02:00
30c0cc5aa8 Update changelog v5.6.1 2022-07-03 14:01:24 +00:00
b3bbd7c07d Bump version (changelog ignore) 2022-07-03 15:58:41 +02:00
09d4ba2bb0 Refactor (avoid using else) changelog ignore 2022-07-03 15:58:00 +02:00
30315027c1 Merge pull request #128 from Ann2827/pull
Fix bugs on error.ftl template
2022-07-03 15:52:42 +02:00
05acefe70e fix: bugs on error.ftl template 2022-07-02 11:01:14 +03:00
6c14758e33 Merge pull request #52 from InseeFrLab/main
Update fork
2022-07-02 10:39:39 +03:00
b93ec20119 Update changelog v5.6.0 2022-06-28 21:39:13 +00:00
ce04646576 Update React (changelog ignore) #127 2022-06-28 23:36:16 +02:00
9282dfe491 Bump version (changelog ignore) 2022-06-28 21:53:02 +02:00
fca6280bcc Merge pull request #127 from aidangilmore/add-totp-support
feat: add login-config-totp.ftl page
2022-06-28 21:49:04 +02:00
cdeb575ec6 Fix unknown algorithm name lookup in LoginConfigTotp 2022-06-28 15:21:09 -04:00
271dbe4fb7 Add totp config support 2022-06-28 14:37:17 -04:00
9a0337114d Update changelog v5.5.0 2022-06-28 04:54:43 +00:00
2d28f4eb55 Attempt to fix ci (changelog ignore) 2022-06-28 06:51:49 +02:00
f673927e16 [CI]: update npm-install (changelog ignore) 2022-06-28 06:45:59 +02:00
52896b82a9 Update yarn.lock (changelog ignore) 2022-06-28 06:40:51 +02:00
9d53ecb0cd Bump version (changelog ignore) 2022-06-28 06:37:05 +02:00
aec3ac32e5 Make it possible to redirect to login by repacing the url (should be default in most case) 2022-06-28 06:36:30 +02:00
f150f1568e Update changelog v5.4.7 2022-06-19 21:33:05 +00:00
309189c55d Bump version (changelog ignore) 2022-06-19 23:30:38 +02:00
f68c54cd3a #121 2022-06-19 23:30:05 +02:00
bef8545161 Merge pull request #48 from InseeFrLab/main
Update fork
2022-06-18 17:17:08 +03:00
c21cd14ac2 fmt 2022-06-17 18:25:54 +02:00
275d7f0072 Create CONTRIBUTING.md 2022-06-17 17:00:55 +02:00
58c8306cf4 Enable users to link keycloak in their own app 2022-06-17 16:32:20 +02:00
f782b684ad Update changelog v5.4.6 2022-06-16 23:51:09 +00:00
092b2a5f52 Bump version (changelog ignore) 2022-06-17 01:45:32 +02:00
42b2d40ad6 Update powerhooks (changelog ignore) 2022-06-17 01:45:17 +02:00
3f6fe6cfc0 Use keycloak 18.0.1 i18n resources #120 2022-06-17 01:43:14 +02:00
1abf542a74 Update changelog v5.4.5 2022-06-14 21:07:14 +00:00
c4720ca03d Bump version (changelog ignore) 2022-06-14 23:04:59 +02:00
4316878cce Merge pull request #119 from dro-sh/fix-locale-on-useFormValidationSlice
pass locale to getGetErrors to get correct messages
2022-06-14 23:04:28 +02:00
c180d75a83 pass locale to getGetErrors to get correct messages 2022-06-14 21:52:18 +03:00
4a040b32c0 Display downloads by month (changelog ignore) 2022-06-11 03:36:03 +02:00
ea330a1eef Update changelog v5.4.4 2022-06-05 03:49:23 +00:00
2451ba0a77 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-06-05 05:46:26 +02:00
2c276a56e5 Bump version (changelog ignore) 2022-06-05 05:46:20 +02:00
708030b8b5 Update powerhooks (changelog ignore) 2022-06-05 05:46:03 +02:00
d5fc0582bc Update changelog v5.4.3 2022-06-01 23:37:41 +00:00
f9dce82c83 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-06-02 01:32:57 +02:00
e82602f994 Bump version (changelog ignore) 2022-06-02 01:32:49 +02:00
1d36395e5a Update EVT and powerhook (changelog ignore) 2022-06-02 01:32:26 +02:00
8f8857bc22 Update changelog v5.4.2 2022-06-01 22:21:23 +00:00
226247b3b6 Bump version (changelog ignore) 2022-06-02 00:15:25 +02:00
b2ea5014f3 Update evt (changelog ignore) 2022-06-02 00:15:10 +02:00
48bc416aa7 Update powerhooks (changelog ignore) 2022-06-02 00:14:36 +02:00
386e7203b2 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-06-01 05:51:41 +02:00
9bdb224631 Prevent rate limite in CI by authenticating 2022-06-01 05:51:33 +02:00
dd36aacbee Update changelog v5.4.1 2022-06-01 03:45:04 +00:00
6b57b1c720 Bump version (changelog ignore) 2022-06-01 05:42:23 +02:00
9e9e6d41ff Update dependencies (changelog ignore) 2022-06-01 05:38:12 +02:00
5140389502 Update changelog v5.4.0 2022-05-23 14:59:15 +00:00
fc6328131f Bump version (changelog ignore) 2022-05-23 16:51:58 +02:00
9de0083ca6 #109 2022-05-23 16:51:18 +02:00
f5231b840d Update changelog v5.3.2 2022-05-04 10:16:04 +00:00
afb6596c4b Bump version (changelog ignore) 2022-05-04 12:13:10 +02:00
dde9afef92 Merge pull request #101 from Romcol/bugfix/99
Issue #99 - Make replace less greedy in remplaceImportFromStatic
2022-05-04 12:12:06 +02:00
6595e9c3cb [IMP] Issue #99 - Make replace less greedy in remplaceImportFromStatic 2022-05-04 11:22:58 +02:00
c0e3b5fe06 Update changelog v5.3.1 2022-04-29 16:41:12 +00:00
6b8f3bbc51 Bump version (changelog ignore) 2022-04-29 18:35:39 +02:00
9a5a021e64 Comment out missleading informations 2022-04-29 18:35:07 +02:00
14c05fec8c Update changelog v5.3.0 2022-04-28 07:52:08 +00:00
eaf7a455cd Fix name of npx script for generating email dir (changelog ignore) 2022-04-28 09:46:49 +02:00
55bb21f3ee Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-28 09:36:41 +02:00
f123bc0912 Bump version (changelog ignore) 2022-04-28 09:35:53 +02:00
572eb7b1c0 Rename keycloak_theme_email to keycloak_email (it's shorter) 2022-04-28 09:34:01 +02:00
2befaff8a8 Update changelog sumup in readme (changelog ignore) 2022-04-27 23:32:47 +02:00
437a9ce2d3 Update changelog v5.2.0 2022-04-27 19:27:37 +00:00
1b967b250a Bump version (changelog ignore) 2022-04-27 21:23:10 +02:00
e221f39e07 Export KcApp 2022-04-27 21:22:55 +02:00
21a8838a24 Update changelog v5.1.0 2022-04-27 19:20:36 +00:00
fad91ccae0 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-27 21:17:40 +02:00
825914aa4b Export kcLanguageTags 2022-04-27 21:17:26 +02:00
a8246d12ee Update changelog v5.0.0 2022-04-27 19:05:48 +00:00
abb8bf2ebb Bump version (changelog ingore) 2022-04-27 21:02:29 +02:00
7e7071305f i18n rebuild from the ground up 2022-04-27 21:02:10 +02:00
cc8b2e72c1 Update changelog v4.10.0 2022-04-26 14:45:04 +00:00
a3d6ee44a1 Bump version (changelog ignore) 2022-04-25 13:26:24 +02:00
ac99e2f41f Merge pull request #92 from Tasyp/add-login-idp-link-email
feat: add login-idp-link-email page
2022-04-25 13:23:54 +02:00
bf1839c061 feat: add mock data for login-idp-link-email page 2022-04-25 14:15:40 +03:00
fd5c132a40 feat: supply broker context with context 2022-04-25 14:14:03 +03:00
4dfa268eb3 Update changelog v4.9.0 2022-04-25 11:09:16 +00:00
332ca084f5 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-25 13:06:10 +02:00
01cbb8680a Bump version (changelog ignore) 2022-04-25 13:05:59 +02:00
bbdaaf30bc Test by default with kc 18. Update instructions to use quay.io/keycloak/keycloak instead of jboss/keycloak #93 2022-04-25 13:05:13 +02:00
0550b9ff8b Update changelog v4.8.7 2022-04-25 10:33:29 +00:00
b1a4c5cca5 Bump version (changelog ignore) 2022-04-25 12:30:29 +02:00
785080e14a Update instructions to test on Keycloak 18 https://github.com/keycloak/keycloak-web/issues/306 #93 2022-04-25 12:30:28 +02:00
3c7e093a3c Move the documentation form the readme to docs.keycloakify.dev 2022-04-23 22:01:15 +02:00
89be9f3a86 fmt (changelog ignore) 2022-04-23 05:14:43 +02:00
6f2ffa7861 Update README.md 2022-04-22 20:01:26 +02:00
7091f283f2 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-22 20:00:50 +02:00
2d28003451 Update demo video 2022-04-22 20:00:41 +02:00
f0ba7d3c0d Update changelog v4.8.6 2022-04-22 16:26:51 +00:00
cd5f346895 Bump version (changelog ignore) 2022-04-22 18:23:35 +02:00
66cd5aef0c always offer to download v11.0.3 2022-04-22 18:22:28 +02:00
6f8ec53e8b feat: add login-idp-link-email page 2022-04-22 17:54:47 +03:00
622504ff72 Update changelog v4.8.5 2022-04-22 14:45:25 +00:00
c9d47c483c Bump version (changelog ignore) 2022-04-22 16:39:04 +02:00
07098b89a5 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-22 16:38:26 +02:00
c583b83cbb #91 2022-04-22 16:38:20 +02:00
1670e1fe42 Update changelog v4.8.4 2022-04-22 11:59:31 +00:00
de8809608c Bump version (changelog ignore) 2022-04-22 13:56:54 +02:00
0e194ee045 #90 2022-04-22 13:56:29 +02:00
4205f6ecbe Remove no longer relevent link (changelog ignore) 2022-04-21 02:10:23 +02:00
4d90ec60e2 Remove no longer relevent section of the readme (changelog ignore) 2022-04-21 02:03:29 +02:00
d126a6563b Update changelog v4.8.3 2022-04-20 20:32:12 +00:00
aecb6ae79c Bump version (changelog ignore) 2022-04-20 22:26:33 +02:00
a65c826717 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-20 22:26:16 +02:00
66c3705f2b Keycloak 18 container hasn't been published yet (changelog ignore) 2022-04-20 22:26:10 +02:00
d18ebb45f8 Update changelog v4.8.2 2022-04-20 20:20:03 +00:00
d8e01f2c5d Bump version (changelog ignore) 2022-04-20 22:14:06 +02:00
4abbaa3841 Tell pepoles they can test with different keycloak version 2022-04-20 22:13:42 +02:00
42a463b348 Update changelog v4.8.1 2022-04-20 19:19:55 +00:00
8e15cf1d45 Bump version (changelog ignore) 2022-04-20 21:17:05 +02:00
2468b4108e Update changelog highlights 2022-04-20 21:15:58 +02:00
528b1bb607 Add missing shebang 2022-04-20 21:13:32 +02:00
b4449bb289 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-20 21:09:53 +02:00
737e00b490 Add video demo for npx download-builtin-keycloak-theme 2022-04-20 21:09:36 +02:00
55d4c7f4ab Update changelog v4.8.0 2022-04-20 18:59:10 +00:00
7afb078efd fmt (changelog ignore) 2022-04-20 20:55:53 +02:00
2c04f6c1e9 Bump version (changelog ignore) 2022-04-20 20:44:32 +02:00
2ad5ed7e73 Document email template customization feature #9 2022-04-20 20:44:31 +02:00
f2b7fe46a2 Add mention of download-builtin-keycloak-theme 2022-04-20 20:22:19 +02:00
1a1af62f62 Improve readme (changelog ignore) 2022-04-20 20:11:26 +02:00
98f715e652 Let the choice of kc version be auto in GH Action 2022-04-20 12:23:28 +02:00
fa5f1c230a Only test on node v15 and v14 (bellow is no longer supported (rmSync) 2022-04-20 11:59:19 +02:00
c92ae9cfa9 Fix broken link in readme (changelog ignore) 2022-04-20 11:43:15 +02:00
3dcb3a1a5b cange name of temp dir (changelog ignore) 2022-04-20 01:26:22 +02:00
efde71d07c Feature email customization #9 2022-04-20 00:39:40 +02:00
bff8cf2f32 Update README (changelog ignore) 2022-04-15 12:19:41 +02:00
72730135f1 Mention tested wit CRA 5.0.0 (changelog ignore) 2022-04-14 21:55:42 +02:00
50cf27b686 Mention test on Keycloak 17.0.1 (changelog ignore) 2022-04-14 21:53:27 +02:00
b293abffa4 Update changelog v4.7.6 2022-04-12 16:57:59 +00:00
be84ea299c Bump version (changelog ignore) 2022-04-12 18:51:30 +02:00
d54586426a Fix bugs with language switch #85 2022-04-12 18:51:03 +02:00
6ccf72c707 Update changelog v4.7.5 2022-04-09 20:28:23 +00:00
5817118461 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-09 22:25:51 +02:00
ebac1de111 Bump version (changelog ignore) 2022-04-09 22:25:43 +02:00
0d2f841b27 Fix #85 2022-04-09 22:25:20 +02:00
780ca383c9 Update changelog v4.7.4 2022-04-09 18:22:22 +00:00
a652a0f4f3 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-09 20:19:13 +02:00
5bdc812c43 Bump version (changelog ignore) 2022-04-09 20:19:07 +02:00
357bc8d19d M1 Mac compat (for real this time) 2022-04-09 20:18:42 +02:00
85b54ac011 Update changelog v4.7.3 2022-04-09 20:17:55 +02:00
17f888019c Update changelog v4.7.2 2022-04-09 20:17:55 +02:00
947fd0564e Update changelog v4.7.3 2022-04-08 13:04:37 +00:00
bd51d02902 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify 2022-04-08 15:01:47 +02:00
36d75c8641 Bump version (changelog ignore) 2022-04-08 15:01:39 +02:00
c75f158b48 Mention that there is still problems with M1 Mac 2022-04-08 15:01:21 +02:00
bb37ce9cef Update changelog v4.7.2 2022-04-06 23:41:42 +00:00
77ff33570d Bump version (changelog ignore) 2022-04-07 01:39:03 +02:00
20383d60a9 #43: M1 Mac support 2022-04-07 01:38:58 +02:00
f15c0ecbb0 Merge pull request #46 from InseeFrLab/main
Update fork
2022-04-04 17:41:06 +03:00
79aa5ac5f2 Update changelog v4.7.1 2022-03-30 14:23:41 +00:00
8be6c0d1d2 Bump version (changelog ignore) 2022-03-30 16:20:34 +02:00
7f5a9e77de Improve browser autofill 2022-03-30 16:20:14 +02:00
ff19ab8b08 factorization 2022-03-30 14:01:10 +02:00
63dcb2ad39 Update changelog v4.7.0 2022-03-17 23:49:31 +00:00
795e8ed0e5 Bump version (changelog ignore) 2022-03-18 00:46:40 +01:00
bccb56ed61 Add support for options validator 2022-03-18 00:46:12 +01:00
02e2ad89ec remove duplicate dependency 2022-03-18 00:41:29 +01:00
a236e2e5de Update changelog v4.6.0 2022-03-07 00:53:27 +00:00
ba294c85f8 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2022-03-07 01:50:38 +01:00
beb3dca495 Bump version (changelog ignore) 2022-03-07 01:50:25 +01:00
04101536c6 Remove powerhooks as dev dependency 2022-03-07 01:43:31 +01:00
2912e7e5dd Update changelog v4.5.5 2022-03-07 00:18:43 +00:00
bf6fadbde8 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2022-03-07 01:16:01 +01:00
001b49d09a Bump version (changelog ignore) 2022-03-07 01:15:52 +01:00
bbd5bdda95 Update tss-react 2022-03-07 01:15:36 +01:00
7e950e8e2b Update changelog v4.5.4 2022-03-06 23:33:45 +00:00
8b0efbc737 Bump version (changelog ignore) 2022-03-07 00:31:08 +01:00
93cfbd6696 Remove tss-react from peerDependencies (it becomes a dependency) 2022-03-07 00:30:44 +01:00
acc1d028ab Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2022-02-18 21:00:56 +01:00
3476b5acc3 (dev script) Use tsconfig.json to tell we are at the root of the project 2022-02-18 21:00:44 +01:00
72ca5da842 Update changelog v4.5.3 2022-01-26 15:33:05 +00:00
e214280fcd Rephrase (changelog ignore) 2022-01-26 10:42:45 +01:00
bf32987a3e Bump version (changelog ignore) 2022-01-26 10:40:36 +01:00
8941fe230b Themes no longer have to break on minor Keycloakify update 2022-01-26 10:40:08 +01:00
b6d4abee21 Update cover image (changelog ignore) 2022-01-25 23:20:26 +01:00
786bdc41c2 Update changelog v4.5.2 2022-01-20 01:57:57 +00:00
ed9f08f678 Update ..prettierignore (changelog ignore) 2022-01-20 02:55:14 +01:00
33fd6768f1 Bump version (changelog ignore) 2022-01-20 02:53:42 +01:00
87b8456531 Test container uses Keycloak 16.1.0 2022-01-20 02:52:31 +01:00
a12bde4656 Merge pull request #78 from InseeFrLab/Ann2827/pull
Ann2827/pull
2022-01-20 01:50:37 +01:00
6f219a4c2a Refactor #78 2022-01-20 01:49:35 +01:00
49d7818b64 Merge branch 'Ann2827/pull' of https://github.com/InseeFrLab/keycloakify into Ann2827/pull 2022-01-20 01:35:36 +01:00
fb0be3272c Compat with Keycloak 16 (and probably 17, 18) #79 2022-01-20 01:34:26 +01:00
994f7d6bea Warning about compat issues with Keycloak 16 2022-01-19 16:11:40 +01:00
6e8dcecaf1 Fix CI (changelog ignore) 2022-01-19 01:29:06 +01:00
40237374a8 Bump beta version (changelog ignore)
Signed-off-by: garronej <joseph.garrone.gj@gmail.com>
2022-01-18 23:59:49 +01:00
3d98860369 fix: changes 2022-01-19 01:35:37 +03:00
804fe33665 fix: Errors on pages login-idp-link-confirm and login-idp-link-email
ref: https://github.com/InseeFrLab/keycloakify/issues/75
2022-01-19 01:26:36 +03:00
703171f96b Merge branch 'InseeFrLab-main' into pull 2022-01-19 01:14:41 +03:00
27bdefeea8 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into InseeFrLab-main 2022-01-19 01:13:36 +03:00
7a3c74020d Update changelog v4.5.1 2022-01-18 20:15:20 +00:00
7509170dd0 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2022-01-18 21:08:30 +01:00
cd17a97916 Bump version (changelog ignore) 2022-01-18 21:07:43 +01:00
d5e690f964 fix previous version 2022-01-18 21:07:24 +01:00
a19bd20b6b Update changelog v4.5.0 2022-01-18 17:59:48 +00:00
f78526dfff Bump version (changelog ignore) 2022-01-18 18:53:13 +01:00
11d6a2020f Read public/CNAME for domain name in --externel-assets mode 2022-01-18 18:52:52 +01:00
fabd48a22c Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2022-01-01 18:49:39 +01:00
e2ea98b5ef Update instructions for 4.4.0 (changelog ignore) 2022-01-01 18:49:30 +01:00
4473ab0704 Update changelog v4.4.0 2022-01-01 17:23:44 +00:00
1f68cc305a Bump version (changelog ignore) 2022-01-01 18:23:10 +01:00
ec2543551f Merge pull request #73 from lazToum/main
(feature) added login-page-expired.ftl
2022-01-01 18:21:14 +01:00
7b0bedc755 added login-page-expired.ftl 2022-01-01 18:44:05 +02:00
ab054ca515 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-12-28 02:27:10 +01:00
1b49c7804c Add update instruction for 4.3.0 2021-12-28 02:27:04 +01:00
764a288b1a Update changelog v4.3.0 2021-12-27 21:33:37 +00:00
fc6910bc2c Bump version (changelog ignore) 2021-12-27 22:31:03 +01:00
91dd1dcddc Merge pull request #72 from praiz/main
feat(*): added login-update-password
2021-12-27 22:26:53 +01:00
97e6aaca65 feat(*): added login-update-password 2021-12-28 00:08:25 +03:00
af5ff1ecfb Update changelog v4.2.21 2021-12-27 18:32:50 +00:00
c9b53b0d3a Bump version (changelog ignore) 2021-12-27 19:29:59 +01:00
d05a62e1ea update dependencies 2021-12-27 19:29:31 +01:00
a83eec31d8 Feat link behind badges (changelog ignore) 2021-12-23 14:01:52 +01:00
729503fe31 Fix borken link to onyxia #71 (changelog ignore) 2021-12-23 12:28:45 +01:00
7137ff4257 Bump version (changelog ignore) 2021-12-21 16:47:40 +01:00
6db11a7433 Update changelog v4.2.19 2021-12-21 15:47:35 +00:00
8666aa62dd Merge pull request #70 from VBustamante/patch-1 2021-12-21 16:44:20 +01:00
eedcd7a2a6 Added realm name field to KcContext mocks object 2021-12-21 12:27:28 -03:00
e3e8fb663a Bump version (changelog ignore) 2021-12-21 14:39:58 +01:00
6e663210ee Merge pull request #69 from VBustamante/patch-1
Adding name field to realm in KcContext type
2021-12-21 14:39:19 +01:00
42cd0fe2f0 Adding name field to realm in KcContext type 2021-12-21 09:45:23 -03:00
daac05c1ad Update confirmed working webpack version (changelog ignore) 2021-12-18 18:13:58 +01:00
1d63c393a3 Update changelog v4.2.18 2021-12-17 18:38:15 +00:00
e8a3751b32 Bump version (changelog ignore) 2021-12-17 19:31:11 +01:00
cb8a41d5be Improve css url() import (fix CRA 5) 2021-12-17 19:30:44 +01:00
a8d4f7e23c Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-12-17 00:00:10 +01:00
93bcdac3be Add notice about Webpack 5 (changelog ignore) 2021-12-17 00:00:01 +01:00
32d0388556 Update changelog v4.2.17 2021-12-16 22:16:24 +00:00
633a32ffd6 Bump version (changelog ignore) 2021-12-16 23:13:41 +01:00
cb8b165c8e Fix path.join polyfill 2021-12-16 23:13:18 +01:00
57134359b9 Update changelog v4.2.16 2021-12-16 20:00:18 +00:00
377436e46a Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-12-16 20:56:48 +01:00
51129aaeff Bump version (changelog ignore) 2021-12-16 20:56:41 +01:00
a2bd5050ff add missing reference to path in src/lib (changelog ignore) 2021-12-16 20:54:13 +01:00
128c416ce7 Update changelog v4.2.15 2021-12-16 19:48:20 +00:00
7184773521 Bump version (changelog ignore) 2021-12-16 20:45:04 +01:00
1138313028 use custom polyfill for path.join (fix webpack 5 build) 2021-12-16 20:44:39 +01:00
46bd319ebe Fix small error in readme (changelog ignore) 2021-12-12 21:41:23 +01:00
cfcc48259c Update changelog v4.2.14 2021-12-12 19:49:27 +00:00
785ce7a8ab Bump version (changelog ignore) 2021-12-12 20:46:58 +01:00
ad5de216b0 Merge pull request #65 from InseeFrLab/doge_ftl_errors
Prevent ftl errors in Keycloak log
2021-12-12 20:45:55 +01:00
26b80d6af7 Encourage users to report errors in logs 2021-12-12 20:44:03 +01:00
a8623d8066 Fix ftl error related to url.loginAction in saml-post-form.ftl 2021-12-12 20:17:50 +01:00
86ab9f72a5 Ftl prevent error with updateProfileCtx 2021-12-12 19:35:28 +01:00
b3892dab8d Ftl prevent error with auth.attemptedUsername 2021-12-12 19:19:17 +01:00
57a5d034dd Fix ftl error as comment formatting 2021-12-12 19:06:12 +01:00
cee9569581 Refactor: Create ftl function are_same_path (changelog ignore) 2021-12-12 18:59:39 +01:00
159429da6e Remove extra semicollon in ftl (changelog ignore) 2021-12-12 17:39:39 +01:00
a292cb0b4b Merge remote-tracking branch 'origin/main' into doge_ftl_errors 2021-12-12 14:12:31 +01:00
d70985d8d2 Update README, remove all instruction about errors in logs 2021-12-12 14:10:00 +01:00
484f95f5d2 Bump beta version (changelog ignore) 2021-12-12 12:53:11 +01:00
6e0553af9b Avoid error in Keycloak logs, fix long template loading time 2021-12-12 05:38:21 +01:00
cb18d3d765 Bump version (changelog ignore) 2021-12-12 05:29:59 +01:00
f316f38ae5 Update CI workflow (changelog ignore) 2021-12-12 05:29:59 +01:00
5f07cb374b Update changelog v4.2.13 2021-12-12 05:29:59 +01:00
96d31e07c3 Update about future fixes (changelog ignore) 2021-12-11 20:26:37 +01:00
99a5efe36c Add missing collon in README sample code
Add miss ','
2021-12-09 21:16:05 +01:00
5c46ecc0ed Update CI workflow (changelog ignore) 2021-12-09 01:57:03 +01:00
cf93b68816 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-12-09 01:42:51 +01:00
457421b8d6 Update CI workflow (changelog ignore) 2021-12-09 01:42:43 +01:00
d36ea9539a Update changelog v4.2.13 2021-12-08 14:54:09 +00:00
5a5337dc63 Bump version (changelog ignore) 2021-12-08 15:40:46 +01:00
443081cc28 Fix broken link about how to import fonts #62 2021-12-08 15:40:11 +01:00
ac8503f8c8 Add video to show how to get the template to load faster in developpement (changelog ignore) 2021-12-08 15:32:12 +01:00
1cc1fd0a5a Add a video to show how to test the theme in a local container 2021-12-08 15:28:26 +01:00
34314aa4ca Update changelog v4.2.12 2021-12-08 13:21:26 +00:00
0d8dcf4829 Bump version (changelog ignore) 2021-12-08 14:12:51 +01:00
47c6d0dd62 Update post build instructions 2021-12-08 14:12:35 +01:00
84937e3eec Update notice about long loading time (changelog ignore) 2021-12-08 13:56:06 +01:00
303e270b56 Add instruction for building on windows (changelog ignore) 2021-12-08 13:52:16 +01:00
29fbcdc0a6 fix: errors in common.ftl
ref: https://github.com/InseeFrLab/keycloakify/issues/58
2021-12-08 10:30:36 +03:00
bb1ada6e14 Update changelog v4.2.11 2021-12-07 23:27:11 +00:00
4a422cc796 Bump (changelog ignore) 2021-12-08 00:22:40 +01:00
be0f244c02 Update tss-react (changelog ignore) 2021-12-08 00:22:06 +01:00
78a8dc8458 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-12-07 15:20:49 +01:00
38062af889 Add info with pages taking too long to load #58 (changelog ignore) 2021-12-07 15:20:37 +01:00
f2eadf5441 Update changelog v4.2.10 2021-11-12 18:12:04 +00:00
a42931384f Bump version (changelog ignore) 2021-11-12 19:02:49 +01:00
8116ce697b Export an exaustive list of KcLanguageTag 2021-11-12 19:02:25 +01:00
4964b86d67 Update changelog v4.2.9 2021-11-11 19:25:32 +00:00
2b331e7655 Bump version (changelog ignore) 2021-11-11 20:20:47 +01:00
c1468b688e Fix useAdvancedMsg 2021-11-11 20:20:25 +01:00
4f7837c88e Update changelog v4.2.8 2021-11-10 19:25:10 +00:00
fd8e06f1dd Bump version (changelog ignore) 2021-11-10 20:20:48 +01:00
b01a351eaa Update doc about pattern that can be used for user attributes #50 2021-11-10 20:00:53 +01:00
604655c02d Bring back Safari compat 2021-11-10 19:48:18 +01:00
6603ac4389 Update changelog v4.2.7 2021-11-09 00:52:25 +00:00
cca6f952ee Bump version (changelog ignore) 2021-11-09 01:49:15 +01:00
df94a6322d Fix useFormValidationSlice 2021-11-09 01:48:50 +01:00
73e7f64860 Update changelog v4.2.6 2021-11-08 18:38:37 +00:00
e17e1650d5 Bump version (changelog ignore) 2021-11-08 19:33:27 +01:00
3ecb63d500 Fix deepClone so we can overwrite with undefined in when we mock kcContext 2021-11-08 19:33:06 +01:00
41ee7e90ef Update changelog v4.2.5 2021-11-07 19:21:35 +00:00
c70bba727e Bump version (changelog ignore) 2021-11-07 20:17:39 +01:00
747248454d Better debugging experience with user profile 2021-11-07 20:17:14 +01:00
59386241b4 Update changelog v4.2.4 2021-11-01 22:21:39 +00:00
c70b9b0dd1 Bump version (changelog ignore) 2021-11-01 23:15:02 +01:00
2ee00ed919 Better autoComplete typings 2021-11-01 22:28:53 +01:00
cbfc271da5 Update changelog v4.2.3 2021-11-01 21:22:58 +00:00
d45b492837 Bump version (changelog ignore) 2021-11-01 22:16:16 +01:00
ed54c145b7 Make it more easy to understand that error in the log are expected 2021-11-01 22:15:56 +01:00
64ed9a6044 Update changelog v4.2.2 2021-10-27 09:01:53 +00:00
75267abd91 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-27 10:58:43 +02:00
ba9a3992b7 Bump version (changelog ignore) 2021-10-27 10:58:33 +02:00
a74c32ed6d Update changelog v4.2.1 2021-10-27 10:58:33 +02:00
c5f9812acc Replace 'path' by 'browserify-path' #47 2021-10-27 10:58:10 +02:00
bb0d6853e5 Update changelog v4.2.1 2021-10-26 16:13:04 +00:00
8c9fe168d8 Bump version (changelog ignore) 2021-10-26 18:10:04 +02:00
6c874c01b7 useFormValidationSlice: update when params have changed 2021-10-26 18:09:37 +02:00
5bc84b621c Add notice about the fact that keycloakify have to be updated (changelog ignore) 2021-10-26 17:21:01 +02:00
dd421eedf5 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-26 16:16:15 +02:00
570d8a73cc Explains that the password can't be validated 2021-10-26 16:16:10 +02:00
a95df42843 Update changelog v4.2.0 2021-10-26 14:11:15 +00:00
4ecbb30a1b Bump version (changelog ignore) 2021-10-26 16:08:00 +02:00
96b40b9c49 Export types definitions for Attribue and Validator 2021-10-26 16:07:30 +02:00
c32eebdd46 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-26 14:59:23 +02:00
5b17287555 Move changelog highlight at the bottom of the REAMDE 2021-10-26 14:59:15 +02:00
fb01257c8b Update changelog v4.1.0 2021-10-26 12:56:11 +00:00
53470f8788 Bump version (changelog ignore) 2021-10-26 14:53:09 +02:00
89b86936f6 Document what's new in v4 2021-10-26 14:50:57 +02:00
d3a07edfcb Update changelog v4.0.0 2021-10-26 11:18:45 +00:00
98a3d6564e Bump version (changelog ignore) 2021-10-26 13:14:46 +02:00
50a20c68ed fix RegisterUserProfile password confirmation field 2021-10-26 13:14:46 +02:00
3aad681538 Much better support for frontend field validation 2021-10-26 13:14:46 +02:00
92fb3b7529 Fix css injection order 2021-10-26 13:14:46 +02:00
1572f1137a Makes the download output predictable. This fixes the case where GitHub redirects and wget was trying to download a filename called "15.0.2", and then unzip wouldn't pick it up.
Changes wget to curl because curl is awesome. -L is to follow the GitHub redirects.
2021-10-21 16:20:50 +02:00
b5075dd1eb Remove duplicates 2021-10-19 14:54:02 -03:00
9119caa843 Update changelog v3.0.2 2021-10-18 12:53:24 +00:00
f5c5a79064 Bump version (changelog ignore) 2021-10-18 14:50:23 +02:00
357d804124 Scan deeper to retreive user attribute 2021-10-18 14:50:04 +02:00
d59cb3b470 Update changelog v3.0.1 2021-10-17 17:22:44 +00:00
8ac292bd97 Bump version (changelog ignore) 2021-10-17 19:18:19 +02:00
c6cab82546 Add client.description in type kcContext type def 2021-10-17 19:17:58 +02:00
04bf3692e4 Update changelog v3.0.0 2021-10-16 13:24:00 +00:00
6602aa0ee4 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-16 15:18:27 +02:00
c8e099dedb Bump version (changelog ignore) 2021-10-16 15:18:18 +02:00
9ede0800f1 Update deps (changelog ignore) 2021-10-16 15:17:47 +02:00
fbdae316c7 Update README for v3 (changelog ignore) 2021-10-16 15:16:52 +02:00
da0baebb31 Update changelog v2.5.3 2021-10-16 01:39:37 +00:00
47906499a8 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-16 03:30:01 +02:00
9ceef8f09e Bump version (changelog ignore) 2021-10-16 03:29:49 +02:00
d5b5c79d14 Update deps (changelog ignore) 2021-10-16 03:29:30 +02:00
6b3ca3230c Update changelog v2.5.2 2021-10-13 15:42:16 +00:00
49376b1572 Bump version (changelog ignore) 2021-10-13 17:34:55 +02:00
c94c037f65 Update powerhooks (changelog ignore) 2021-10-13 17:34:40 +02:00
2ee45cd7c9 Update changelog v2.5.1 2021-10-13 11:42:54 +00:00
72079ca028 Bump version (changelog ignore) 2021-10-13 13:34:02 +02:00
94d0bd29cd Update tss-react 2021-10-13 13:33:43 +02:00
8cea4239aa Fix link (changelog ignore) 2021-10-12 03:22:25 +02:00
6dca6a93d8 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-12 03:18:24 +02:00
92d577e3e2 Update readme for version 2.5 (changelog ignore) 2021-10-12 03:18:14 +02:00
59f106bf9e Update changelog v2.5.0 2021-10-12 00:14:04 +00:00
913a6c3ec3 Bump version (changelog ignore) 2021-10-12 02:09:32 +02:00
57932386bf register-user-profile.ftl tested working 2021-10-12 02:09:09 +02:00
e3df4b83eb Better prettier params (changelog ignore) 2021-10-12 00:26:29 +02:00
ef5b01956a Make kcMessage more easily hackable 2021-10-12 00:24:08 +02:00
0e8984e5b1 fix useKcMessage 2021-10-11 23:35:32 +02:00
403aedf1fe Remove script from other project (changelog ignore) 2021-10-11 21:39:16 +02:00
53d3646523 Fix workflow (changelog ignore) 2021-10-11 21:38:15 +02:00
305ce9e44d Remove eslint and run prettier (changelog ignore) 2021-10-11 21:35:40 +02:00
9f8218efb7 setup prettier and eslint (changelog ignore) 2021-10-11 21:09:05 +02:00
c4ba470dc4 Implement and type validators 2021-10-11 20:56:43 +02:00
637bc75fc2 Remove syntax error in ftl and make it more directly debugable 2021-10-11 13:46:47 +02:00
4ad3affadb fmt (changelog ignore) 2021-10-11 04:06:59 +02:00
bd403beb5c Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-11 03:41:13 +02:00
20f528a167 Update tsafe (changelog ignore) 2021-10-11 03:41:05 +02:00
4ca2bc59b6 Support register-user-profile.ftl 2021-10-11 03:25:02 +02:00
91c6839447 Update changelog v2.4.0 2021-10-08 00:10:35 +00:00
c388c77f4a Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-08 02:04:31 +02:00
19fb365271 Bump version (changelog ingore) 2021-10-08 02:04:25 +02:00
92946ef6bb #38: Implement messagesPerField existsError and get 2021-10-08 02:03:27 +02:00
7fad7a67a0 Update changelog v2.3.0 2021-10-07 23:52:06 +00:00
392377bf2d Bump version (changelog ignore) 2021-10-08 01:46:53 +02:00
95a53d37f6 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-08 01:46:02 +02:00
2d03fbce79 #20: Support advancedMsg 2021-10-08 01:45:51 +02:00
37a0692f9f Update changelog v2.2.0 2021-10-07 19:16:45 +00:00
2c82a2332f Fix build (changelog ignore) 2021-10-07 21:12:58 +02:00
2f78f0f5e2 Bump version (changelog ignore) 2021-10-07 21:01:24 +02:00
c52b8cc98e Feat scrip: download-builtin-keycloak-theme for downloading any version of the builtin themes 2021-10-07 21:00:53 +02:00
fb5f358686 Use the latest version of keycloak for testing 2021-10-07 17:32:38 +02:00
60d5a8e881 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-07 16:07:20 +02:00
6cbebf3b13 Test locally with 15.0.2 instead of 11.0.3 2021-10-07 15:37:35 +02:00
f1269bbfe1 Update changelog v2.1.0 2021-10-06 15:27:35 +00:00
d1be21ace3 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-10-06 17:23:14 +02:00
cf2317884c Bump version (changelog ignore) 2021-10-06 17:23:08 +02:00
7a37a6127d Support Hungarian and Danish (use Keycloak 15 language resources) 2021-10-06 17:22:52 +02:00
1d4e5792fd Update changelog v2.0.20 2021-10-05 17:56:03 +00:00
1df329448b Bump version (changelog ignore) 2021-10-05 15:35:59 +02:00
d6762547a3 Update powerhooks (changelog igonre) 2021-10-05 15:35:33 +02:00
a31a6d17d4 Update README.md 2021-09-28 01:11:56 +02:00
8069ede90a Update changelog v2.0.19 2021-09-17 21:03:02 +00:00
ce956172df Bump version (changelog ingore) 2021-09-17 22:57:59 +02:00
874cec81e0 Fix kcContext type definitions 2021-09-17 22:57:38 +02:00
7b24b13dca Update changelog v2.0.18 2021-09-14 23:30:24 +00:00
e4dd3ed898 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-09-15 01:26:26 +02:00
e5804ce778 Bump version (changelog ignore) 2021-09-15 01:26:16 +02:00
b6db47c243 Update deps (changelog ignore) 2021-09-15 01:25:56 +02:00
cde1881ab1 Update changelog v2.0.17 2021-09-14 23:16:31 +00:00
23afef7857 Bump version (changelog ignore) 2021-09-15 01:14:36 +02:00
bdf09c7a45 Update tss-react (changelog ignore) 2021-09-15 01:14:12 +02:00
6957a03a87 Update changelog v2.0.16 2021-09-12 02:57:06 +00:00
11e688d638 Bump version (changelog ignore) 2021-09-12 04:54:44 +02:00
eb39de6b34 Update dependencies (changelog ignore) 2021-09-12 04:54:15 +02:00
a0f937615e Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-09-07 23:48:12 +02:00
2ee7d2e698 Add explaination about errors in logs 2021-09-07 23:48:06 +02:00
7dc39a323a Fix typo (changelog ignore) 2021-09-03 01:22:09 +02:00
672717372e Update changelog v2.0.15 2021-08-31 23:33:11 +00:00
2ad2efa15e Bump version (changelog ignore) 2021-09-01 01:30:01 +02:00
f638fcdf51 Update tss-react 2021-09-01 01:29:43 +02:00
a47695d7e0 Update changelog v2.0.14 2021-08-20 15:08:42 +00:00
1bc1fea5cc Bump version (changelog ignore) 2021-08-20 17:04:43 +02:00
97544a952f Update tss-react 2021-08-20 17:03:50 +02:00
1c2a55f2fd Update changelog v2.0.13 2021-08-04 15:11:03 +00:00
8aa0bd189e Bump version (changelog ignore) 2021-08-04 17:07:28 +02:00
d648caa37f Merge pull request #28 from marcmrf/main
fix(mvn): scoped packages compatibility
2021-08-04 17:04:39 +02:00
34263661d7 fix(mvn): scoped packages compatibility 2021-08-04 16:12:54 +02:00
f4a6fd5c5e Update changelog v2.0.12 2021-07-28 09:26:19 +00:00
fc9ddfb8d8 Bump version (changelog ignore) 2021-07-28 11:23:11 +02:00
f8d0aff386 Better requirements (changelog ignore) 2021-07-28 11:22:54 +02:00
ac100d74bf Merge pull request #27 from jchn-codes/patch-1
add maven to requirements
2021-07-28 11:14:41 +02:00
9b1e4e9111 add maven to requirements 2021-07-28 10:26:12 +02:00
3e54b64bc4 Add #bluehats in the keyworks 2021-07-25 19:32:25 +02:00
914d2a787d Update changelog v2.0.11 2021-07-21 20:45:40 +00:00
95add5b1d0 Bump version (changelog ignore) 2021-07-21 22:42:47 +02:00
b1e24212ea Spaces in file path #22 2021-07-21 22:42:00 +02:00
a1bec78ea2 uptdate dependnecies 2021-07-21 22:12:10 +02:00
05c98eb074 Inport specific powerhooks files to reduce bundle size 2021-07-21 22:10:28 +02:00
2688aefdfb Update changelog v2.0.10 2021-07-16 17:10:54 +00:00
eaa6582e67 Bump version (changelog ignore) 2021-07-16 19:06:17 +02:00
a136bc619d Update dependencies 2021-07-16 19:05:56 +02:00
8780c516fa Update changelog v2.0.9 2021-07-14 23:31:29 +00:00
b4bdec7970 Bump version (changelog ignore) 2021-07-15 01:28:54 +02:00
671aeadf29 Fix #21 2021-07-15 01:28:31 +02:00
341d985610 Update changelog v2.0.8 2021-07-12 13:37:01 +00:00
76b9a78182 Bump version (changelog ignore) 2021-07-12 15:34:09 +02:00
021c0a9429 Fix previous release 2021-07-12 15:33:50 +02:00
7b3462d158 Bump version (changelog ignore) 2021-07-12 15:19:47 +02:00
c180dee414 #20: Add def for clientId and name on kcContext.client 2021-07-12 15:19:31 +02:00
769da5c5ca update language statistics config (changelog ignore) 2021-07-09 08:04:48 +00:00
1a4dd79240 update language statistics config (changelog ignore) 2021-07-09 08:01:50 +00:00
5cf290b033 Update changelog v2.0.6 2021-07-08 01:08:57 +00:00
aec3da25b3 Bump version (changelog ignore) 2021-07-08 02:44:54 +02:00
66d7cb563d Merge pull request #18 from asashay/add-custom-props-to-theme-properties
Add possibility to add custom properties to theme.properties file
2021-07-08 02:43:37 +02:00
551e9c041e add possibility to add custom properties to theme.properties file 2021-07-06 15:52:14 +03:00
fffb6d5b5e Update changelog v2.0.5 2021-07-05 01:10:51 +00:00
ac0bfeb360 Bump version (changelog ignore) 2021-07-05 03:06:49 +02:00
7c30059ca3 Fix broken url for big stylesheet #16 2021-07-05 03:06:31 +02:00
fdb9ae6c40 Update changelog v2.0.4 2021-07-03 00:41:40 +00:00
3c82ffc0ab Bump version (changelog ignore) 2021-07-03 02:39:59 +02:00
5dd3103aba Fix: #7 2021-07-03 02:39:39 +02:00
84fc81f531 Update changelog v2.0.3 2021-06-30 20:05:50 +00:00
a20cbc62a5 Bump version (changelog ignore) 2021-06-30 22:01:25 +02:00
e6a93e2838 Escape double quote in ftl to js conversion #15 2021-06-30 22:01:01 +02:00
3cff54561f Update readme 2021-06-29 02:31:41 +02:00
e50a6a7876 Update changelog v2.0.2 2021-06-28 13:30:05 +00:00
b887ec839b Updagte README for implementing non incuded pages 2021-06-28 15:27:08 +02:00
465daa19a0 Update changelog v2.0.1 2021-06-28 05:04:20 +00:00
6c2b761d95 Bump version (changelog ignore) 2021-06-28 06:58:43 +02:00
0e8f95ce19 Update documentation for v2 2021-06-28 06:58:00 +02:00
6a17f343c6 Update changelog v2.0.0 2021-06-28 03:49:38 +00:00
1a45fb0039 Update changelog v2.0.0 2021-06-28 03:33:08 +00:00
75032898d6 Bump to v2 🚀 (changelog ignore) 2021-06-28 05:31:00 +02:00
88a4c97428 Fix last bugs before relasing v2 2021-06-28 05:30:09 +02:00
82e7a7edae Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-06-28 04:04:56 +02:00
eac28f97b8 Implement a mechanism to overload kcContext 2021-06-28 04:04:48 +02:00
e160882db9 fmt (changelog ignore) 2021-06-23 18:55:36 +02:00
2bc07e77fd Give the option in template to pull the default assets or not 2021-06-23 18:27:41 +02:00
c9b2db625c Enable possiblity to support custom pages (without forking keycloakify) 2021-06-23 18:03:49 +02:00
e3b41c9bd1 Implement a getter for kcContext 2021-06-23 08:16:51 +02:00
4aaee35d9c Update README.md 2021-06-23 06:52:59 +02:00
beedbc695a Update changelog v1.2.1 2021-06-22 16:30:35 +00:00
7123edc986 Bump version (changelog ignore) 2021-06-22 18:26:26 +02:00
3008a754ce Remove unessesary log 2021-06-22 18:26:05 +02:00
70e3fb8de6 Update changelog v1.2.0 2021-06-22 10:42:42 +00:00
9cf75da732 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-06-22 12:37:23 +02:00
2cd266caff Generate kcContext automatically 🚀 2021-06-22 12:37:21 +02:00
28036f1da5 Update changelog v1.1.6 2021-06-21 14:04:36 +00:00
0dacf2fe30 Bump version (changelog ignore) 2021-06-21 15:59:44 +02:00
32f5ef5e5c Fix: Alert messages sometimes includes HTML that is not rendered 2021-06-21 15:59:23 +02:00
98d91bbde7 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-06-21 15:58:40 +02:00
7a92a75d83 Update dist 2021-06-21 15:57:22 +02:00
f5556a02fc Update changelog v1.1.5 2021-06-15 15:38:25 +00:00
1050f4d928 Bump version (changelog ignore) 2021-06-15 17:32:26 +02:00
9276b08f4b #11: Provide socials in the register 2021-06-15 17:32:03 +02:00
a501af669c Update changelog v1.1.4 2021-06-15 12:59:00 +00:00
85343fcefe Bump version (changelog ignore) 2021-06-15 14:49:46 +02:00
b11dfde6e6 Merge pull request #12 from InseeFrLab/email-typo
Fix typo on email
2021-06-15 14:38:27 +02:00
38d2108f02 Fix typo on email 2021-06-15 09:47:22 +02:00
2b67544517 Update changelog v1.1.3 2021-06-14 22:36:25 +00:00
0d443ca88e Add missing key in Login for providers 2021-06-15 00:31:20 +02:00
71f7a5819d Update changelog v1.1.2 2021-06-14 21:33:09 +00:00
5f4abee615 Fix previous build (changelog ignore) 2021-06-14 23:27:15 +02:00
f5ee949006 Fix CI (changelog ignore) 2021-06-14 23:15:41 +02:00
7e85085558 Bump version (changelog ingore) 2021-06-14 23:10:53 +02:00
55a0b27f16 Fix previous build (changelog ignore) 2021-06-14 23:10:35 +02:00
eb0e814f94 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-06-14 22:41:29 +02:00
b7fe20c5a5 Update CI (changelog ignore) 2021-06-14 22:41:22 +02:00
2b23d03ca5 Update changelog v1.1.1 2021-06-14 20:37:47 +00:00
7075be20c8 Bump version (changelog ignore) 2021-06-14 22:30:35 +02:00
3ce8b06246 Add missing shebang directive (changelog ignore) 2021-06-14 22:30:16 +02:00
ee5c29f30f Update changelog v1.1.0 2021-06-14 19:33:53 +00:00
242dad3ea0 Bump version (changelog ignore) 2021-06-14 21:28:23 +02:00
d8701925df Refactor dir structure (changelog ignore) 2021-06-14 21:27:18 +02:00
e2d669ce31 Refactor dir structure (changelog ignore) 2021-06-14 21:24:56 +02:00
af93664c71 Refactor dir structure (changelog ignore) 2021-06-14 21:23:14 +02:00
daa3efa534 Refactor dir structure (changelog ignore) 2021-06-14 21:21:36 +02:00
2c7c8397f0 Add login-idp-link-confirm.ftl 2021-06-14 21:19:46 +02:00
821ba2cbe2 Fix login-update-profile.ftl 2021-06-14 19:19:42 +02:00
a17ddb02fa Add Typescript: strict in readme (changelog ignore) 2021-06-14 19:15:58 +02:00
b89557e8d8 Add login-update-profile.ftl page 2021-06-14 19:06:31 +02:00
cad1f8b957 Fix default background bug 2021-06-14 19:05:50 +02:00
f82cc788bf Remove unused 'markdown' dependency 2021-06-14 15:20:03 +02:00
06f9cd3e68 Fix warning related to powerhooks_useGlobalState_kcLanguageTag 2021-06-12 00:11:56 +02:00
5113a838e7 Update README.md 2021-05-29 08:42:49 +02:00
645a84c82a Update changelog v1.0.4 2021-05-28 17:44:37 +00:00
925fc43d0f Bump version (changelog ignore) 2021-05-28 19:41:15 +02:00
8e33d24c63 Instructions for custom themes with custom components 2021-05-28 19:23:38 +02:00
984ef63661 Update changelog v1.0.3 2021-05-23 20:22:50 +00:00
a8daf175ea Instuction about how to integrate with non CRA projects 2021-05-23 22:19:51 +02:00
055263a3da Add mention to awesome list 2021-05-15 22:41:30 +02:00
9990b0ab05 fmt (changelog ignore) 2021-05-01 18:05:40 +02:00
423397ce3e Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-05-01 18:04:07 +02:00
954567712c Give hint about where to find the ftl files (changelog ignore) 2021-05-01 18:03:35 +02:00
9f52eb8123 Update changelog v1.0.2 2021-05-01 14:17:28 +00:00
744b198fb4 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-05-01 16:15:44 +02:00
15eab797c3 Add key for child in a list (changelog ignore) 2021-05-01 16:15:40 +02:00
8ff86b1e29 Update changelog v1.0.1 2021-05-01 14:12:41 +00:00
e1b8760ee3 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-05-01 16:10:57 +02:00
bd0d890b2c Fix: LoginOtp (and not otc) 2021-05-01 16:10:52 +02:00
2a2118d769 Update changelog v1.0.0 2021-05-01 13:52:33 +00:00
9839b64650 Bump version (changelog ignore) 2021-05-01 15:50:45 +02:00
2bf55e12f9 Guide for implementing a missing page (fix, changelog ignore) 2021-05-01 15:50:12 +02:00
2249fa9232 #4: Guide for implementing a missing page 2021-05-01 15:48:49 +02:00
f673a65304 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-05-01 14:56:01 +02:00
0163459ad6 Support OTP #4 2021-05-01 14:55:58 +02:00
b21123cc9d Update changelog v0.4.4 2021-04-29 21:33:33 +00:00
7800d125b2 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-04-29 23:31:12 +02:00
89ea648f18 Fix previous release 2021-04-29 23:31:05 +02:00
ab7ac3c2d0 Update changelog v0.4.3 2021-04-29 17:07:48 +00:00
b16319d962 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-04-29 19:02:16 +02:00
f8012d5dfb Bump version (changelog ignore) 2021-04-29 19:00:56 +02:00
45a2015597 Add infos about the plugin that defines authorizedMailDomains 2021-04-29 19:00:38 +02:00
524ab000be Update changelog v0.4.2 2021-04-29 16:47:44 +00:00
d73cfb8765 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-04-29 18:42:29 +02:00
8164f5373f Client side validation of allowed email domains 2021-04-29 18:42:14 +02:00
824b0c275e fmt (changelog ignore) 2021-04-21 20:45:03 +02:00
f8d83d7a37 Update README (changelog ignore) 2021-04-20 11:44:57 +02:00
b291526b13 Support email whitlisting 2021-04-15 12:20:08 +02:00
e1c310d383 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-04-12 23:46:29 +02:00
242777a8eb Restore kickstart video in the readme 2021-04-12 23:46:24 +02:00
10a6b70fe9 Update README.md 2021-04-12 19:27:54 +02:00
c829f5969c Update README.md 2021-04-12 18:51:16 +02:00
ba6a5047b1 Add note (changelog ignore) 2021-04-12 04:59:39 +02:00
852f48c05f update gif (changelog ignore) 2021-04-12 04:47:53 +02:00
c342f04a92 Update video (changelog ignore) 2021-04-12 04:21:18 +02:00
42eb8147c6 fmt (changelog ignore) 2021-04-12 02:29:24 +02:00
ebcdbd782f fmt (changelog ignore) 2021-04-12 02:28:22 +02:00
d2059e08d1 fmt (changelog ignore) 2021-04-12 02:25:48 +02:00
4f075882d5 Merge branch 'main' of https://github.com/garronej/keycloakify into main 2021-04-12 02:24:17 +02:00
044ec1a2da Important readme update 2021-04-12 02:24:11 +02:00
a49a32703d Update changelog v0.4.1 2021-04-11 16:24:36 +00:00
46ec832767 Quietly re-introduce --external-assets 2021-04-11 18:18:52 +02:00
fc858b3db6 Update screenshot (changelog ignore) 2021-04-11 01:21:01 +02:00
3cd8843157 Update screenshot in readme for therms and conditions (changelog ignore) 2021-04-10 20:20:26 +02:00
c9358ea8dd Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-09 04:02:30 +02:00
354a4db0f6 Give example of customization 2021-04-09 04:02:23 +02:00
90d435d96b Update changelog v0.4.0 2021-04-09 01:31:07 +00:00
2d804f0f0f Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-09 03:26:06 +02:00
1c9acedac0 Bump version (changelog ignore) 2021-04-09 03:26:01 +02:00
6e914e4ea3 Acual support of Therms of services 2021-04-09 03:25:39 +02:00
f0c4786267 Update changelog v0.3.24 2021-04-08 16:14:10 +00:00
0b16159312 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-08 18:00:04 +02:00
ea8a91e069 Add missing dependency: markdown 2021-04-08 17:59:58 +02:00
59db202fe4 Update changelog v0.3.23 2021-04-08 15:43:34 +00:00
09927afd43 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-08 17:40:54 +02:00
13c6122b9b Bump version (changelog ignore) 2021-04-08 17:06:26 +02:00
1bb19f65a2 Allow to lazily load therms 2021-04-08 17:06:09 +02:00
918a80cfb6 Update changelog v0.3.22 2021-04-08 13:48:41 +00:00
ed7d5eabcb Bump version (changelog ignore) 2021-04-08 15:43:12 +02:00
2795109162 update powerhooks 2021-04-08 15:42:41 +02:00
966f277628 Support terms and condition 2021-04-08 15:41:40 +02:00
36d60411f9 Fix info.ftl 2021-04-08 12:54:29 +02:00
60fe33f3fd Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-08 12:20:14 +02:00
1df685df92 For useKcMessage we prefer returning callbacks with a changing references 2021-04-08 12:20:06 +02:00
7894d95ace Update changelog v0.3.21 2021-04-04 19:20:27 +00:00
a8b4493aa1 update yarn.lock (changelog ignore) 2021-04-04 21:17:35 +02:00
715a7399cf Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-04 21:12:39 +02:00
a1e59bae23 Update powerhooks 2021-04-04 21:12:30 +02:00
b0819314a1 Update changelog v0.3.20 2021-04-01 22:37:41 +00:00
0099442543 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-01 23:43:14 +02:00
66a0b07228 Bump version (changelog ignore) 2021-04-01 23:43:08 +02:00
85f9544754 Always catch freemarker errors 2021-04-01 23:42:31 +02:00
2f16a09ab8 Update changelog v0.3.19 2021-04-01 15:21:10 +00:00
183ae98c30 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-01 17:16:01 +02:00
ba15e63879 Bump version (changelog ignore) 2021-04-01 17:15:55 +02:00
654277feda Fix previous release 2021-04-01 17:15:28 +02:00
81279a5cc5 Update changelog v0.3.18 2021-04-01 15:04:08 +00:00
59f0a843b0 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-04-01 16:52:53 +02:00
c094f70171 Bump version (changelog ignore) 2021-04-01 16:51:50 +02:00
0858fe6319 Fix error.ftt, Adopt best effort strategy to convert ftl values into JS 2021-04-01 16:51:28 +02:00
5012ec0ccc Update changelog v0.3.17 2021-03-29 04:33:07 +00:00
990a24fab2 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-29 06:27:19 +02:00
036b6bf82a Use push instead of replace in keycloak-js adapter to enable going back 2021-03-29 06:27:12 +02:00
8272a02b52 Update changelog v0.3.15 2021-03-28 12:18:37 +00:00
e346b1d9d2 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-28 14:14:52 +02:00
2309bd21c6 Remove all reference to --external-assets, broken feature 2021-03-28 14:14:43 +02:00
7d6476c1b5 Update changelog v0.3.14 2021-03-28 11:39:36 +00:00
e892a0e7e6 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-28 13:37:07 +02:00
ca5b41e730 Fix standalone mode: imports from js 2021-03-28 13:37:02 +02:00
9b18234112 Update changelog v0.3.13 2021-03-26 16:54:38 +00:00
5274368f47 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-26 17:49:36 +01:00
1415c24028 Bump version (changelog ignore) 2021-03-26 17:49:31 +01:00
4a084f5859 Fix previous release (changelog ignore) 2021-03-26 17:49:09 +01:00
a30c9eb0cd Update changelog v0.3.12 2021-03-26 16:35:41 +00:00
85d3b40b8e Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-26 17:31:06 +01:00
335afec230 Bump version (changelog ignore) 2021-03-26 17:31:01 +01:00
69fa49848a Fix mocksContext 2021-03-26 17:30:04 +01:00
7a09051127 Update changelog v0.3.11 2021-03-26 14:36:48 +00:00
07ee0ecb8b Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-26 15:29:23 +01:00
6f133428f8 Fix previous build, improve README 2021-03-26 15:29:17 +01:00
4f733736db fmt (changelog ignore) 2021-03-26 14:06:14 +01:00
d96ff13a67 Update changelog v0.3.10 2021-03-26 13:05:25 +00:00
2c1351ce47 fmt (changelog ignore) 2021-03-26 14:04:45 +01:00
96cd56ec77 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-26 14:02:46 +01:00
e5b2096d65 Bump version (changelog ignore) 2021-03-26 14:02:40 +01:00
3aa140335f Handle <style> tag, improve documentation 2021-03-26 14:02:14 +01:00
4cafaa2492 Update changelog v0.3.9 2021-03-25 11:54:13 +00:00
9c633a7521 Update readme 2021-03-25 12:48:40 +01:00
e27845ba91 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-25 12:01:15 +01:00
2a8708a45b Document --external-assets 2021-03-25 12:01:11 +01:00
6874fa4c24 Update README.md 2021-03-24 09:12:50 +01:00
ba531a4927 Update README.md 2021-03-24 09:12:04 +01:00
20175b57cf Update README.md 2021-03-24 09:10:44 +01:00
ad275e4c34 Update changelog v0.3.8 2021-03-22 22:36:17 +00:00
060b9fe0de Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-22 23:34:13 +01:00
17b24d14ed Make standalone mode the default 2021-03-22 23:34:07 +01:00
2d278b0680 Update changelog v0.3.7 2021-03-22 19:57:34 +00:00
fb5975e4f1 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-22 20:54:35 +01:00
24fccaf513 (test) external asset mode by default 2021-03-22 20:54:28 +01:00
293953aa1b Update changelog v0.3.6 2021-03-22 19:02:53 +00:00
1049e312f9 Fix previous release 2021-03-22 20:00:58 +01:00
a2db250600 Update changelog v0.3.5 2021-03-22 18:43:18 +00:00
cf7fe8c337 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-22 19:41:08 +01:00
f5350097bf Bump version (changelog ignore) 2021-03-22 19:40:58 +01:00
1cb5dd461b support homepage with urlPath 2021-03-22 19:40:38 +01:00
845599a5e8 Update changelog v0.3.4 2021-03-22 06:23:40 +00:00
0cc02c292f Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-22 07:21:36 +01:00
1919702326 Bugfix: Import assets from CSS 2021-03-22 07:21:31 +01:00
0c0052e1cd Update changelog v0.3.3 2021-03-22 04:27:01 +00:00
78622770ec Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-22 05:21:22 +01:00
7b86727394 Fix submit not receving correct text 2021-03-22 05:21:05 +01:00
0965f8648e Update changelog v0.3.2 2021-03-21 21:31:01 +00:00
98974b4367 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-21 22:25:49 +01:00
597bcadd9e Fix broken previous release 2021-03-21 22:25:47 +01:00
4d9aabcb91 Update changelog v0.3.1 2021-03-21 21:13:36 +00:00
1606c2884d kcHeaderClass can be updated after initial mount 2021-03-21 22:10:33 +01:00
12f69b593f Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-20 05:07:26 +01:00
1ca45f90d0 Update readme (changelog ignore) 2021-03-20 05:07:22 +01:00
a91a5616f9 Update changelog v0.3.0 2021-03-20 04:02:59 +00:00
c525e09368 Bump version 2021-03-20 05:00:14 +01:00
f5bba4a6a0 Feat: Cary over states using URL search params 2021-03-20 04:59:18 +01:00
77a37fb573 Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-20 02:54:21 +01:00
6b24c5878c Bugfix: with kcHtmlClass 2021-03-20 02:54:15 +01:00
f4414e1249 Update changelog v0.2.10 2021-03-19 23:19:03 +00:00
b72971f4ce Merge branch 'main' of https://github.com/InseeFrLab/keycloakify into main 2021-03-20 00:17:06 +01:00
b9af4e6804 Bump version (changelog ingnore) 2021-03-20 00:16:58 +01:00
2fd1d42d1e Remove dependency to denoify 2021-03-20 00:16:34 +01:00
3cfc7d7fa9 Update changelog v0.2.9 2021-03-19 23:14:27 +00:00
b5d9055fcf Bump version (changelog ignore) 2021-03-20 00:09:37 +01:00
63d644d95f Update deps and CI workflow 2021-03-20 00:09:12 +01:00
e16192b416 Update changelog v0.2.8 2021-03-19 21:42:31 +00:00
505e018448 Bump version (changelog ignore) 2021-03-19 22:39:48 +01:00
5ced0e2809 Bugfix: keycloak_build that grow and grow in size 2021-03-19 22:39:32 +01:00
0e1d919f7e Add disclaimer about maitainment strategy 2021-03-15 16:22:13 +01:00
a009db998e Merge branch 'develop' of https://github.com/garronej/keycloakify into develop 2021-03-15 16:05:28 +01:00
d6c6bd933b Add a note for tested version support 2021-03-15 16:05:21 +01:00
859cc03f35 Update changelog v0.2.7 2021-03-13 11:56:59 +00:00
1a3b8ae3b8 Merge branch 'develop' of https://github.com/garronej/keycloakify into develop 2021-03-13 12:51:41 +01:00
863a08abf3 Bump version 2021-03-13 12:51:34 +01:00
fd9c6afa5e Update README.md 2021-03-11 00:10:34 +01:00
8f3797407b Update README.md 2021-03-10 23:55:37 +01:00
7eedb23285 Update changelog v0.2.6 2021-03-10 22:04:25 +00:00
e4a2c95dd8 Merge branch 'develop' of https://github.com/garronej/keycloakify into develop 2021-03-10 23:02:30 +01:00
9429228b71 Bump version (changelog ignore) 2021-03-10 23:02:25 +01:00
aafbc60f12 Fix generated gitignore 2021-03-10 23:02:03 +01:00
7170611791 Update changelog v0.2.5 2021-03-10 21:51:07 +00:00
59e57f3dd5 Merge branch 'develop' of https://github.com/garronej/keycloakify into develop 2021-03-10 22:46:06 +01:00
fd0d25b081 Bump version (changelog ignore) 2021-03-10 22:46:01 +01:00
fa529c911a Fix generated .gitignore 2021-03-10 22:45:09 +01:00
dc997b7ef4 Update changelog v0.2.4 2021-03-10 20:33:36 +00:00
0168d32f96 Merge branch 'develop' of https://github.com/garronej/keycloakify into develop 2021-03-10 21:27:48 +01:00
d6fc0c779c Bump version (changelog ignore) 2021-03-10 21:27:43 +01:00
08be36edfa Update deps (changelog ignore) 2021-03-10 21:27:23 +01:00
990d287953 Update README.md 2021-03-09 05:12:45 +01:00
a629d4ab45 Update readme 2021-03-09 04:56:45 +01:00
78b48af886 Update changelog v0.2.3 2021-03-09 02:07:07 +00:00
72d267853c fix gitignore generation 2021-03-09 03:04:59 +01:00
257 changed files with 31625 additions and 27618 deletions

4
.gitattributes vendored
View File

@ -1,3 +1,3 @@
src/lib/i18n/generated_messages/* linguist-documentation
src/lib/i18n/generated_kcMessages/* linguist-documentation
src/bin/build-keycloak-theme/index.ts -linguist-detectable
src/bin/install-builtin-keycloak-themes.ts -linguist-detectable
src/bin/build-keycloak-theme/index.ts -linguist-detectable

5
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,5 @@
# These are supported funding model platforms
github: [garronej]
open_collective: keycloakify
custom: ['https://www.ringerhq.com/experts/garronej']

25
.github/release.yaml vendored Normal file
View File

@ -0,0 +1,25 @@
changelog:
exclude:
labels:
- ignore-for-release
authors:
- octocat
categories:
- title: Breaking Changes 🛠
labels:
- breaking
- title: Exciting New Features 🎉
labels:
- feature
- title: Fixes 🔧
labels:
- fix
- title: Documentation 🔧
labels:
- docs
- title: CI 👷
labels:
- ci
- title: Other Changes
labels:
- '*'

138
.github/workflows/ci.yaml vendored Normal file
View File

@ -0,0 +1,138 @@
name: ci
on:
push:
branches:
- v5
pull_request:
branches:
- v5
jobs:
test_lint:
runs-on: ubuntu-latest
if: ${{ !github.event.created && github.repository != 'garronej/ts-ci' }}
steps:
- uses: actions/checkout@v2.3.4
- uses: actions/setup-node@v2.1.3
- uses: bahmutov/npm-install@v1
- name: If this step fails run 'npm run lint' and 'npm run format' then commit again.
run: |
PACKAGE_MANAGER=npm
if [ -f "./yarn.lock" ]; then
PACKAGE_MANAGER=yarn
fi
$PACKAGE_MANAGER run format:check
test:
runs-on: macos-10.15
needs: test_lint
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
matrix:
node: [ '15', '14' ]
name: Test with Node v${{ matrix.node }}
steps:
- name: Tell if project is using npm or yarn
id: step1
uses: garronej/ts-ci@v1.1.4
with:
action_name: tell_if_project_uses_npm_or_yarn
- uses: actions/checkout@v2.3.4
- uses: actions/setup-node@v2.1.3
with:
node-version: ${{ matrix.node }}
- uses: bahmutov/npm-install@v1
- if: steps.step1.outputs.npm_or_yarn == 'yarn'
run: |
yarn build
yarn test
- if: steps.step1.outputs.npm_or_yarn == 'npm'
run: |
npm run build
npm test
check_if_version_upgraded:
name: Check if version upgrade
# We run this only if it's a push on the default branch or if it's a PR from a
# branch (meaning not a PR from a fork). It would be more straightforward to test if secrets.NPM_TOKEN is
# defined but GitHub Action don't allow it yet.
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
runs-on: ubuntu-latest
needs: test
outputs:
from_version: ${{ steps.step1.outputs.from_version }}
to_version: ${{ steps.step1.outputs.to_version }}
is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }}
is_release_beta: ${{steps.step1.outputs.is_release_beta }}
steps:
- uses: garronej/ts-ci@v1.1.8
id: step1
with:
action_name: is_package_json_version_upgraded
branch: ${{ github.head_ref || github.ref }}
create_github_release:
runs-on: ubuntu-latest
# We create a release only if the version have been upgraded and we are on a default branch
# PR on the default branch can release beta but not real release
if: |
needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' &&
(
github.event_name == 'push' ||
needs.check_if_version_upgraded.outputs.is_release_beta == 'true'
)
needs:
- check_if_version_upgraded
steps:
- uses: softprops/action-gh-release@v1
with:
name: Release v${{ needs.check_if_version_upgraded.outputs.to_version }}
tag_name: v${{ needs.check_if_version_upgraded.outputs.to_version }}
target_commitish: ${{ github.head_ref || github.ref }}
generate_release_notes: true
draft: false
prerelease: ${{ needs.check_if_version_upgraded.outputs.is_release_beta == 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
publish_on_npm:
runs-on: ubuntu-latest
needs:
- create_github_release
- check_if_version_upgraded
steps:
- uses: actions/checkout@v2.3.4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v2.1.3
with:
node-version: '15'
registry-url: https://registry.npmjs.org/
- uses: bahmutov/npm-install@v1
- run: |
PACKAGE_MANAGER=npm
if [ -f "./yarn.lock" ]; then
PACKAGE_MANAGER=yarn
fi
$PACKAGE_MANAGER run build
- run: npx -y -p denoify@0.6.5 denoify_enable_short_npm_import_path
env:
DRY_RUN: "0"
- name: Publishing on NPM
run: |
if [ "$(npm show . version)" = "$VERSION" ]; then
echo "This version is already published"
exit 0
fi
if [ "$NODE_AUTH_TOKEN" = "" ]; then
echo "Can't publish on NPM, You must first create a secret called NPM_TOKEN that contains your NPM auth token. https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets"
false
fi
EXTRA_ARGS="--tag v5"
npm publish $EXTRA_ARGS
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
VERSION: ${{ needs.check_if_version_upgraded.outputs.to_version }}
IS_BETA: ${{ needs.check_if_version_upgraded.outputs.is_release_beta }}

6
.gitignore vendored
View File

@ -43,3 +43,9 @@ jspm_packages
/dist
/sample_react_project/
/.yarn_home/
.idea
/keycloak_email
/build_keycloak

8
.prettierignore Normal file
View File

@ -0,0 +1,8 @@
node_modules/
/dist/
/CHANGELOG.md
/.yarn_home/
/src/test/apps/
/src/tools/types/
/sample_react_project
/build_keycloak/

11
.prettierrc.json Normal file
View File

@ -0,0 +1,11 @@
{
"printWidth": 150,
"tabWidth": 4,
"useTabs": false,
"semi": true,
"singleQuote": false,
"quoteProps": "preserve",
"trailingComma": "all",
"bracketSpacing": true,
"arrowParens": "avoid"
}

View File

@ -1,241 +0,0 @@
### **0.2.2** (2021-03-08)
- Add table of content
- Update README.md
- Update README.md
## **0.2.1** (2021-03-08)
- Update ci.yaml
- Update readme
- Update readme
- update deps
- Update readme
- Add all mocks for testing
- many small fixes
### **0.1.6** (2021-03-07)
- Fix Turkish
### **0.1.5** (2021-03-07)
- Fix getKcLanguageLabel
### **0.1.4** (2021-03-07)
### **0.1.3** (2021-03-07)
- Implement LoginVerifyEmail
- Implement login-reset-password.ftl
### **0.1.2** (2021-03-07)
- Fix build
- Fix build
### **0.1.1** (2021-03-06)
- Implement Error page
- rename pageBasename by pageId
- Implement reactive programing for language switching
- Add Info page, refactor
## **0.1.0** (2021-03-05)
- Rename keycloakify
### **0.0.33** (2021-03-05)
- Fix syncronization with non react pages
### **0.0.32** (2021-03-05)
- bump version
- Add log to tell when we are using react
- Fix missing parentesis
### **0.0.31** (2021-03-05)
- Fix typo
- Fix register page 500
### **0.0.30** (2021-03-05)
- Edit language statistique
### **0.0.30** (2021-03-05)
- avoid escaping urls
- Use default value instead of value
- Fix double single quote problem in messages
- Fix typo
- Fix non editable username
- Fix some bugs
- Fix Object.deepAssign
- Make the dongle to download smaller
- Split kcContext among pages
- Implement register
### **0.0.29** (2021-03-04)
- Fix build
- Fix i18n
- Login appear to be working now
- closer but not there yet
### **0.0.28** (2021-03-03)
- fix build
- There is no reason not to let use translations outside of keycloak
### **0.0.27** (2021-03-02)
- Implement entrypoint
### **0.0.26** (2021-03-02)
- Login page implemented
- Implement login
- remove unesseary log
### **0.0.25** (2021-03-02)
- Fix build and reduce size
- Implement the template
### **0.0.24** (2021-03-01)
- update
- update
- update
### **0.0.23** (2021-03-01)
- update
### **0.0.23** (2021-03-01)
- update
- update
### **0.0.23** (2021-03-01)
- update
- update
### **0.0.23** (2021-03-01)
- update
- Handle formatting in translation function
### **0.0.22** (2021-02-28)
- Split page messages
### **0.0.21** (2021-02-28)
- Restore yarn file
- Multiple fixes
- Update deps
- Update deps
- includes translations
- Update README.md
- improve docs
- update
- Update README.md
- update
- update
- update
- update
### **0.0.20** (2021-02-27)
- update
- update
### **0.0.19** (2021-02-27)
- update
- update
### **0.0.18** (2021-02-23)
- Bump version number
- Moving on with implementation of the lib
- Update readme
- Readme eddit
- Fixing video link
### **0.0.16** (2021-02-23)
- Bump version
- Give test container credentials
### **0.0.14** (2021-02-23)
- Bump version number
- enable the docker container to be run from the root of the react project
### **0.0.13** (2021-02-23)
- bump version
### **0.0.12** (2021-02-23)
- update readme
### **0.0.11** (2021-02-23)
- Add documentation
### **0.0.10** (2021-02-23)
- Remove extra closing bracket
### **0.0.9** (2021-02-22)
- fix container startup script
- minor update
### **0.0.8** (2021-02-21)
- Include theme properties
### **0.0.7** (2021-02-21)
- fix build
- Fix bundle
### **0.0.6** (2021-02-21)
- Include missing files in the release bundle
### **0.0.5** (2021-02-21)
- Bump version number
- Make the install faster
### **0.0.4** (2021-02-21)
- Fix script visibility
### **0.0.3** (2021-02-21)
- Do not run tests on window
- Add script for downloading base themes
- Generate debug files to be able to test the container
- Fix many little bugs
- refactor
- Almoste there
- Things are starting to take form
- Seems to be working
- First draft
- Remove eslint and prettyer
### **0.0.2** (2021-02-20)
- Update package.json

3
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,3 @@
Looking to contribute? Thank you! PR are more than welcome.
Please refers to [this documentation page](https://docs.keycloakify.dev/contributing) that will help you get started.

229
README.md
View File

@ -2,194 +2,131 @@
<img src="https://user-images.githubusercontent.com/6702424/109387840-eba11f80-7903-11eb-9050-db1dad883f78.png">
</p>
<p align="center">
<i>🔏 Customize key cloak's pages as if they were part of your App 🔏</i>
<i>🔏 Create Keycloak themes using React 🔏</i>
<br>
<br>
<img src="https://github.com/garronej/keycloakify/workflows/ci/badge.svg?branch=develop">
<img src="https://img.shields.io/bundlephobia/minzip/keycloakify">
<img src="https://img.shields.io/npm/dw/keycloakify">
<img src="https://img.shields.io/npm/l/keycloakify">
<a href="https://github.com/garronej/keycloakify/actions">
<img src="https://github.com/garronej/keycloakify/workflows/ci/badge.svg?branch=main">
</a>
<a href="https://bundlephobia.com/package/keycloakify">
<img src="https://img.shields.io/bundlephobia/minzip/keycloakify">
</a>
<a href="https://www.npmjs.com/package/keycloakify">
<img src="https://img.shields.io/npm/dm/keycloakify">
</a>
<a href="https://github.com/garronej/keycloakify/blob/main/LICENSE">
<img src="https://img.shields.io/npm/l/keycloakify">
</a>
<a href="https://github.com/InseeFrLab/keycloakify/blob/729503fe31a155a823f46dd66ad4ff34ca274e0a/tsconfig.json#L14">
<img src="https://camo.githubusercontent.com/0f9fcc0ac1b8617ad4989364f60f78b2d6b32985ad6a508f215f14d8f897b8d3/68747470733a2f2f62616467656e2e6e65742f62616467652f547970655363726970742f7374726963742532302546302539462539322541412f626c7565">
</a>
<a href="https://github.com/thomasdarimont/awesome-keycloak">
<img src="https://awesome.re/mentioned-badge.svg"/>
</a>
<p align="center">
<a href="https://www.keycloakify.dev">Home</a>
-
<a href="https://docs.keycloakify.dev">Documentation</a>
</p>
</p>
<p align="center">
<i>Ultimately this build tool Generates a Keycloak theme</i>
<i>Ultimately this build tool generates a Keycloak theme <a href="https://www.keycloakify.dev">Learn more</a></i>
<img src="https://user-images.githubusercontent.com/6702424/110260457-a1c3d380-7fac-11eb-853a-80459b65626b.png">
</p>
# Motivations
> 🗣 Beloved contributors: [Keycloakify v6](https://docs.keycloakify.dev/v/v6/) is just around the corner, please stop
> submitting PRs against `main` but work on [the `v6` branch](https://github.com/InseeFrLab/keycloakify/tree/v6) instead.
The problem:
# Changelog highlights
![keycloak_before](https://user-images.githubusercontent.com/6702424/108838381-dbbbcf80-75d3-11eb-8ae8-db41563ef9db.gif)
## 5.8.0
When we redirected to Keycloak the user suffers from a harsh context switch.
Keycloak does offer a way to customize theses pages but it requires a lot of raw HTML/CSS hacking
to reproduce the look and feel of a specific app. Not mentioning the maintenance cost of such an endeavour.
- [React.lazy()](https://reactjs.org/docs/code-splitting.html#reactlazy) support 🎉. [#141](https://github.com/InseeFrLab/keycloakify/issues/141)
Wouldn't it be great if we could just design the login and register pages as if they where part of our app?
Here is `yarn add keycloakify` for you 🍸
## 5.7.0
TODO: Insert video after.
- Feat `logout-confirm.ftl`. [PR](https://github.com/InseeFrLab/keycloakify/pull/120)
- [Motivations](#motivations)
- [How to use](#how-to-use)
- [Setting up the build tool](#setting-up-the-build-tool)
- [Developing your login and register pages in your React app](#developing-your-login-and-register-pages-in-your-react-app)
- [Just changing the look](#just-changing-the-look)
- [Changing the look **and** feel](#changing-the-look-and-feel)
- [Hot reload](#hot-reload)
- [How to implement context persistance](#how-to-implement-context-persistance)
- [If your keycloak is a subdomain of your app.](#if-your-keycloak-is-a-subdomain-of-your-app)
- [Else](#else)
- [REQUIREMENTS](#requirements)
- [API Reference](#api-reference)
- [The build tool](#the-build-tool)
- [The fronted lib ( imported into your react app )](#the-fronted-lib--imported-into-your-react-app-)
## 5.6.4
# How to use
## Setting up the build tool
Fix `login-verify-email.ftl` page. [Before](https://user-images.githubusercontent.com/6702424/177436014-0bad22c4-5bfb-45bb-8fc9-dad65143cd0c.png) - [After](https://user-images.githubusercontent.com/6702424/177435797-ec5d7db3-84cf-49cb-8efc-3427a81f744e.png)
Add `keycloakify` to the dev dependencies of your project `npm install --save-dev keycloakify` or `yarn add --dev keycloakify`
then configure your `package.json` build's script to build the keycloak's theme by adding `&& build-keycloak-theme`.
## v5.6.0
Typically you will get:
Add support for `login-config-totp.ftl` page [#127](https://github.com/InseeFrLab/keycloakify/pull/127).
`package.json`
```json
"devDependencies": {
"keycloakify": "^0.0.10"
},
"scripts": {
"build": "react-scripts build && build-keycloak-theme"
},
```
## v5.3.0
Then build your app with `yarn run build` or `npm run build`, you will be provided with instructions
about how to load the theme into Keycloak.
Rename `keycloak_theme_email` to `keycloak_email`.
If you already had a `keycloak_theme_email` you should rename it `keycloak_email`.
## Developing your login and register pages in your React app
## v5.0.0
### Just changing the look
[Migration guide](https://github.com/garronej/keycloakify-demo-app/blob/a5b6a50f24bc25e082931f5ad9ebf47492acd12a/src/index.tsx#L46-L63)
New i18n system.
Import of terms and services have changed. [See example](https://github.com/garronej/keycloakify-demo-app/blob/a5b6a50f24bc25e082931f5ad9ebf47492acd12a/src/index.tsx#L46-L63).
The fist approach is to only arr/replace the default class names by your
own.
## v4.10.0
```tsx
Add `login-idp-link-email.ftl` page [See PR](https://github.com/InseeFrLab/keycloakify/pull/92).
import { App } from "./<wherever>/App";
import {
KcApp,
defaultKcProps,
kcContext
} from "keycloakify";
import { css } from "tss-react";
## v4.8.0
const myClassName = css({ "color": "red" });
[Email template customization.](#email-template-customization)
reactDom.render(
// Unless the app is currently being served by Keycloak
// kcContext is undefined.
kcContext !== undefined ?
<KcApp
kcContext={kcContext}
{...{
...defaultKcProps,
"kcHeaderWrapperClass": myClassName
}}
/> :
<App />, // Your actual app
document.getElementById("root")
);
```
## v4.7.4
<i>result:</i>
**M1 Mac** support (for testing locally with a dockerized Keycloak).
<p align="center">
<img src="https://user-images.githubusercontent.com/6702424/110261408-688d6280-7fb0-11eb-9822-7003d268b459.png">
</p>
## v4.7.2
### Changing the look **and** feel
> WARNING: This is broken.
> Testing with local Keycloak container working with M1 Mac. Thanks to [@eduardosanzb](https://github.com/InseeFrLab/keycloakify/issues/43#issuecomment-975699658).
> Be aware: When running M1s you are testing with Keycloak v15 else the local container spun will be a Keycloak v16.1.0.
If you want to really re-implement the pages the best approach is to
create you own version of the [`<KcApp />`](https://github.com/garronej/keycloakify/blob/develop/src/lib/components/KcApp.tsx).
Copy/past some of [the components](https://github.com/garronej/keycloakify/tree/develop/src/lib/components) provided by this module and start hacking around.
## v4.7.0
### Hot reload
Register with user profile enabled: Out of the box `options` validator support.
[Example](https://user-images.githubusercontent.com/6702424/158911163-81e6bbe8-feb0-4dc8-abff-de199d7a678e.mov)
By default, in order to see your changes you will have to wait for
`yarn build` to complete which can takes sevrall minute.
## v4.6.0
If you want to test your login screens outside of Keycloak, in [storybook](https://storybook.js.org/)
for example you can use `kcContextMocks`.
`tss-react` and `powerhooks` are no longer peer dependencies of `keycloakify`.
After updating Keycloakify you can remove `tss-react` and `powerhooks` from your dependencies if you don't use them explicitly.
```tsx
import {
KcApp,
defaultKcProps,
kcContextMocks
} from "keycloakify";
## v4.5.3
reactDom.render(
kcContext !== undefined ?
<KcApp
kcContext={kcContextMocks.kcLoginContext}
{...defaultKcProps}
/>
document.getElementById("root")
);
```
There is a new recommended way to setup highly customized theme. See [here](https://github.com/garronej/keycloakify-demo-app/blob/look_and_feel/src/KcApp/KcApp.tsx).
Unlike with [the previous recommended method](https://github.com/garronej/keycloakify-demo-app/blob/a51660578bea15fb3e506b8a2b78e1056c6d68bb/src/KcApp/KcApp.tsx),
with this new method your theme wont break on minor Keycloakify update.
then `yarn start` ...
## v4.3.0
Feature [`login-update-password.ftl`](https://user-images.githubusercontent.com/6702424/147517600-6191cf72-93dd-437b-a35c-47180142063e.png).
Every time a page is added it's a breaking change for non CSS-only theme.
Change [this](https://github.com/garronej/keycloakify-demo-app/blob/df664c13c77ce3c53ac7df0622d94d04e76d3f9f/src/KcApp/KcApp.tsx#L17) and [this](https://github.com/garronej/keycloakify-demo-app/blob/df664c13c77ce3c53ac7df0622d94d04e76d3f9f/src/KcApp/KcApp.tsx#L37) to update.
*NOTE: keycloak-react-theming was renamed keycloakify since this video was recorded*
[![kickstart_video](https://user-images.githubusercontent.com/6702424/108877866-f146ee80-75ff-11eb-8120-003b3c5f6dd8.png)](https://youtu.be/xTz0Rj7i2v8)
# How to implement context persistance
## v4
If you want dark mode preference, language and others users preferences
to persist within the page served by keycloak here are the methods you can
adopt.
- Out of the box [frontend form validation](#user-profile-and-frontend-form-validation) 🥳
- Improvements (and breaking changes in `import { useKcMessage } from "keycloakify"`.
## If your keycloak is a subdomain of your app.
## v3
E.g: Your app url is `my-app.com` and your keycloak url is `auth.my-app.com`.
No breaking changes except that `@emotion/react`, [`tss-react`](https://www.npmjs.com/package/tss-react) and [`powerhooks`](https://www.npmjs.com/package/powerhooks) are now `peerDependencies` instead of being just dependencies.
It's important to avoid problem when using `keycloakify` alongside [`mui`](https://mui.com) and
[when passing params from the app to the login page](https://github.com/InseeFrLab/keycloakify#implement-context-persistence-optional).
In this case there is a very straightforward approach and it is to use [`powerhooks/useGlobalState`](https://github.com/garronej/powerhooks).
Instead of `{ "persistance": "localStorage" }` use `{ "persistance": "cookie" }`.
## v2.5
## Else
- Feature [Use advanced message](https://github.com/InseeFrLab/keycloakify/blob/59f106bf9e210b63b190826da2bf5f75fc8b7644/src/lib/i18n/useKcMessage.tsx#L53-L66)
and [`messagesPerFields`](https://github.com/InseeFrLab/keycloakify/blob/59f106bf9e210b63b190826da2bf5f75fc8b7644/src/lib/getKcContext/KcContextBase.ts#L70-L75) (implementation [here](https://github.com/InseeFrLab/keycloakify/blob/59f106bf9e210b63b190826da2bf5f75fc8b7644/src/bin/build-keycloak-theme/generateFtl/common.ftl#L130-L189))
- Test container now uses Keycloak version `15.0.2`.
You will have to use URL parameters to passes states when you redirect to
the login page.
TOTO: Provide a clean way, as abstracted as possible, way to do that.
# REQUIREMENTS
This tools assumes you are bundling your app with Webpack (tested with 4.44.2) .
It assumes there is a `build/` directory at the root of your react project directory containing a `index.html` file
and a `static/` directory generated by webpack.
**All this is defaults with [`create-react-app`](https://create-react-app.dev)** (tested with 4.0.3=)
- For building the theme: `mvn` (Maven) must be installed
- For development, (testing the theme in a local container ): `rm`, `mkdir`, `wget`, `unzip` are assumed to be available
and `docker` up and running.
NOTE: This build tool has only be tested on MacOS.
# API Reference
## The build tool
Part of the lib that runs with node, at build time.
- `npx build-keycloak-theme`: Builds the theme, the CWD is assumed to be the root of your react project.
- `npx download-sample-keycloak-themes`: Downloads the keycloak default themes (for development purposes)
## The fronted lib ( imported into your react app )
Part of the lib that you import in your react project and runs on the browser.
**TODO**
## v2
- It's now possible to implement custom `.ftl` pages.
- Support for Keycloak plugins that introduce non standard ftl values.
(Like for example [this plugin](https://github.com/micedre/keycloak-mail-whitelisting) that define `authorizedMailDomains` in `register.ftl`).

View File

@ -1 +0,0 @@
export declare const ftlValuesGlobalName = "kcContext";

View File

@ -1,5 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ftlValuesGlobalName = void 0;
exports.ftlValuesGlobalName = "kcContext";
//# sourceMappingURL=ftlValuesGlobalName.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"ftlValuesGlobalName.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/ftlValuesGlobalName.ts"],"names":[],"mappings":";;;AACa,QAAA,mBAAmB,GAAG,WAAW,CAAC"}

View File

@ -1,6 +0,0 @@
export declare const containerLaunchScriptBasename = "start_keycloak_testing_container.sh";
/** Files for being able to run a hot reload keycloak container */
export declare function generateDebugFiles(params: {
packageJsonName: string;
keycloakThemeBuildingDirPath: string;
}): void;

View File

@ -1,68 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateDebugFiles = exports.containerLaunchScriptBasename = void 0;
var fs = __importStar(require("fs"));
var path_1 = require("path");
exports.containerLaunchScriptBasename = "start_keycloak_testing_container.sh";
/** Files for being able to run a hot reload keycloak container */
function generateDebugFiles(params) {
var packageJsonName = params.packageJsonName, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath;
fs.writeFileSync(path_1.join(keycloakThemeBuildingDirPath, "Dockerfile"), Buffer.from([
"FROM jboss/keycloak:11.0.3",
"",
"USER root",
"",
"WORKDIR /",
"",
"ADD configuration /opt/jboss/keycloak/standalone/configuration/",
"",
'ENTRYPOINT [ "/opt/jboss/tools/docker-entrypoint.sh" ]',
].join("\n"), "utf8"));
var dockerImage = packageJsonName + "/keycloak-hot-reload";
var containerName = "keycloak-testing-container";
fs.writeFileSync(path_1.join(keycloakThemeBuildingDirPath, exports.containerLaunchScriptBasename), Buffer.from([
"#!/bin/bash",
"",
"cd " + keycloakThemeBuildingDirPath,
"",
"docker rm " + containerName + " || true",
"",
"docker build . -t " + dockerImage,
"",
"docker run \\",
" -p 8080:8080 \\",
"\t--name " + containerName + " \\",
" -e KEYCLOAK_USER=admin \\",
" -e KEYCLOAK_PASSWORD=admin \\",
"\t-v " + path_1.join(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", packageJsonName) + ":/opt/jboss/keycloak/themes/" + packageJsonName + ":rw \\",
"\t-it " + dockerImage + ":latest",
""
].join("\n"), "utf8"), { "mode": 493 });
var standaloneHaFilePath = path_1.join(keycloakThemeBuildingDirPath, "configuration", "standalone-ha.xml");
try {
fs.mkdirSync(path_1.dirname(standaloneHaFilePath));
}
catch (_a) { }
fs.writeFileSync(standaloneHaFilePath, fs.readFileSync(path_1.join(__dirname, path_1.basename(standaloneHaFilePath))));
}
exports.generateDebugFiles = generateDebugFiles;
//# sourceMappingURL=index.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateDebugFiles/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,qCAAyB;AACzB,6BAA0F;AAE7E,QAAA,6BAA6B,GAAG,qCAAqC,CAAC;AAEnF,kEAAkE;AAClE,SAAgB,kBAAkB,CAC9B,MAGC;IAGO,IAAA,eAAe,GAAmC,MAAM,gBAAzC,EAAE,4BAA4B,GAAK,MAAM,6BAAX,CAAY;IAEjE,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,YAAY,CAAC,EACpD,MAAM,CAAC,IAAI,CACP;QACI,4BAA4B;QAC5B,EAAE;QACF,WAAW;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,iEAAiE;QACjE,EAAE;QACF,wDAAwD;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,CACJ,CAAC;IAEF,IAAM,WAAW,GAAM,eAAe,yBAAsB,CAAC;IAC7D,IAAM,aAAa,GAAG,4BAA4B,CAAC;IAEnD,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,qCAA6B,CAAC,EACrE,MAAM,CAAC,IAAI,CACP;QACI,aAAa;QACb,EAAE;QACF,QAAM,4BAA8B;QACpC,EAAE;QACF,eAAa,aAAa,aAAU;QACpC,EAAE;QACF,uBAAqB,WAAa;QAClC,EAAE;QACF,eAAe;QACf,kBAAkB;QAClB,cAAW,aAAa,QAAK;QAC7B,4BAA4B;QAC5B,gCAAgC;QAChC,UAAO,WAAQ,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,oCACpE,eAAe,WAAQ;QACtD,WAAQ,WAAW,YAAS;QAC5B,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,EACD,EAAE,MAAM,EAAE,GAAK,EAAE,CACpB,CAAC;IAEF,IAAM,oBAAoB,GAAG,WAAQ,CAAC,4BAA4B,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAE1G,IAAI;QAAE,EAAE,CAAC,SAAS,CAAC,cAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC;KAAE;IAAC,WAAM,GAAG;IAElE,EAAE,CAAC,aAAa,CACZ,oBAAoB,EACpB,EAAE,CAAC,YAAY,CAAC,WAAQ,CAAC,SAAS,EAAE,eAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC3E,CAAC;AAEN,CAAC;AAlED,gDAkEC"}

View File

@ -1,666 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:13.0">
<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.clustering.jgroups"/>
<extension module="org.jboss.as.connector"/>
<extension module="org.jboss.as.deployment-scanner"/>
<extension module="org.jboss.as.ee"/>
<extension module="org.jboss.as.ejb3"/>
<extension module="org.jboss.as.jaxrs"/>
<extension module="org.jboss.as.jmx"/>
<extension module="org.jboss.as.jpa"/>
<extension module="org.jboss.as.logging"/>
<extension module="org.jboss.as.mail"/>
<extension module="org.jboss.as.modcluster"/>
<extension module="org.jboss.as.naming"/>
<extension module="org.jboss.as.remoting"/>
<extension module="org.jboss.as.security"/>
<extension module="org.jboss.as.transactions"/>
<extension module="org.jboss.as.weld"/>
<extension module="org.keycloak.keycloak-server-subsystem"/>
<extension module="org.wildfly.extension.bean-validation"/>
<extension module="org.wildfly.extension.core-management"/>
<extension module="org.wildfly.extension.elytron"/>
<extension module="org.wildfly.extension.io"/>
<extension module="org.wildfly.extension.microprofile.config-smallrye"/>
<extension module="org.wildfly.extension.microprofile.health-smallrye"/>
<extension module="org.wildfly.extension.microprofile.metrics-smallrye"/>
<extension module="org.wildfly.extension.request-controller"/>
<extension module="org.wildfly.extension.security.manager"/>
<extension module="org.wildfly.extension.undertow"/>
</extensions>
<management>
<security-realms>
<security-realm name="ManagementRealm">
<authentication>
<local default-user="$local" skip-group-loading="true"/>
<properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
<authorization map-groups-to-roles="false">
<properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
<security-realm name="ApplicationRealm">
<server-identities>
<ssl>
<keystore path="application.keystore" relative-to="jboss.server.config.dir" keystore-password="password" alias="server" key-password="password" generate-self-signed-certificate-host="localhost"/>
</ssl>
</server-identities>
<authentication>
<local default-user="$local" allowed-users="*" skip-group-loading="true"/>
<properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
<authorization>
<properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
</security-realms>
<audit-log>
<formatters>
<json-formatter name="json-formatter"/>
</formatters>
<handlers>
<file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/>
</handlers>
<logger log-boot="true" log-read-only="false" enabled="false">
<handlers>
<handler name="file"/>
</handlers>
</logger>
</audit-log>
<management-interfaces>
<http-interface security-realm="ManagementRealm">
<http-upgrade enabled="true"/>
<socket-binding http="management-http"/>
</http-interface>
</management-interfaces>
<access-control provider="simple">
<role-mapping>
<role name="SuperUser">
<include>
<user name="$local"/>
</include>
</role>
</role-mapping>
</access-control>
</management>
<profile>
<subsystem xmlns="urn:jboss:domain:logging:8.0">
<console-handler name="CONSOLE">
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="io.jaegertracing.Configuration">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="DEBUG"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<logger category="org.keycloak">
<level name="${env.KEYCLOAK_LOGLEVEL:INFO}"/>
</logger>
<root-logger>
<level name="${env.ROOT_LOGLEVEL:INFO}"/>
<handlers>
<handler name="CONSOLE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
</subsystem>
<subsystem xmlns="urn:jboss:domain:bean-validation:1.0"/>
<subsystem xmlns="urn:jboss:domain:core-management:1.0"/>
<subsystem xmlns="urn:jboss:domain:datasources:6.0">
<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
<connection-url>jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE</connection-url>
<driver>h2</driver>
<pool>
<max-pool-size>100</max-pool-size>
</pool>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ee:5.0">
<spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
<concurrent>
<context-services>
<context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/>
</context-services>
<managed-thread-factories>
<managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>
</managed-thread-factories>
<managed-executor-services>
<managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" keepalive-time="5000"/>
</managed-executor-services>
<managed-scheduled-executor-services>
<managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" keepalive-time="3000"/>
</managed-scheduled-executor-services>
</concurrent>
<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ejb3:7.0">
<session-bean>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
</stateless>
<stateful default-access-timeout="5000" cache-ref="distributable" passivation-disabled-cache-ref="simple"/>
<singleton default-access-timeout="5000"/>
</session-bean>
<pools>
<bean-instance-pools>
<strict-max-pool name="mdb-strict-max-pool" derive-size="from-cpu-count" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
<strict-max-pool name="slsb-strict-max-pool" derive-size="from-worker-pools" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
</bean-instance-pools>
</pools>
<caches>
<cache name="simple"/>
<cache name="distributable" passivation-store-ref="infinispan" aliases="passivating clustered"/>
</caches>
<passivation-stores>
<passivation-store name="infinispan" cache-container="ejb" max-size="10000"/>
</passivation-stores>
<async thread-pool-name="default"/>
<timer-service thread-pool-name="default" default-data-store="default-file-store">
<data-stores>
<file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/>
</data-stores>
</timer-service>
<remote connector-ref="http-remoting-connector" thread-pool-name="default">
<channel-creation-options>
<option name="MAX_OUTBOUND_MESSAGES" value="1234" type="remoting"/>
</channel-creation-options>
</remote>
<thread-pools>
<thread-pool name="default">
<max-threads count="10"/>
<keepalive-time time="60" unit="seconds"/>
</thread-pool>
</thread-pools>
<default-security-domain value="other"/>
<default-missing-method-permissions-deny-access value="true"/>
<statistics enabled="${wildfly.ejb3.statistics-enabled:${wildfly.statistics-enabled:false}}"/>
<log-system-exceptions value="true"/>
</subsystem>
<subsystem xmlns="urn:wildfly:elytron:10.0" final-providers="combined-providers" disallowed-providers="OracleUcrypto">
<providers>
<aggregate-providers name="combined-providers">
<providers name="elytron"/>
<providers name="openssl"/>
</aggregate-providers>
<provider-loader name="elytron" module="org.wildfly.security.elytron"/>
<provider-loader name="openssl" module="org.wildfly.openssl"/>
</providers>
<audit-logging>
<file-audit-log name="local-audit" path="audit.log" relative-to="jboss.server.log.dir" format="JSON"/>
</audit-logging>
<security-domains>
<security-domain name="ApplicationDomain" default-realm="ApplicationRealm" permission-mapper="default-permission-mapper">
<realm name="ApplicationRealm" role-decoder="groups-to-roles"/>
<realm name="local"/>
</security-domain>
<security-domain name="ManagementDomain" default-realm="ManagementRealm" permission-mapper="default-permission-mapper">
<realm name="ManagementRealm" role-decoder="groups-to-roles"/>
<realm name="local" role-mapper="super-user-mapper"/>
</security-domain>
</security-domains>
<security-realms>
<identity-realm name="local" identity="$local"/>
<properties-realm name="ApplicationRealm">
<users-properties path="application-users.properties" relative-to="jboss.server.config.dir" digest-realm-name="ApplicationRealm"/>
<groups-properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
</properties-realm>
<properties-realm name="ManagementRealm">
<users-properties path="mgmt-users.properties" relative-to="jboss.server.config.dir" digest-realm-name="ManagementRealm"/>
<groups-properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
</properties-realm>
</security-realms>
<mappers>
<simple-permission-mapper name="default-permission-mapper" mapping-mode="first">
<permission-mapping>
<principal name="anonymous"/>
<permission-set name="default-permissions"/>
</permission-mapping>
<permission-mapping match-all="true">
<permission-set name="login-permission"/>
<permission-set name="default-permissions"/>
</permission-mapping>
</simple-permission-mapper>
<constant-realm-mapper name="local" realm-name="local"/>
<simple-role-decoder name="groups-to-roles" attribute="groups"/>
<constant-role-mapper name="super-user-mapper">
<role name="SuperUser"/>
</constant-role-mapper>
</mappers>
<permission-sets>
<permission-set name="login-permission">
<permission class-name="org.wildfly.security.auth.permission.LoginPermission"/>
</permission-set>
<permission-set name="default-permissions">
<permission class-name="org.wildfly.extension.batch.jberet.deployment.BatchPermission" module="org.wildfly.extension.batch.jberet" target-name="*"/>
<permission class-name="org.wildfly.transaction.client.RemoteTransactionPermission" module="org.wildfly.transaction.client"/>
<permission class-name="org.jboss.ejb.client.RemoteEJBPermission" module="org.jboss.ejb-client"/>
</permission-set>
</permission-sets>
<http>
<http-authentication-factory name="management-http-authentication" security-domain="ManagementDomain" http-server-mechanism-factory="global">
<mechanism-configuration>
<mechanism mechanism-name="DIGEST">
<mechanism-realm realm-name="ManagementRealm"/>
</mechanism>
</mechanism-configuration>
</http-authentication-factory>
<provider-http-server-mechanism-factory name="global"/>
</http>
<sasl>
<sasl-authentication-factory name="application-sasl-authentication" sasl-server-factory="configured" security-domain="ApplicationDomain">
<mechanism-configuration>
<mechanism mechanism-name="JBOSS-LOCAL-USER" realm-mapper="local"/>
<mechanism mechanism-name="DIGEST-MD5">
<mechanism-realm realm-name="ApplicationRealm"/>
</mechanism>
</mechanism-configuration>
</sasl-authentication-factory>
<sasl-authentication-factory name="management-sasl-authentication" sasl-server-factory="configured" security-domain="ManagementDomain">
<mechanism-configuration>
<mechanism mechanism-name="JBOSS-LOCAL-USER" realm-mapper="local"/>
<mechanism mechanism-name="DIGEST-MD5">
<mechanism-realm realm-name="ManagementRealm"/>
</mechanism>
</mechanism-configuration>
</sasl-authentication-factory>
<configurable-sasl-server-factory name="configured" sasl-server-factory="elytron">
<properties>
<property name="wildfly.sasl.local-user.default-user" value="$local"/>
</properties>
</configurable-sasl-server-factory>
<mechanism-provider-filtering-sasl-server-factory name="elytron" sasl-server-factory="global">
<filters>
<filter provider-name="WildFlyElytron"/>
</filters>
</mechanism-provider-filtering-sasl-server-factory>
<provider-sasl-server-factory name="global"/>
</sasl>
</subsystem>
<subsystem xmlns="urn:jboss:domain:infinispan:10.0">
<cache-container name="keycloak" module="org.keycloak.keycloak-model-infinispan">
<transport lock-timeout="60000"/>
<local-cache name="realms">
<object-memory size="10000"/>
</local-cache>
<local-cache name="users">
<object-memory size="10000"/>
</local-cache>
<local-cache name="authorization">
<object-memory size="10000"/>
</local-cache>
<local-cache name="keys">
<object-memory size="1000"/>
<expiration max-idle="3600000"/>
</local-cache>
<replicated-cache name="work"/>
<distributed-cache name="sessions" owners="1"/>
<distributed-cache name="authenticationSessions" owners="1"/>
<distributed-cache name="offlineSessions" owners="1"/>
<distributed-cache name="clientSessions" owners="1"/>
<distributed-cache name="offlineClientSessions" owners="1"/>
<distributed-cache name="loginFailures" owners="1"/>
<distributed-cache name="actionTokens" owners="2">
<object-memory size="-1"/>
<expiration interval="300000" max-idle="-1"/>
</distributed-cache>
</cache-container>
<cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server">
<transport lock-timeout="60000"/>
<replicated-cache name="default">
<transaction mode="BATCH"/>
</replicated-cache>
</cache-container>
<cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
<transport lock-timeout="60000"/>
<replicated-cache name="sso">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
</replicated-cache>
<distributed-cache name="dist">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store/>
</distributed-cache>
<distributed-cache name="routing"/>
</cache-container>
<cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
<transport lock-timeout="60000"/>
<distributed-cache name="dist">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store/>
</distributed-cache>
</cache-container>
<cache-container name="hibernate" module="org.infinispan.hibernate-cache">
<transport lock-timeout="60000"/>
<local-cache name="local-query">
<object-memory size="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<invalidation-cache name="entity">
<transaction mode="NON_XA"/>
<object-memory size="10000"/>
<expiration max-idle="100000"/>
</invalidation-cache>
<replicated-cache name="timestamps"/>
</cache-container>
</subsystem>
<subsystem xmlns="urn:jboss:domain:io:3.0">
<worker name="default"/>
<buffer-pool name="default"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxrs:2.0"/>
<subsystem xmlns="urn:jboss:domain:jca:5.0">
<archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
<bean-validation enabled="true"/>
<default-workmanager>
<short-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</short-running-threads>
<long-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</long-running-threads>
</default-workmanager>
<cached-connection-manager/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jgroups:8.0">
<channels default="ee">
<channel name="ee" stack="udp" cluster="ejb"/>
</channels>
<stacks>
<stack name="udp">
<transport type="UDP" socket-binding="jgroups-udp"/>
<protocol type="PING"/>
<protocol type="MERGE3"/>
<socket-protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
<protocol type="FD_ALL"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="pbcast.NAKACK2"/>
<protocol type="UNICAST3"/>
<protocol type="pbcast.STABLE"/>
<protocol type="pbcast.GMS"/>
<protocol type="UFC"/>
<protocol type="MFC"/>
<protocol type="FRAG3"/>
</stack>
<stack name="tcp">
<transport type="TCP" socket-binding="jgroups-tcp"/>
<socket-protocol type="MPING" socket-binding="jgroups-mping"/>
<protocol type="MERGE3"/>
<socket-protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/>
<protocol type="FD_ALL"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="pbcast.NAKACK2"/>
<protocol type="UNICAST3"/>
<protocol type="pbcast.STABLE"/>
<protocol type="pbcast.GMS"/>
<protocol type="MFC"/>
<protocol type="FRAG3"/>
</stack>
</stacks>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jpa:1.1">
<jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:keycloak-server:1.1">
<web-context>auth</web-context>
<providers>
<provider>
classpath:${jboss.home.dir}/providers/*
</provider>
</providers>
<master-realm-name>master</master-realm-name>
<scheduled-task-interval>900</scheduled-task-interval>
<theme>
<staticMaxAge>-1</staticMaxAge>
<cacheThemes>false</cacheThemes>
<cacheTemplates>false</cacheTemplates>
<welcomeTheme>${env.KEYCLOAK_WELCOME_THEME:keycloak}</welcomeTheme>
<default>${env.KEYCLOAK_DEFAULT_THEME:keycloak}</default>
<dir>${jboss.home.dir}/themes</dir>
</theme>
<spi name="eventsStore">
<provider name="jpa" enabled="true">
<properties>
<property name="exclude-events" value="[&quot;REFRESH_TOKEN&quot;]"/>
</properties>
</provider>
</spi>
<spi name="userCache">
<provider name="default" enabled="true"/>
</spi>
<spi name="userSessionPersister">
<default-provider>jpa</default-provider>
</spi>
<spi name="timer">
<default-provider>basic</default-provider>
</spi>
<spi name="connectionsHttpClient">
<provider name="default" enabled="true"/>
</spi>
<spi name="connectionsJpa">
<provider name="default" enabled="true">
<properties>
<property name="dataSource" value="java:jboss/datasources/KeycloakDS"/>
<property name="initializeEmpty" value="true"/>
<property name="migrationStrategy" value="update"/>
<property name="migrationExport" value="${jboss.home.dir}/keycloak-database-update.sql"/>
</properties>
</provider>
</spi>
<spi name="realmCache">
<provider name="default" enabled="true"/>
</spi>
<spi name="connectionsInfinispan">
<default-provider>default</default-provider>
<provider name="default" enabled="true">
<properties>
<property name="cacheContainer" value="java:jboss/infinispan/container/keycloak"/>
</properties>
</provider>
</spi>
<spi name="jta-lookup">
<default-provider>${keycloak.jta.lookup.provider:jboss}</default-provider>
<provider name="jboss" enabled="true"/>
</spi>
<spi name="publicKeyStorage">
<provider name="infinispan" enabled="true">
<properties>
<property name="minTimeBetweenRequests" value="10"/>
</properties>
</provider>
</spi>
<spi name="x509cert-lookup">
<default-provider>${keycloak.x509cert.lookup.provider:default}</default-provider>
<provider name="default" enabled="true"/>
</spi>
<spi name="hostname">
<default-provider>${keycloak.hostname.provider:default}</default-provider>
<provider name="default" enabled="true">
<properties>
<property name="frontendUrl" value="${keycloak.frontendUrl:}"/>
<property name="forceBackendUrlToFrontendUrl" value="false"/>
</properties>
</provider>
<provider name="fixed" enabled="true">
<properties>
<property name="hostname" value="${keycloak.hostname.fixed.hostname:localhost}"/>
<property name="httpPort" value="${keycloak.hostname.fixed.httpPort:-1}"/>
<property name="httpsPort" value="${keycloak.hostname.fixed.httpsPort:-1}"/>
<property name="alwaysHttps" value="${keycloak.hostname.fixed.alwaysHttps:false}"/>
</properties>
</provider>
</spi>
</subsystem>
<subsystem xmlns="urn:jboss:domain:mail:4.0">
<mail-session name="default" jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp"/>
</mail-session>
</subsystem>
<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0"/>
<subsystem xmlns="urn:wildfly:microprofile-health-smallrye:2.0" security-enabled="false" empty-liveness-checks-status="${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}" empty-readiness-checks-status="${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}"/>
<subsystem xmlns="urn:wildfly:microprofile-metrics-smallrye:2.0" security-enabled="false" exposed-subsystems="*" prefix="${wildfly.metrics.prefix:wildfly}"/>
<subsystem xmlns="urn:jboss:domain:modcluster:5.0">
<proxy name="default" advertise-socket="modcluster" listener="ajp">
<dynamic-load-provider>
<load-metric type="cpu"/>
</dynamic-load-provider>
</proxy>
</subsystem>
<subsystem xmlns="urn:jboss:domain:naming:2.0">
<remote-naming/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:remoting:4.0">
<http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:request-controller:1.0"/>
<subsystem xmlns="urn:jboss:domain:security:2.0">
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="RealmDirect" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="jboss-web-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
<security-domain name="jaspitest" cache-type="default">
<authentication-jaspi>
<login-module-stack name="dummy">
<login-module code="Dummy" flag="optional"/>
</login-module-stack>
<auth-module code="Dummy"/>
</authentication-jaspi>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
</security-domains>
</subsystem>
<subsystem xmlns="urn:jboss:domain:security-manager:1.0">
<deployment-permissions>
<maximum-set>
<permission class="java.security.AllPermission"/>
</maximum-set>
</deployment-permissions>
</subsystem>
<subsystem xmlns="urn:jboss:domain:transactions:5.0">
<core-environment node-identifier="${jboss.tx.node.id:1}">
<process-id>
<uuid/>
</process-id>
</core-environment>
<recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
<coordinator-environment statistics-enabled="${wildfly.transactions.statistics-enabled:${wildfly.statistics-enabled:false}}"/>
<object-store path="tx-object-store" relative-to="jboss.server.data.dir"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:undertow:11.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}">
<buffer-cache name="default"/>
<server name="default-server">
<ajp-listener name="ajp" socket-binding="ajp"/>
<http-listener name="default" read-timeout="30000" socket-binding="http" redirect-socket="https" proxy-address-forwarding="${env.PROXY_ADDRESS_FORWARDING:false}" enable-http2="true"/>
<https-listener name="https" read-timeout="30000" socket-binding="https" proxy-address-forwarding="${env.PROXY_ADDRESS_FORWARDING:false}" security-realm="ApplicationRealm" enable-http2="true"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<http-invoker security-realm="ApplicationRealm"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
</subsystem>
<subsystem xmlns="urn:jboss:domain:weld:4.0"/>
</profile>
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="private">
<inet-address value="${jboss.bind.address.private:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<socket-binding name="jgroups-mping" interface="private" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" interface="private" port="7600"/>
<socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/>
<socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" interface="private" port="54200"/>
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
<socket-binding name="modcluster" multicast-address="${jboss.modcluster.multicast.address:224.0.1.105}" multicast-port="23364"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
</server>

View File

@ -1,28 +0,0 @@
Object.defineProperty(
Object,
"deepAssign",
{
"value": function callee(target, source) {
Object.keys(source).forEach(function (key) {
var value = source[key];
if (target[key] === undefined) {
target[key] = value;
return;
}
if (value instanceof Object) {
if (value instanceof Array) {
value.forEach(function (entry) {
target[key].push(entry);
});
return;
}
callee(target[key], value);
return;
}
target[key] = value;
});
return target;
}
}
);

View File

@ -1,26 +0,0 @@
var es = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;
var unes = {
'&amp;': '&',
'&#38;': '&',
'&lt;': '<',
'&#60;': '<',
'&gt;': '>',
'&#62;': '>',
'&apos;': "'",
'&#39;': "'",
'&quot;': '"',
'&#34;': '"'
};
var cape = function (m) { return unes[m]; };
Object.defineProperty(
String,
"htmlUnescape",
{
"value": function (un) {
return String.prototype.replace.call(un, es, cape);
}
}
);

View File

@ -1,15 +0,0 @@
<script>const _=
{
"client": (function (){
<#if client??>
return {
"baseUrl": "${(client.baseUrl!'')?no_esc}" || undefined
};
</#if>
return undefined;
})()
}
</script>

View File

@ -1,13 +0,0 @@
export declare const pageIds: readonly ["login.ftl", "register.ftl", "info.ftl", "error.ftl", "login-reset-password.ftl", "login-verify-email.ftl"];
export declare type PageId = typeof pageIds[number];
export declare function generateFtlFilesCodeFactory(params: {
ftlValuesGlobalName: string;
cssGlobalsToDefine: Record<string, string>;
indexHtmlCode: string;
}): {
generateFtlFilesCode: (params: {
pageId: PageId;
}) => {
ftlCode: string;
};
};

View File

@ -1,151 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateFtlFilesCodeFactory = exports.pageIds = void 0;
var cheerio_1 = __importDefault(require("cheerio"));
var replaceImportFromStatic_1 = require("../replaceImportFromStatic");
var fs_1 = __importDefault(require("fs"));
var path_1 = require("path");
var objectKeys_1 = require("evt/tools/typeSafety/objectKeys");
exports.pageIds = ["login.ftl", "register.ftl", "info.ftl", "error.ftl", "login-reset-password.ftl", "login-verify-email.ftl"];
function loadAdjacentFile(fileBasename) {
return fs_1.default.readFileSync(path_1.join(__dirname, fileBasename))
.toString("utf8");
}
;
function loadFtlFile(ftlFileBasename) {
try {
return loadAdjacentFile(ftlFileBasename)
.match(/^<script>const _=((?:.|\n)+)<\/script>[\n]?$/)[1];
}
catch (_a) {
return "{}";
}
}
function generateFtlFilesCodeFactory(params) {
var ftlValuesGlobalName = params.ftlValuesGlobalName, cssGlobalsToDefine = params.cssGlobalsToDefine, indexHtmlCode = params.indexHtmlCode;
var $ = cheerio_1.default.load(indexHtmlCode);
$("script:not([src])").each(function () {
var _a = [];
for (var _i = 0; _i < arguments.length; _i++) {
_a[_i] = arguments[_i];
}
var _b = __read(_a, 2), element = _b[1];
var fixedJsCode = replaceImportFromStatic_1.replaceImportFromStaticInJsCode({
ftlValuesGlobalName: ftlValuesGlobalName,
"jsCode": $(element).html()
}).fixedJsCode;
$(element).text(fixedJsCode);
});
[
["link", "href"],
["script", "src"],
].forEach(function (_a) {
var _b = __read(_a, 2), selector = _b[0], attrName = _b[1];
return $(selector).each(function () {
var _a = [];
for (var _i = 0; _i < arguments.length; _i++) {
_a[_i] = arguments[_i];
}
var _b = __read(_a, 2), element = _b[1];
var href = $(element).attr(attrName);
if (!(href === null || href === void 0 ? void 0 : href.startsWith("/"))) {
return;
}
$(element).attr(attrName, "${url.resourcesPath}/build" + href);
});
});
//FTL is no valid html, we can't insert with cheerio, we put placeholder for injecting later.
var ftlCommonPlaceholders = {
'{ "x": "vIdLqMeOed9sdLdIdOxdK0d" }': loadFtlFile("template.ftl"),
'<!-- xIdLqMeOedErIdLsPdNdI9dSlxI -->': [
'<#if scripts??>',
' <#list scripts as script>',
' <script src="${script}" type="text/javascript"></script>',
' </#list>',
'</#if>'
].join("\n")
};
var pageSpecificCodePlaceholder = "<!-- dIddLqMeOedErIdLsPdNdI9dSl42sw -->";
$("head").prepend(__spreadArray(__spreadArray(__spreadArray([], __read((Object.keys(cssGlobalsToDefine).length === 0 ? [] : [
'',
'<style>',
replaceImportFromStatic_1.generateCssCodeToDefineGlobals({ cssGlobalsToDefine: cssGlobalsToDefine }).cssCodeToPrependInHead,
'</style>',
''
]))), __read(["Object.deepAssign.js", "String.htmlUnescape.js"].map(function (fileBasename) { return [
"<script>",
loadAdjacentFile(fileBasename),
"</script>"
].join("\n"); }))), [
'<script>',
" window." + ftlValuesGlobalName + "= Object.assign(",
" {},",
" " + objectKeys_1.objectKeys(ftlCommonPlaceholders)[0],
' );',
'</script>',
'',
pageSpecificCodePlaceholder,
'',
objectKeys_1.objectKeys(ftlCommonPlaceholders)[1]
]).join("\n"));
var partiallyFixedIndexHtmlCode = $.html();
function generateFtlFilesCode(params) {
var pageId = params.pageId;
var $ = cheerio_1.default.load(partiallyFixedIndexHtmlCode);
var ftlPlaceholders = __assign({ '{ "x": "kxOlLqMeOed9sdLdIdOxd444" }': loadFtlFile(pageId) }, ftlCommonPlaceholders);
var ftlCode = $.html()
.replace(pageSpecificCodePlaceholder, [
'<script>',
" Object.deepAssign(",
" window." + ftlValuesGlobalName + ",",
" { \"pageId\": \"" + pageId + "\" }",
' );',
" Object.deepAssign(",
" window." + ftlValuesGlobalName + ",",
" " + objectKeys_1.objectKeys(ftlPlaceholders)[0],
' );',
'</script>'
].join("\n"));
objectKeys_1.objectKeys(ftlPlaceholders)
.forEach(function (id) { return ftlCode = ftlCode.replace(id, ftlPlaceholders[id]); });
return { ftlCode: ftlCode };
}
return { generateFtlFilesCode: generateFtlFilesCode };
}
exports.generateFtlFilesCodeFactory = generateFtlFilesCodeFactory;
//# sourceMappingURL=index.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateFtl/index.ts"],"names":[],"mappings":"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"}

View File

@ -1,37 +0,0 @@
<script>const _=
{
"messageHeader": "${messageHeader!''}" || undefined,
"requiredActions": (function (){
<#if requiredActions??>
var out =[];
<#list requiredActions>
<#items as reqActionItem>
out.push("${reqActionItem}");
</#items></b>
</#list>
return out;
<#else>
return undefined;
})(),
"skipLink": (function (){
<#if skipLink??>
return true;
</#if>
return false;
})(),
"pageRedirectUri": "${(pageRedirectUri!'')?no_esc}" || undefined,
"actionUri": "${(actionUri!'')?no_esc}" || undefined,
"client": {
"baseUrl": "${(client.baseUrl!'')?no_esc}" || undefined
}
}
</script>

View File

@ -1,7 +0,0 @@
<script>const _=
{
"realm": {
"loginWithEmailAllowed": ${realm.loginWithEmailAllowed?c}
},
}
</script>

View File

@ -1,83 +0,0 @@
<script>const _=
{
"url": {
"loginResetCredentialsUrl": "${url.loginResetCredentialsUrl?no_esc}",
"registrationUrl": "${url.registrationUrl?no_esc}"
},
"realm": {
"loginWithEmailAllowed": ${realm.loginWithEmailAllowed?c},
"rememberMe": ${realm.rememberMe?c},
"password": ${realm.password?c},
"resetPasswordAllowed": ${realm.resetPasswordAllowed?c},
"registrationAllowed": ${realm.registrationAllowed?c}
},
"auth": (function (){
<#if auth?has_content>
var out= {
"selectedCredential": "${auth.selectedCredential!''}" || undefined
};
return out;
</#if>
return undefined;
})(),
"social": {
"displayInfo": ${social.displayInfo?c},
"providers": (()=>{
<#if social.providers??>
var out= [];
<#list social.providers as p>
out.push({
"loginUrl": "${p.loginUrl?no_esc}",
"alias": "${p.alias}",
"providerId": "${p.providerId}",
"displayName": "${p.displayName}"
});
</#list>
return out;
</#if>
return undefined;
})()
},
"usernameEditDisabled": (function () {
<#if usernameEditDisabled??>
return true;
</#if>
return false;
})(),
"login": {
"username": "${login.username!''}" || undefined,
"rememberMe": (function (){
<#if login.rememberMe??>
return true;
</#if>
return false;
})()
},
"registrationDisabled": (function (){
<#if registrationDisabled??>
return true;
</#if>
return false;
})()
}
</script>

View File

@ -1,46 +0,0 @@
<script>const _=
{
"url": {
"registrationAction": "${url.registrationAction?no_esc}"
},
"messagesPerField": {
"printIfExists": function (key, x) {
switch(key){
case "userLabel": "${messagesPerField.printIfExists('userLabel','1')}" ? x : undefined;
case "username": "${messagesPerField.printIfExists('username','1')}" ? x : undefined;
case "email": "${messagesPerField.printIfExists('email','1')}" ? x : undefined;
case "firstName": "${messagesPerField.printIfExists('firstName','1')}" ? x : undefined;
case "lastName": "${messagesPerField.printIfExists('lastName','1')}" ? x : undefined;
case "password": "${messagesPerField.printIfExists('password','1')}" ? x : undefined;
case "password-confirm": "${messagesPerField.printIfExists('password-confirm','1')}" ? x : undefined;
}
}
},
"register": {
"formData": {
"firstName": "${register.formData.firstName!''}" || undefined,
"displayName": "${register.formData.displayName!''}" || undefined,
"lastName": "${register.formData.lastName!''}" || undefined,
"email": "${register.formData.email!''}" || undefined,
"username": "${register.formData.username!''}" || undefined
}
},
"passwordRequired": (function (){
<#if passwordRequired??>
return true;
</#if>
return false;
})(),
"recaptchaRequired": (function (){
<#if passwordRequired??>
return true;
</#if>
return false;
})(),
"recaptchaSiteKey": "${recaptchaSiteKey!''}" || undefined
}
</script>

View File

@ -1,114 +0,0 @@
<script>const _=
{
"url": {
"loginAction": "${url.loginAction?no_esc}",
"resourcesPath": "${url.resourcesPath?no_esc}",
"resourcesCommonPath": "${url.resourcesCommonPath?no_esc}",
"loginRestartFlowUrl": "${url.loginRestartFlowUrl?no_esc}",
"loginUrl": "${url.loginUrl?no_esc}"
},
"realm": {
"displayName": "${realm.displayName!''}" || undefined,
"displayNameHtml": "${realm.displayNameHtml!''}" || undefined,
"internationalizationEnabled": ${realm.internationalizationEnabled?c},
"registrationEmailAsUsername": ${realm.registrationEmailAsUsername?c},
},
"locale": (function (){
<#if realm.internationalizationEnabled>
return {
"supported": (function(){
<#if realm.internationalizationEnabled>
var out= [];
<#list locale.supported as lng>
out.push({
"url": "${lng.url?no_esc}",
"label": "${lng.label}",
"languageTag": "${lng.languageTag}"
});
</#list>
return out;
</#if>
return undefined;
})(),
"current": "${locale.current}"
};
</#if>
return undefined;
})(),
"auth": (function (){
<#if auth?has_content>
var out= {
"showUsername": ${auth.showUsername()?c},
"showResetCredentials": ${auth.showResetCredentials()?c},
"showTryAnotherWayLink": ${auth.showTryAnotherWayLink()?c},
};
<#if auth.showUsername() && !auth.showResetCredentials()>
Object.assign(
out,
{
"attemptedUsername": "${auth.attemptedUsername}"
}
);
</#if>
return out;
</#if>
return undefined;
})(),
"scripts": (function(){
var out = [];
<#if scripts??>
<#list scripts as script>
out.push("${script}");
</#list>
</#if>
return out;
})(),
"message": (function (){
<#if message?has_content>
return { 
"type": "${message.type}",
"summary": String.htmlUnescape("${message.summary}")
};
</#if>
return undefined;
})(),
"isAppInitiatedAction": (function (){
<#if isAppInitiatedAction??>
return true;
</#if>
return false;
})()
}
</script>

View File

@ -1,11 +0,0 @@
export declare type ParsedPackageJson = {
name: string;
version: string;
homepage?: string;
};
export declare function generateJavaStackFiles(params: {
parsedPackageJson: ParsedPackageJson;
keycloakThemeBuildingDirPath: string;
}): {
jarFilePath: string;
};

View File

@ -1,73 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateJavaStackFiles = void 0;
var url = __importStar(require("url"));
var fs = __importStar(require("fs"));
var path_1 = require("path");
function generateJavaStackFiles(params) {
var _a = params.parsedPackageJson, name = _a.name, version = _a.version, homepage = _a.homepage, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath;
{
var pomFileCode = (function generatePomFileCode() {
var groupId = (function () {
var _a, _b;
var fallbackGroupId = "there.was.no.homepage.field.in.the.package.json." + name;
return (!homepage ?
fallbackGroupId :
(_b = (_a = url.parse(homepage).host) === null || _a === void 0 ? void 0 : _a.split(".").reverse().join(".")) !== null && _b !== void 0 ? _b : fallbackGroupId) + ".keycloak";
})();
var artefactId = name + "-keycloak-theme";
var pomFileCode = [
"<?xml version=\"1.0\"?>",
"<project xmlns=\"http://maven.apache.org/POM/4.0.0\"",
"\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"",
"\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">",
"\t<modelVersion>4.0.0</modelVersion>",
"\t<groupId>" + groupId + "</groupId>",
"\t<artifactId>" + artefactId + "</artifactId>",
"\t<version>" + version + "</version>",
"\t<name>" + artefactId + "</name>",
"\t<description />",
"</project>"
].join("\n");
return { pomFileCode: pomFileCode };
})().pomFileCode;
fs.writeFileSync(path_1.join(keycloakThemeBuildingDirPath, "pom.xml"), Buffer.from(pomFileCode, "utf8"));
}
{
var themeManifestFilePath = path_1.join(keycloakThemeBuildingDirPath, "src", "main", "resources", "META-INF", "keycloak-themes.json");
try {
fs.mkdirSync(path_1.dirname(themeManifestFilePath));
}
catch (_b) { }
fs.writeFileSync(themeManifestFilePath, Buffer.from(JSON.stringify({
"themes": [
{
"name": name,
"types": ["login"]
}
]
}, null, 2), "utf8"));
}
return { "jarFilePath": path_1.join(keycloakThemeBuildingDirPath, "target", name + "-" + version + ".jar") };
}
exports.generateJavaStackFiles = generateJavaStackFiles;
//# sourceMappingURL=generateJavaStackFiles.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"generateJavaStackFiles.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateJavaStackFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,uCAA2B;AAC3B,qCAAyB;AACzB,6BAAgE;AAQhE,SAAgB,sBAAsB,CAClC,MAGC;IAIG,IAAA,KAEA,MAAM,kBAFwC,EAAzB,IAAI,UAAA,EAAE,OAAO,aAAA,EAAE,QAAQ,cAAA,EAC5C,4BAA4B,GAC5B,MAAM,6BADsB,CACrB;IAEX;QAEY,IAAA,WAAW,GAAK,CAAC,SAAS,mBAAmB;YAGjD,IAAM,OAAO,GAAG,CAAC;;gBAEb,IAAM,eAAe,GAAG,qDAAmD,IAAM,CAAC;gBAElF,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACf,eAAe,CAAC,CAAC;oBACjB,MAAA,MAAA,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,0CAAE,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,mCAAI,eAAe,CAC9E,GAAG,WAAW,CAAC;YAEpB,CAAC,CAAC,EAAE,CAAC;YAEL,IAAM,UAAU,GAAM,IAAI,oBAAiB,CAAC;YAE5C,IAAM,WAAW,GAAG;gBAChB,yBAAuB;gBACvB,sDAAoD;gBACpD,2DAAwD;gBACxD,sGAAmG;gBACnG,sCAAqC;gBACrC,gBAAa,OAAO,eAAY;gBAChC,mBAAgB,UAAU,kBAAe;gBACzC,gBAAa,OAAO,eAAY;gBAChC,aAAU,UAAU,YAAS;gBAC7B,mBAAkB;gBAClB,YAAY;aACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO,EAAE,WAAW,aAAA,EAAE,CAAC;QAE3B,CAAC,CAAC,EAAE,YAhCe,CAgCd;QAEL,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,SAAS,CAAC,EACjD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CACnC,CAAC;KAEL;IAED;QAEI,IAAM,qBAAqB,GAAG,WAAQ,CAClC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAC3C,WAAW,EAAE,UAAU,EAAE,sBAAsB,CAClD,CAAC;QAEF,IAAI;YAEA,EAAE,CAAC,SAAS,CAAC,cAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC;SAEpD;QAAC,WAAM,GAAG;QAEX,EAAE,CAAC,aAAa,CACZ,qBAAqB,EACrB,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC;YACX,QAAQ,EAAE;gBACN;oBACI,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,CAAC,OAAO,CAAC;iBACrB;aACJ;SACJ,EAAE,IAAI,EAAE,CAAC,CAAC,EACX,MAAM,CACT,CACJ,CAAC;KAEL;IAED,OAAO,EAAE,aAAa,EAAE,WAAQ,CAAC,4BAA4B,EAAE,QAAQ,EAAK,IAAI,SAAI,OAAO,SAAM,CAAC,EAAE,CAAC;AAEzG,CAAC;AAvFD,wDAuFC"}

View File

@ -1,5 +0,0 @@
export declare function generateKeycloakThemeResources(params: {
themeName: string;
reactAppBuildDirPath: string;
keycloakThemeBuildingDirPath: string;
}): void;

View File

@ -1,112 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateKeycloakThemeResources = void 0;
var transformCodebase_1 = require("../tools/transformCodebase");
var fs = __importStar(require("fs"));
var path_1 = require("path");
var replaceImportFromStatic_1 = require("./replaceImportFromStatic");
var generateFtl_1 = require("./generateFtl");
var install_builtin_keycloak_themes_1 = require("../install-builtin-keycloak-themes");
var downloadAndUnzip_1 = require("../tools/downloadAndUnzip");
var child_process = __importStar(require("child_process"));
var ftlValuesGlobalName_1 = require("./ftlValuesGlobalName");
var urlResourcesPath_1 = require("../../lib/kcContextMocks/urlResourcesPath");
function generateKeycloakThemeResources(params) {
var themeName = params.themeName, reactAppBuildDirPath = params.reactAppBuildDirPath, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath;
var themeDirPath = path_1.join(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", themeName, "login");
var allCssGlobalsToDefine = {};
transformCodebase_1.transformCodebase({
"destDirPath": path_1.join(themeDirPath, "resources", "build"),
"srcDirPath": reactAppBuildDirPath,
"transformSourceCode": function (_a) {
var filePath = _a.filePath, sourceCode = _a.sourceCode;
if (/\.css?$/i.test(filePath)) {
var _b = replaceImportFromStatic_1.replaceImportFromStaticInCssCode({ "cssCode": sourceCode.toString("utf8") }), cssGlobalsToDefine = _b.cssGlobalsToDefine, fixedCssCode = _b.fixedCssCode;
allCssGlobalsToDefine = __assign(__assign({}, allCssGlobalsToDefine), cssGlobalsToDefine);
return { "modifiedSourceCode": Buffer.from(fixedCssCode, "utf8") };
}
if (/\.js?$/i.test(filePath)) {
var fixedJsCode = replaceImportFromStatic_1.replaceImportFromStaticInJsCode({
"jsCode": sourceCode.toString("utf8"),
ftlValuesGlobalName: ftlValuesGlobalName_1.ftlValuesGlobalName
}).fixedJsCode;
return { "modifiedSourceCode": Buffer.from(fixedJsCode, "utf8") };
}
return { "modifiedSourceCode": sourceCode };
}
});
var generateFtlFilesCode = generateFtl_1.generateFtlFilesCodeFactory({
"cssGlobalsToDefine": allCssGlobalsToDefine,
ftlValuesGlobalName: ftlValuesGlobalName_1.ftlValuesGlobalName,
"indexHtmlCode": fs.readFileSync(path_1.join(reactAppBuildDirPath, "index.html")).toString("utf8")
}).generateFtlFilesCode;
generateFtl_1.pageIds.forEach(function (pageId) {
var ftlCode = generateFtlFilesCode({ pageId: pageId }).ftlCode;
fs.writeFileSync(path_1.join(themeDirPath, pageId), Buffer.from(ftlCode, "utf8"));
});
{
var tmpDirPath = path_1.join(themeDirPath, "..", "tmp_xxKdLpdIdLd");
downloadAndUnzip_1.downloadAndUnzip({
"url": install_builtin_keycloak_themes_1.builtinThemesUrl,
"destDirPath": tmpDirPath
});
var themeResourcesDirPath = path_1.join(themeDirPath, "resources");
transformCodebase_1.transformCodebase({
"srcDirPath": path_1.join(tmpDirPath, "keycloak", "login", "resources"),
"destDirPath": themeResourcesDirPath
});
//const keycloakResourcesWithinPublicDirPath = pathJoin(reactAppBuildDirPath, "..", "public", "keycloak_static");
var reactAppPublicDirPath = path_1.join(reactAppBuildDirPath, "..", "public");
transformCodebase_1.transformCodebase({
"srcDirPath": themeResourcesDirPath,
"destDirPath": path_1.join(reactAppPublicDirPath, urlResourcesPath_1.resourcesPath)
});
transformCodebase_1.transformCodebase({
"srcDirPath": path_1.join(tmpDirPath, "keycloak", "common", "resources"),
"destDirPath": path_1.join(reactAppPublicDirPath, urlResourcesPath_1.resourcesCommonPath)
});
var keycloakResourcesWithinPublicDirPath = path_1.join(reactAppPublicDirPath, urlResourcesPath_1.subDirOfPublicDirBasename);
fs.writeFileSync(path_1.join(keycloakResourcesWithinPublicDirPath, ".gitignore"), Buffer.from([
urlResourcesPath_1.resourcesPath,
urlResourcesPath_1.resourcesCommonPath
].join("\n")));
fs.writeFileSync(path_1.join(keycloakResourcesWithinPublicDirPath, "README.txt"), Buffer.from([
"This is just a test folder that helps develop",
"the login and register page without having to yarn build"
].join(" ")));
child_process.execSync("rm -r " + tmpDirPath);
}
fs.writeFileSync(path_1.join(themeDirPath, "theme.properties"), Buffer.from("parent=keycloak", "utf8"));
}
exports.generateKeycloakThemeResources = generateKeycloakThemeResources;
//# sourceMappingURL=generateKeycloakThemeResources.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts"],"names":[],"mappings":"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"}

View File

@ -1,2 +0,0 @@
#!/usr/bin/env node
export declare const keycloakThemeBuildingDirPath: string;

View File

@ -1,86 +0,0 @@
#!/usr/bin/env node
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.keycloakThemeBuildingDirPath = void 0;
var generateKeycloakThemeResources_1 = require("./generateKeycloakThemeResources");
var generateJavaStackFiles_1 = require("./generateJavaStackFiles");
var path_1 = require("path");
var child_process = __importStar(require("child_process"));
var generateDebugFiles_1 = require("./generateDebugFiles");
var reactProjectDirPath = process.cwd();
var parsedPackageJson = require(path_1.join(reactProjectDirPath, "package.json"));
exports.keycloakThemeBuildingDirPath = path_1.join(reactProjectDirPath, "build_keycloak");
if (require.main === module) {
console.log("🔏 Building the keycloak theme...⌚");
generateKeycloakThemeResources_1.generateKeycloakThemeResources({
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
"reactAppBuildDirPath": path_1.join(reactProjectDirPath, "build"),
"themeName": parsedPackageJson.name
});
var jarFilePath = generateJavaStackFiles_1.generateJavaStackFiles({
parsedPackageJson: parsedPackageJson,
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath
}).jarFilePath;
child_process.execSync("mvn package", { "cwd": exports.keycloakThemeBuildingDirPath });
generateDebugFiles_1.generateDebugFiles({
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
"packageJsonName": parsedPackageJson.name
});
console.log([
'',
"\u2705 Your keycloak theme has been generated and bundled into ./" + path_1.relative(reactProjectDirPath, jarFilePath) + " \uD83D\uDE80",
"It is to be placed in \"/opt/jboss/keycloak/standalone/deployments\" in the container running a jboss/keycloak Docker image. (Tested with 11.0.3)",
'',
'Using Helm (https://github.com/codecentric/helm-charts), edit to reflect:',
'',
'value.yaml: ',
' extraInitContainers: |',
' - name: realm-ext-provider',
' image: curlimages/curl',
' imagePullPolicy: IfNotPresent',
' command:',
' - sh',
' args:',
' - -c',
" - curl -L -f -S -o /extensions/" + path_1.basename(jarFilePath) + " https://AN.URL.FOR/" + path_1.basename(jarFilePath),
' volumeMounts:',
' - name: extensions',
' mountPath: /extensions',
' ',
' extraVolumeMounts: |',
' - name: extensions',
' mountPath: /opt/jboss/keycloak/standalone/deployments',
'',
'',
'To test your theme locally, with hot reloading, you can spin up a Keycloak container image with the theme loaded by running:',
'',
"\uD83D\uDC49 $ ./" + path_1.relative(reactProjectDirPath, path_1.join(exports.keycloakThemeBuildingDirPath, generateDebugFiles_1.containerLaunchScriptBasename)) + " \uD83D\uDC48",
'',
'To enable the theme within keycloak log into the admin console ( 👉 http://localhost:8080 username: admin, password: admin 👈), create a realm (called "myrealm" for example),',
"go to your realm settings, click on the theme tab then select " + parsedPackageJson.name + ".",
"More details: https://www.keycloak.org/getting-started/getting-started-docker",
'',
'Once your container is up and configured 👉 http://localhost:8080/auth/realms/myrealm/account 👈',
'',
].join("\n"));
}
//# sourceMappingURL=index.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,mFAAkF;AAClF,mEAAkE;AAElE,6BAA4F;AAC5F,2DAA+C;AAC/C,2DAAyF;AAGzF,IAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1C,IAAM,iBAAiB,GAAsB,OAAO,CAAC,WAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;AAEvF,QAAA,4BAA4B,GAAG,WAAQ,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAG5F,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAEzB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,+DAA8B,CAAC;QAC3B,4BAA4B,sCAAA;QAC5B,sBAAsB,EAAE,WAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;QAC9D,WAAW,EAAE,iBAAiB,CAAC,IAAI;KACtC,CAAC,CAAC;IAEK,IAAA,WAAW,GAAK,+CAAsB,CAAC;QAC3C,iBAAiB,mBAAA;QACjB,4BAA4B,sCAAA;KAC/B,CAAC,YAHiB,CAGhB;IAEH,aAAa,CAAC,QAAQ,CAClB,aAAa,EACb,EAAE,KAAK,EAAE,oCAA4B,EAAE,CAC1C,CAAC;IAEF,uCAAkB,CAAC;QACf,4BAA4B,sCAAA;QAC5B,iBAAiB,EAAE,iBAAiB,CAAC,IAAI;KAC5C,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC;QACR,EAAE;QACF,sEAA+D,eAAY,CAAC,mBAAmB,EAAE,WAAW,CAAC,kBAAK;QAClH,mJAAiJ;QACjJ,EAAE;QACF,2EAA2E;QAC3E,EAAE;QACF,cAAc;QACd,4BAA4B;QAC5B,oCAAoC;QACpC,kCAAkC;QAClC,yCAAyC;QACzC,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;QACjB,kBAAkB;QAClB,gDAA8C,eAAY,CAAC,WAAW,CAAC,4BAAuB,eAAY,CAAC,WAAW,CAAG;QACzH,yBAAyB;QACzB,gCAAgC;QAChC,sCAAsC;QACtC,UAAU;QACV,8BAA8B;QAC9B,gCAAgC;QAChC,qEAAqE;QACrE,EAAE;QACF,EAAE;QACF,8HAA8H;QAC9H,EAAE;QACF,sBAAU,eAAY,CAAC,mBAAmB,EAAE,WAAQ,CAAC,oCAA4B,EAAE,kDAA6B,CAAC,CAAC,kBAAK;QACvH,EAAE;QACF,gLAAgL;QAChL,mEAAiE,iBAAiB,CAAC,IAAI,MAAG;QAC1F,+EAA+E;QAC/E,EAAE;QACF,kGAAkG;QAClG,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CAEjB"}

View File

@ -1,17 +0,0 @@
export declare function replaceImportFromStaticInJsCode(params: {
ftlValuesGlobalName: string;
jsCode: string;
}): {
fixedJsCode: string;
};
export declare function replaceImportFromStaticInCssCode(params: {
cssCode: string;
}): {
fixedCssCode: string;
cssGlobalsToDefine: Record<string, string>;
};
export declare function generateCssCodeToDefineGlobals(params: {
cssGlobalsToDefine: Record<string, string>;
}): {
cssCodeToPrependInHead: string;
};

View File

@ -1,94 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateCssCodeToDefineGlobals = exports.replaceImportFromStaticInCssCode = exports.replaceImportFromStaticInJsCode = void 0;
var crypto = __importStar(require("crypto"));
function replaceImportFromStaticInJsCode(params) {
var jsCode = params.jsCode, ftlValuesGlobalName = params.ftlValuesGlobalName;
var fixedJsCode = jsCode.replace(/"static\//g, "window." + ftlValuesGlobalName + ".url.resourcesPath.replace(/^\\//,\"\") + \"/build/static/");
return { fixedJsCode: fixedJsCode };
}
exports.replaceImportFromStaticInJsCode = replaceImportFromStaticInJsCode;
function replaceImportFromStaticInCssCode(params) {
var _a;
var cssCode = params.cssCode;
var cssGlobalsToDefine = {};
new Set((_a = cssCode.match(/(url\(\/[^)]+\))/g)) !== null && _a !== void 0 ? _a : [])
.forEach(function (match) {
return cssGlobalsToDefine["url" + crypto
.createHash("sha256")
.update(match)
.digest("hex")
.substring(0, 15)] = match;
});
var fixedCssCode = cssCode;
Object.keys(cssGlobalsToDefine).forEach(function (cssVariableName) {
//NOTE: split/join pattern ~ replace all
return fixedCssCode =
fixedCssCode.split(cssGlobalsToDefine[cssVariableName])
.join("var(--" + cssVariableName + ")");
});
return { fixedCssCode: fixedCssCode, cssGlobalsToDefine: cssGlobalsToDefine };
}
exports.replaceImportFromStaticInCssCode = replaceImportFromStaticInCssCode;
function generateCssCodeToDefineGlobals(params) {
var cssGlobalsToDefine = params.cssGlobalsToDefine;
return {
"cssCodeToPrependInHead": __spreadArray(__spreadArray([
":root {"
], __read(Object.keys(cssGlobalsToDefine)
.map(function (cssVariableName) { return [
"--" + cssVariableName + ":",
[
"url(",
"${url.resourcesPath}/build" +
cssGlobalsToDefine[cssVariableName].match(/^url\(([^)]+)\)$/)[1],
")"
].join("")
].join(" "); })
.map(function (line) { return " " + line + ";"; }))), [
"}"
]).join("\n")
};
}
exports.generateCssCodeToDefineGlobals = generateCssCodeToDefineGlobals;
//# sourceMappingURL=replaceImportFromStatic.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"replaceImportFromStatic.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/replaceImportFromStatic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAAiC;AAEjC,SAAgB,+BAA+B,CAC3C,MAGC;IAGO,IAAA,MAAM,GAA0B,MAAM,OAAhC,EAAE,mBAAmB,GAAK,MAAM,oBAAX,CAAY;IAE/C,IAAM,WAAW,GAAG,MAAO,CAAC,OAAO,CAC/B,YAAY,EACZ,YAAU,mBAAmB,+DAAyD,CACzF,CAAC;IAEF,OAAO,EAAE,WAAW,aAAA,EAAE,CAAC;AAE3B,CAAC;AAhBD,0EAgBC;AAED,SAAgB,gCAAgC,CAC5C,MAEC;;IAMO,IAAA,OAAO,GAAK,MAAM,QAAX,CAAY;IAE3B,IAAM,kBAAkB,GAA2B,EAAE,CAAC;IAEtD,IAAI,GAAG,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,mCAAI,EAAE,CAAC;SAC5C,OAAO,CAAC,UAAA,KAAK;QACV,OAAA,kBAAkB,CAClB,KAAK,GAAG,MAAM;aACT,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,KAAK,CAAC;aACb,MAAM,CAAC,KAAK,CAAC;aACb,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,GAAG,KAAK;IANT,CAMS,CACZ,CAAC;IAEN,IAAI,YAAY,GAAG,OAAO,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CACnC,UAAA,eAAe;QACX,wCAAwC;QACxC,OAAA,YAAY;YACZ,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;iBAClD,IAAI,CAAC,WAAS,eAAe,MAAG,CAAC;IAFtC,CAEsC,CAC7C,CAAC;IAEF,OAAO,EAAE,YAAY,cAAA,EAAE,kBAAkB,oBAAA,EAAE,CAAC;AAEhD,CAAC;AApCD,4EAoCC;AAED,SAAgB,8BAA8B,CAC1C,MAEC;IAKO,IAAA,kBAAkB,GAAK,MAAM,mBAAX,CAAY;IAEtC,OAAO;QACH,wBAAwB,EAAE;YACtB,SAAS;kBACN,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;aAC7B,GAAG,CAAC,UAAA,eAAe,IAAI,OAAA;YACpB,OAAK,eAAe,MAAG;YACvB;gBACI,MAAM;gBACN,4BAA4B;oBAC5B,kBAAkB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAE,CAAC,CAAC,CAAC;gBACjE,GAAG;aACN,CAAC,IAAI,CAAC,EAAE,CAAC;SACb,CAAC,IAAI,CAAC,GAAG,CAAC,EARa,CAQb,CAAC;aACX,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,SAAO,IAAI,MAAG,EAAd,CAAc,CAAC;YAChC,GAAG;WACL,IAAI,CAAC,IAAI,CAAC;KACf,CAAC;AAEN,CAAC;AA5BD,wEA4BC"}

View File

@ -1 +0,0 @@
import "minimal-polyfills/Object.fromEntries";

View File

@ -1,85 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
require("minimal-polyfills/Object.fromEntries");
var fs = __importStar(require("fs"));
var path_1 = require("path");
var crawl_1 = require("./tools/crawl");
var downloadAndUnzip_1 = require("./tools/downloadAndUnzip");
var install_builtin_keycloak_themes_1 = require("./install-builtin-keycloak-themes");
var getProjectRoot_1 = require("./tools/getProjectRoot");
var child_process = __importStar(require("child_process"));
//@ts-ignore
var propertiesParser = require("properties-parser");
var tmpDirPath = path_1.join(getProjectRoot_1.getProjectRoot(), "tmp_xImOef9dOd44");
child_process.execSync("rm -rf " + tmpDirPath);
downloadAndUnzip_1.downloadAndUnzip({
"destDirPath": tmpDirPath,
"url": install_builtin_keycloak_themes_1.builtinThemesUrl
});
var record = {};
process.chdir(path_1.join(tmpDirPath, "base"));
crawl_1.crawl(".").forEach(function (filePath) {
var _a;
var match = filePath.match(/^([^/]+)\/messages\/messages_([^.]+)\.properties$/);
if (match === null) {
return;
}
var _b = __read(match, 3), typeOfPage = _b[1], language = _b[2];
((_a = record[typeOfPage]) !== null && _a !== void 0 ? _a : (record[typeOfPage] = {}))[language.replace(/_/g, "-")] =
Object.fromEntries(Object.entries(propertiesParser.parse(fs.readFileSync(filePath)
.toString("utf8"))).map(function (_a) {
var _b = __read(_a, 2), key = _b[0], value = _b[1];
return [key, value.replace(/''/g, "'")];
}));
});
child_process.execSync("rm -r " + tmpDirPath);
var targetDirPath = path_1.join(getProjectRoot_1.getProjectRoot(), "src", "lib", "i18n", "generated_messages");
fs.mkdirSync(targetDirPath, { "recursive": true });
Object.keys(record).forEach(function (pageType) {
var filePath = path_1.join(targetDirPath, pageType + ".ts");
fs.writeFileSync(filePath, Buffer.from([
"//This code was automatically generated by running " + path_1.relative(getProjectRoot_1.getProjectRoot(), __filename),
'//PLEASE DO NOT EDIT MANUALLY',
'',
'/* spell-checker: disable */',
"export const messages= " + JSON.stringify(record[pageType], null, 2) + " as const;",
'/* spell-checker: enable */'
].join("\n"), "utf8"));
console.log(filePath + " wrote");
});
//# sourceMappingURL=generate-i18n-messages.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"generate-i18n-messages.js","sourceRoot":"","sources":["../src/bin/generate-i18n-messages.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA8C;AAC9C,qCAAyB;AACzB,6BAAkE;AAClE,uCAAsC;AACtC,6DAA4D;AAC5D,qFAAqE;AACrE,yDAAwD;AACxD,2DAA+C;AAE/C,YAAY;AACZ,IAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAEtD,IAAM,UAAU,GAAG,WAAQ,CAAC,+BAAc,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAElE,aAAa,CAAC,QAAQ,CAAC,YAAU,UAAY,CAAC,CAAC;AAE/C,mCAAgB,CAAC;IACb,aAAa,EAAE,UAAU;IACzB,KAAK,EAAE,kDAAgB;CAC1B,CAAC,CAAC;AAIH,IAAM,MAAM,GAAiE,EAAE,CAAC;AAEhF,OAAO,CAAC,KAAK,CAAC,WAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5C,aAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;;IAEvB,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAElF,IAAI,KAAK,KAAK,IAAI,EAAE;QAChB,OAAO;KACV;IAEK,IAAA,KAAA,OAA2B,KAAK,IAAA,EAA7B,UAAU,QAAA,EAAE,QAAQ,QAAS,CAAC;IAEvC,OAAC,MAAM,CAAC,UAAU,qCAAjB,MAAM,CAAC,UAAU,IAAM,EAAE,EAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CACd,MAAM,CAAC,OAAO,CACV,gBAAgB,CAAC,KAAK,CAClB,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;aACpB,QAAQ,CAAC,MAAM,CAAC,CACxB,CACJ,CAAC,GAAG,CAAC,UAAC,EAAiB;gBAAjB,KAAA,aAAiB,EAAhB,GAAG,QAAA,EAAE,KAAK,QAAA;YAAW,OAAA,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAAhC,CAAgC,CAAC,CACjE,CAAC;AAEV,CAAC,CAAC,CAAC;AAEH,aAAa,CAAC,QAAQ,CAAC,WAAS,UAAY,CAAC,CAAC;AAE9C,IAAM,aAAa,GAAG,WAAQ,CAAC,+BAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAE7F,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAEnD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;IAEhC,IAAM,QAAQ,GAAG,WAAQ,CAAC,aAAa,EAAK,QAAQ,QAAK,CAAC,CAAC;IAE3D,EAAE,CAAC,aAAa,CACZ,QAAQ,EACR,MAAM,CAAC,IAAI,CACP;QACI,wDAAsD,eAAY,CAAC,+BAAc,EAAE,EAAE,UAAU,CAAG;QAClG,+BAA+B;QAC/B,EAAE;QACF,8BAA8B;QAC9B,4BAA0B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,eAAY;QAC/E,6BAA6B;KAChC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAC5B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAI,QAAQ,WAAQ,CAAC,CAAC;AAGrC,CAAC,CAAC,CAAC"}

View File

@ -1,2 +0,0 @@
#!/usr/bin/env node
export declare const builtinThemesUrl = "https://github.com/garronej/keycloakify/releases/download/v0.0.1/keycloak_11.0.3_builtin_themes.zip";

View File

@ -1,15 +0,0 @@
#!/usr/bin/env node
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.builtinThemesUrl = void 0;
var build_keycloak_theme_1 = require("./build-keycloak-theme");
var downloadAndUnzip_1 = require("./tools/downloadAndUnzip");
var path_1 = require("path");
exports.builtinThemesUrl = "https://github.com/garronej/keycloakify/releases/download/v0.0.1/keycloak_11.0.3_builtin_themes.zip";
if (require.main === module) {
downloadAndUnzip_1.downloadAndUnzip({
"url": exports.builtinThemesUrl,
"destDirPath": path_1.join(build_keycloak_theme_1.keycloakThemeBuildingDirPath, "src", "main", "resources", "theme")
});
}
//# sourceMappingURL=install-builtin-keycloak-themes.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"install-builtin-keycloak-themes.js","sourceRoot":"","sources":["../src/bin/install-builtin-keycloak-themes.ts"],"names":[],"mappings":";;;;AAEA,+DAAsE;AACtE,6DAA4D;AAC5D,6BAAwC;AAE3B,QAAA,gBAAgB,GACzB,qGAAqG,CAAC;AAE1G,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAEzB,mCAAgB,CAAC;QACb,KAAK,EAAE,wBAAgB;QACvB,aAAa,EAAE,WAAQ,CAAC,mDAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;KAC7F,CAAC,CAAC;CAEN"}

View File

@ -1,2 +0,0 @@
/** List all files in a given directory return paths relative to the dir_path */
export declare const crawl: (dir_path: string) => string[];

View File

@ -1,65 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.crawl = void 0;
var fs = __importStar(require("fs"));
var path = __importStar(require("path"));
/** List all files in a given directory return paths relative to the dir_path */
exports.crawl = (function () {
var crawlRec = function (dir_path, paths) {
var e_1, _a;
try {
for (var _b = __values(fs.readdirSync(dir_path)), _c = _b.next(); !_c.done; _c = _b.next()) {
var file_name = _c.value;
var file_path = path.join(dir_path, file_name);
if (fs.lstatSync(file_path).isDirectory()) {
crawlRec(file_path, paths);
continue;
}
paths.push(file_path);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
};
return function crawl(dir_path) {
var paths = [];
crawlRec(dir_path, paths);
return paths.map(function (file_path) { return path.relative(dir_path, file_path); });
};
})();
//# sourceMappingURL=crawl.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"crawl.js","sourceRoot":"","sources":["../../src/bin/tools/crawl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,yCAA6B;AAE7B,gFAAgF;AACnE,QAAA,KAAK,GAAG,CAAC;IAElB,IAAM,QAAQ,GAAG,UAAC,QAAgB,EAAE,KAAe;;;YAE/C,KAAwB,IAAA,KAAA,SAAA,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA,gBAAA,4BAAE;gBAA7C,IAAM,SAAS,WAAA;gBAEhB,IAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAEjD,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;oBAEvC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAE3B,SAAS;iBAEZ;gBAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAEzB;;;;;;;;;IAEL,CAAC,CAAC;IAEF,OAAO,SAAS,KAAK,CAAC,QAAgB;QAElC,IAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE1B,OAAO,KAAK,CAAC,GAAG,CAAC,UAAA,SAAS,IAAI,OAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAlC,CAAkC,CAAC,CAAC;IAEtE,CAAC,CAAA;AAEL,CAAC,CAAC,EAAE,CAAC"}

View File

@ -1,5 +0,0 @@
/** assert url ends with .zip */
export declare function downloadAndUnzip(params: {
url: string;
destDirPath: string;
}): void;

View File

@ -1,27 +0,0 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.downloadAndUnzip = void 0;
var path_1 = require("path");
var child_process_1 = require("child_process");
var fs_1 = __importDefault(require("fs"));
var transformCodebase_1 = require("../tools/transformCodebase");
/** assert url ends with .zip */
function downloadAndUnzip(params) {
var url = params.url, destDirPath = params.destDirPath;
var tmpDirPath = path_1.join(destDirPath, "..", "tmp_xxKdOxnEdx");
child_process_1.execSync("rm -rf " + tmpDirPath);
fs_1.default.mkdirSync(tmpDirPath, { "recursive": true });
child_process_1.execSync("wget " + url, { "cwd": tmpDirPath });
child_process_1.execSync("unzip " + path_1.basename(url), { "cwd": tmpDirPath });
child_process_1.execSync("rm " + path_1.basename(url), { "cwd": tmpDirPath });
transformCodebase_1.transformCodebase({
"srcDirPath": tmpDirPath,
"destDirPath": destDirPath,
});
child_process_1.execSync("rm -r " + tmpDirPath);
}
exports.downloadAndUnzip = downloadAndUnzip;
//# sourceMappingURL=downloadAndUnzip.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"downloadAndUnzip.js","sourceRoot":"","sources":["../../src/bin/tools/downloadAndUnzip.ts"],"names":[],"mappings":";;;;;;AACA,6BAAkE;AAClE,+CAAyC;AACzC,0CAAoB;AACpB,gEAA+D;AAE/D,gCAAgC;AAChC,SAAgB,gBAAgB,CAC5B,MAGC;IAGO,IAAA,GAAG,GAAkB,MAAM,IAAxB,EAAE,WAAW,GAAK,MAAM,YAAX,CAAY;IAEpC,IAAM,UAAU,GAAG,WAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAEjE,wBAAQ,CAAC,YAAU,UAAY,CAAC,CAAC;IAEjC,YAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,wBAAQ,CAAC,UAAQ,GAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;IAC9C,wBAAQ,CAAC,WAAS,eAAY,CAAC,GAAG,CAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9D,wBAAQ,CAAC,QAAM,eAAY,CAAC,GAAG,CAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE3D,qCAAiB,CAAC;QACd,YAAY,EAAE,UAAU;QACxB,aAAa,EAAE,WAAW;KAC7B,CAAC,CAAC;IAEH,wBAAQ,CAAC,WAAS,UAAY,CAAC,CAAC;AAEpC,CAAC;AA1BD,4CA0BC"}

View File

@ -1 +0,0 @@
export declare function getProjectRoot(): string;

View File

@ -1,39 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProjectRoot = void 0;
var fs = __importStar(require("fs"));
var path = __importStar(require("path"));
function getProjectRootRec(dirPath) {
if (fs.existsSync(path.join(dirPath, "package.json"))) {
return dirPath;
}
return getProjectRootRec(path.join(dirPath, ".."));
}
var result = undefined;
function getProjectRoot() {
if (result !== undefined) {
return result;
}
return (result = getProjectRootRec(__dirname));
}
exports.getProjectRoot = getProjectRoot;
//# sourceMappingURL=getProjectRoot.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"getProjectRoot.js","sourceRoot":"","sources":["../../src/bin/tools/getProjectRoot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,yCAA6B;AAE7B,SAAS,iBAAiB,CAAC,OAAe;IACtC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE;QACnD,OAAO,OAAO,CAAC;KAClB;IACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,MAAM,GAAuB,SAAS,CAAC;AAE3C,SAAgB,cAAc;IAC1B,IAAI,MAAM,KAAK,SAAS,EAAE;QACtB,OAAO,MAAM,CAAC;KACjB;IAED,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,CAAC;AAND,wCAMC"}

View File

@ -1 +0,0 @@
export {};

View File

@ -1,30 +0,0 @@
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var getProjectRoot_1 = require("./getProjectRoot");
var path_1 = require("path");
var child_process_1 = __importDefault(require("child_process"));
Object.entries(require(path_1.join(getProjectRoot_1.getProjectRoot(), "package.json"))["bin"])
.forEach(function (_a) {
var _b = __read(_a, 2), scriptPath = _b[1];
return child_process_1.default.execSync("chmod +x " + scriptPath, { "cwd": getProjectRoot_1.getProjectRoot() });
});
//# sourceMappingURL=grant-exec-perms.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"grant-exec-perms.js","sourceRoot":"","sources":["../../src/bin/tools/grant-exec-perms.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,mDAAkD;AAClD,6BAAwC;AACxC,gEAA0C;AAE1C,MAAM,CAAC,OAAO,CAAS,OAAO,CAAC,WAAQ,CAAC,+BAAc,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC7E,OAAO,CAAC,UAAC,EAAc;QAAd,KAAA,aAAc,EAAX,UAAU,QAAA;IAAM,OAAA,uBAAa,CAAC,QAAQ,CAAC,cAAY,UAAY,EAAE,EAAE,KAAK,EAAE,+BAAc,EAAE,EAAE,CAAC;AAA7E,CAA6E,CAAC,CAAC"}

View File

@ -1,15 +0,0 @@
/// <reference types="node" />
declare type TransformSourceCode = (params: {
sourceCode: Buffer;
filePath: string;
}) => {
modifiedSourceCode: Buffer;
newFileName?: string;
} | undefined;
/** Apply a transformation function to every file of directory */
export declare function transformCodebase(params: {
srcDirPath: string;
destDirPath: string;
transformSourceCode?: TransformSourceCode;
}): void;
export {};

View File

@ -1,70 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformCodebase = void 0;
var fs = __importStar(require("fs"));
var path = __importStar(require("path"));
var crawl_1 = require("./crawl");
var id_1 = require("evt/tools/typeSafety/id");
/** Apply a transformation function to every file of directory */
function transformCodebase(params) {
var e_1, _a;
var srcDirPath = params.srcDirPath, destDirPath = params.destDirPath, _b = params.transformSourceCode, transformSourceCode = _b === void 0 ? id_1.id(function (_a) {
var sourceCode = _a.sourceCode;
return ({ "modifiedSourceCode": sourceCode });
}) : _b;
try {
for (var _c = __values(crawl_1.crawl(srcDirPath)), _d = _c.next(); !_d.done; _d = _c.next()) {
var file_relative_path = _d.value;
var filePath = path.join(srcDirPath, file_relative_path);
var transformSourceCodeResult = transformSourceCode({
"sourceCode": fs.readFileSync(filePath),
"filePath": path.join(srcDirPath, file_relative_path)
});
if (transformSourceCodeResult === undefined) {
continue;
}
fs.mkdirSync(path.dirname(path.join(destDirPath, file_relative_path)), { "recursive": true });
var newFileName = transformSourceCodeResult.newFileName, modifiedSourceCode = transformSourceCodeResult.modifiedSourceCode;
fs.writeFileSync(path.join(path.dirname(path.join(destDirPath, file_relative_path)), newFileName !== null && newFileName !== void 0 ? newFileName : path.basename(file_relative_path)), modifiedSourceCode);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
}
exports.transformCodebase = transformCodebase;
//# sourceMappingURL=transformCodebase.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"transformCodebase.js","sourceRoot":"","sources":["../../src/bin/tools/transformCodebase.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qCAAyB;AACzB,yCAA6B;AAC7B,iCAAgC;AAChC,8CAA6C;AAW7C,iEAAiE;AACjE,SAAgB,iBAAiB,CAC7B,MAIC;;IAIG,IAAA,UAAU,GAGV,MAAM,WAHI,EACV,WAAW,GAEX,MAAM,YAFK,EACX,KACA,MAAM,oBADmG,EAAzG,mBAAmB,mBAAG,OAAE,CAAsB,UAAC,EAAc;YAAZ,UAAU,gBAAA;QAAO,OAAA,CAAC,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;IAAtC,CAAsC,CAAC,KAAA,CAClG;;QAEX,KAAiC,IAAA,KAAA,SAAA,aAAK,CAAC,UAAU,CAAC,CAAA,gBAAA,4BAAE;YAA/C,IAAM,kBAAkB,WAAA;YAEzB,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAE3D,IAAM,yBAAyB,GAAG,mBAAmB,CAAC;gBAClD,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACvC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC;aACxD,CAAC,CAAC;YAEH,IAAI,yBAAyB,KAAK,SAAS,EAAE;gBACzC,SAAS;aACZ;YAED,EAAE,CAAC,SAAS,CACR,IAAI,CAAC,OAAO,CACR,IAAI,CAAC,IAAI,CACL,WAAW,EACX,kBAAkB,CACrB,CACJ,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACxB,CAAC;YAEM,IAAA,WAAW,GAAyB,yBAAyB,YAAlD,EAAE,kBAAkB,GAAK,yBAAyB,mBAA9B,CAA+B;YAEtE,EAAE,CAAC,aAAa,CACZ,IAAI,CAAC,IAAI,CACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,EACxD,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CACnD,EACD,kBAAkB,CACrB,CAAC;SAEL;;;;;;;;;AAGL,CAAC;AAlDD,8CAkDC"}

123
lib/KcContext.d.ts vendored
View File

@ -1,123 +0,0 @@
import type { KcLanguageTag } from "./i18n/KcLanguageTag";
import type { MessageKey } from "./i18n/useKcMessage";
import type { LanguageLabel } from "./i18n/KcLanguageTag";
declare type ExtractAfterStartingWith<Prefix extends string, StrEnum> = StrEnum extends `${Prefix}${infer U}` ? U : never;
export declare type KcContext = KcContext.Login | KcContext.Register | KcContext.Info | KcContext.Error | KcContext.LoginResetPassword | KcContext.LoginVerifyEmail;
export declare namespace KcContext {
type Template = {
url: {
loginAction: string;
resourcesPath: string;
resourcesCommonPath: string;
loginRestartFlowUrl: string;
loginUrl: string;
};
realm: {
displayName?: string;
displayNameHtml?: string;
internationalizationEnabled: boolean;
registrationEmailAsUsername: boolean;
};
/** Undefined if !realm.internationalizationEnabled */
locale?: {
supported: {
url: string;
languageTag: KcLanguageTag;
}[];
current: LanguageLabel;
};
auth?: {
showUsername: boolean;
showResetCredentials: boolean;
showTryAnotherWayLink: boolean;
attemptedUsername?: string;
};
scripts: string[];
message?: {
type: "success" | "warning" | "error" | "info";
summary: string;
};
isAppInitiatedAction: boolean;
};
type Login = Template & {
pageId: "login.ftl";
url: {
loginResetCredentialsUrl: string;
registrationUrl: string;
};
realm: {
loginWithEmailAllowed: boolean;
rememberMe: boolean;
password: boolean;
resetPasswordAllowed: boolean;
registrationAllowed: boolean;
};
auth: {
selectedCredential?: string;
};
registrationDisabled: boolean;
login: {
username?: string;
rememberMe: boolean;
};
usernameEditDisabled: boolean;
social: {
displayInfo: boolean;
providers?: {
loginUrl: string;
alias: string;
providerId: string;
displayName: string;
}[];
};
};
type Register = Template & {
pageId: "register.ftl";
url: {
registrationAction: string;
};
messagesPerField: {
printIfExists<T>(key: "userLabel" | "username" | "email" | "firstName" | "lastName" | "password" | "password-confirm", x: T): T | undefined;
};
register: {
formData: {
firstName?: string;
displayName?: string;
lastName?: string;
email?: string;
username?: string;
};
};
passwordRequired: boolean;
recaptchaRequired: boolean;
recaptchaSiteKey?: string;
};
type Info = Template & {
pageId: "info.ftl";
messageHeader?: string;
requiredActions?: ExtractAfterStartingWith<"requiredAction.", MessageKey>[];
skipLink: boolean;
pageRedirectUri?: string;
actionUri?: string;
client: {
baseUrl?: string;
};
};
type Error = Template & {
pageId: "error.ftl";
client?: {
baseUrl?: string;
};
};
type LoginResetPassword = Template & {
pageId: "login-reset-password.ftl";
realm: {
loginWithEmailAllowed: boolean;
};
};
type LoginVerifyEmail = Template & {
pageId: "login-verify-email.ftl";
};
}
export declare const kcContext: KcContext | undefined;
export {};

View File

@ -1,10 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.kcContext = void 0;
var ftlValuesGlobalName_1 = require("../bin/build-keycloak-theme/ftlValuesGlobalName");
var id_1 = require("evt/tools/typeSafety/id");
var doExtends_1 = require("evt/tools/typeSafety/doExtends");
doExtends_1.doExtends();
doExtends_1.doExtends();
exports.kcContext = id_1.id(window[ftlValuesGlobalName_1.ftlValuesGlobalName]);
//# sourceMappingURL=KcContext.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"KcContext.js","sourceRoot":"","sources":["../src/lib/KcContext.ts"],"names":[],"mappings":";;;AACA,uFAAsF;AAEtF,8CAA6C;AAE7C,4DAA2D;AAqJ3D,qBAAS,EAA+B,CAAC;AACzC,qBAAS,EAA+B,CAAC;AAE5B,QAAA,SAAS,GAAG,OAAE,CAAyB,MAAc,CAAC,yCAAmB,CAAC,CAAC,CAAC"}

View File

@ -1,6 +0,0 @@
/// <reference types="react" />
import type { KcProps } from "./KcProps";
import type { KcContext } from "../KcContext";
export declare const Error: import("react").MemoExoticComponent<({ kcContext, ...props }: {
kcContext: KcContext.Error;
} & KcProps) => JSX.Element>;

View File

@ -1,40 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Error = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Template_1 = require("./Template");
var assert_1 = require("../tools/assert");
var useKcMessage_1 = require("../i18n/useKcMessage");
exports.Error = react_1.memo(function (_a) {
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
var msg = useKcMessage_1.useKcMessage().msg;
assert_1.assert(kcContext.message !== undefined);
var message = kcContext.message, client = kcContext.client;
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { displayMessage: false, headerNode: msg("errorTitle"), formNode: jsx_runtime_1.jsxs("div", __assign({ id: "kc-error-message" }, { children: [jsx_runtime_1.jsx("p", __assign({ className: "instruction" }, { children: message.summary }), void 0),
client !== undefined && client.baseUrl !== undefined &&
jsx_runtime_1.jsx("p", { children: jsx_runtime_1.jsx("a", __assign({ id: "backToApplication", href: client.baseUrl }, { children: msg("backToApplication") }), void 0) }, void 0)] }), void 0) }), void 0));
});
//# sourceMappingURL=Error.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"Error.js","sourceRoot":"","sources":["../../src/lib/components/Error.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+BAA6B;AAC7B,uCAAsC;AAEtC,0CAAyC;AAEzC,qDAAoD;AAEvC,QAAA,KAAK,GAAG,YAAI,CAAC,UAAC,EAAkE;IAAhE,IAAA,SAAS,eAAA,EAAK,KAAK,cAArB,aAAuB,CAAF;IAEpC,IAAA,GAAG,GAAK,2BAAY,EAAE,IAAnB,CAAoB;IAE/B,eAAM,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IAEhC,IAAA,OAAO,GAAa,SAAS,QAAtB,EAAE,MAAM,GAAK,SAAS,OAAd,CAAe;IAEtC,OAAO,CACH,kBAAC,mBAAQ,0BACC,SAAS,WAAA,IAAK,KAAK,KACzB,cAAc,EAAE,KAAK,EACrB,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,EAC7B,QAAQ,EACJ,qCAAK,EAAE,EAAC,kBAAkB,iBACtB,kCAAG,SAAS,EAAC,aAAa,gBAAE,OAAO,CAAC,OAAO,YAAK;gBAE5C,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;oBACpD,mCACI,kCAAG,EAAE,EAAC,mBAAmB,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,gBACzC,GAAG,CAAC,mBAAmB,CAAC,YACzB,WACJ,aAEN,YAEZ,CACL,CAAC;AACN,CAAC,CAAC,CAAC"}

View File

@ -1,6 +0,0 @@
/// <reference types="react" />
import type { KcProps } from "./KcProps";
import type { KcContext } from "../KcContext";
export declare const Info: import("react").MemoExoticComponent<({ kcContext, ...props }: {
kcContext: KcContext.Info;
} & KcProps) => JSX.Element>;

View File

@ -1,53 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Info = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Template_1 = require("./Template");
var assert_1 = require("../tools/assert");
var useKcMessage_1 = require("../i18n/useKcMessage");
exports.Info = react_1.memo(function (_a) {
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
var msg = useKcMessage_1.useKcMessage().msg;
assert_1.assert(kcContext.message !== undefined);
var messageHeader = kcContext.messageHeader, message = kcContext.message, requiredActions = kcContext.requiredActions, skipLink = kcContext.skipLink, pageRedirectUri = kcContext.pageRedirectUri, actionUri = kcContext.actionUri, client = kcContext.client;
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { displayMessage: false, headerNode: messageHeader !== undefined ?
jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: messageHeader }, void 0)
:
jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: message.summary }, void 0), formNode: jsx_runtime_1.jsxs("div", __assign({ id: "kc-info-message" }, { children: [jsx_runtime_1.jsxs("p", __assign({ className: "instruction" }, { children: [message.summary, requiredActions !== undefined &&
jsx_runtime_1.jsx("b", { children: requiredActions
.map(function (requiredAction) { return msg("requiredAction." + requiredAction); })
.join(",") }, void 0)] }), void 0),
!skipLink &&
pageRedirectUri !== undefined ?
jsx_runtime_1.jsx("p", { children: jsx_runtime_1.jsxs("a", __assign({ href: "${pageRedirectUri}" }, { children: ["$", (msg("backToApplication"))] }), void 0) }, void 0)
:
actionUri !== undefined ?
jsx_runtime_1.jsx("p", { children: jsx_runtime_1.jsxs("a", __assign({ href: "${actionUri}" }, { children: ["$", msg("proceedWithAction")] }), void 0) }, void 0)
:
client.baseUrl !== undefined &&
jsx_runtime_1.jsx("p", { children: jsx_runtime_1.jsxs("a", __assign({ href: "${client.baseUrl}" }, { children: ["$", msg("backToApplication")] }), void 0) }, void 0)] }), void 0) }), void 0));
});
//# sourceMappingURL=Info.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"Info.js","sourceRoot":"","sources":["../../src/lib/components/Info.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+BAA6B;AAC7B,uCAAsC;AAEtC,0CAAyC;AAEzC,qDAAoD;AAEvC,QAAA,IAAI,GAAG,YAAI,CAAC,UAAC,EAAiE;IAA/D,IAAA,SAAS,eAAA,EAAK,KAAK,cAArB,aAAuB,CAAF;IAEnC,IAAA,GAAG,GAAK,2BAAY,EAAE,IAAnB,CAAoB;IAE/B,eAAM,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IAGpC,IAAA,aAAa,GAOb,SAAS,cAPI,EACb,OAAO,GAMP,SAAS,QANF,EACP,eAAe,GAKf,SAAS,gBALM,EACf,QAAQ,GAIR,SAAS,SAJD,EACR,eAAe,GAGf,SAAS,gBAHM,EACf,SAAS,GAET,SAAS,UAFA,EACT,MAAM,GACN,SAAS,OADH,CACI;IAEd,OAAO,CACH,kBAAC,mBAAQ,0BACC,SAAS,WAAA,IAAK,KAAK,KACzB,cAAc,EAAE,KAAK,EACrB,UAAU,EACN,aAAa,KAAK,SAAS,CAAC,CAAC;YACzB,sDAAG,aAAa,WAAI;YACpB,CAAC;gBACD,sDAAG,OAAO,CAAC,OAAO,WAAI,EAE9B,QAAQ,EACJ,qCAAK,EAAE,EAAC,iBAAiB,iBACrB,mCAAG,SAAS,EAAC,aAAa,iBAAE,OAAO,CAAC,OAAO,EAGnC,eAAe,KAAK,SAAS;4BAC7B,mCAEQ,eAAe;qCACV,GAAG,CAAC,UAAA,cAAc,IAAI,OAAA,GAAG,CAAC,oBAAkB,cAAyB,CAAC,EAAhD,CAAgD,CAAC;qCACvE,IAAI,CAAC,GAAG,CAAC,WAGlB,aAIR;gBAEA,CAAC,QAAQ;oBACL,eAAe,KAAK,SAAS,CAAC,CAAC;oBAC/B,mCAAG,mCAAG,IAAI,EAAC,oBAAoB,sBAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAK,WAAI;oBACrE,CAAC;wBACD,SAAS,KAAK,SAAS,CAAC,CAAC;4BACrB,mCAAG,mCAAG,IAAI,EAAC,cAAc,sBAAG,GAAG,CAAC,mBAAmB,CAAC,aAAK,WAAI;4BAC7D,CAAC;gCACD,MAAM,CAAC,OAAO,KAAK,SAAS;oCAC5B,mCAAG,mCAAG,IAAI,EAAC,mBAAmB,sBAAG,GAAG,CAAC,mBAAmB,CAAC,aAAK,WAAI,aAE5E,YAIZ,CACL,CAAC;AACN,CAAC,CAAC,CAAC"}

View File

@ -1,6 +0,0 @@
/// <reference types="react" />
import type { KcContext } from "../KcContext";
import type { KcProps } from "./KcProps";
export declare const KcApp: import("react").MemoExoticComponent<({ kcContext, ...props }: {
kcContext: KcContext;
} & KcProps) => JSX.Element>;

View File

@ -1,45 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.KcApp = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Login_1 = require("./Login");
var Register_1 = require("./Register");
var Info_1 = require("./Info");
var Error_1 = require("./Error");
var LoginResetPassword_1 = require("./LoginResetPassword");
var LoginVerifyEmail_1 = require("./LoginVerifyEmail");
exports.KcApp = react_1.memo(function (_a) {
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
switch (kcContext.pageId) {
case "login.ftl": return jsx_runtime_1.jsx(Login_1.Login, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
case "register.ftl": return jsx_runtime_1.jsx(Register_1.Register, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
case "info.ftl": return jsx_runtime_1.jsx(Info_1.Info, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
case "error.ftl": return jsx_runtime_1.jsx(Error_1.Error, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
case "login-reset-password.ftl": return jsx_runtime_1.jsx(LoginResetPassword_1.LoginResetPassword, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
case "login-verify-email.ftl": return jsx_runtime_1.jsx(LoginVerifyEmail_1.LoginVerifyEmail, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
}
});
//# sourceMappingURL=KcApp.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"KcApp.js","sourceRoot":"","sources":["../../src/lib/components/KcApp.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+BAA6B;AAG7B,iCAAgC;AAChC,uCAAsC;AACtC,+BAA8B;AAC9B,iCAAgC;AAChC,2DAA0D;AAC1D,uDAAsD;AAEzC,QAAA,KAAK,GAAG,YAAI,CAAC,UAAC,EAA4D;IAA1D,IAAA,SAAS,eAAA,EAAK,KAAK,cAArB,aAAuB,CAAF;IAC5C,QAAQ,SAAS,CAAC,MAAM,EAAE;QACtB,KAAK,WAAW,CAAC,CAAC,OAAO,kBAAC,aAAK,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAChE,KAAK,cAAc,CAAC,CAAC,OAAO,kBAAC,mBAAQ,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QACtE,KAAK,UAAU,CAAC,CAAC,OAAO,kBAAC,WAAI,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAC9D,KAAK,WAAW,CAAC,CAAC,OAAO,kBAAC,aAAK,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAChE,KAAK,0BAA0B,CAAC,CAAC,OAAO,kBAAC,uCAAkB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAC5F,KAAK,wBAAwB,CAAC,CAAC,OAAO,kBAAC,mCAAgB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;KAC3F;AACL,CAAC,CAAC,CAAC"}

View File

@ -1,108 +0,0 @@
/** Class names can be provided as an array or separated by whitespace */
export declare type KcPropsGeneric<CssClasses extends string> = {
[key in CssClasses]: readonly string[] | string | undefined;
};
export declare type KcTemplateClassKey = "stylesCommon" | "styles" | "scripts" | "kcHtmlClass" | "kcLoginClass" | "kcHeaderClass" | "kcHeaderWrapperClass" | "kcFormCardClass" | "kcFormCardAccountClass" | "kcFormHeaderClass" | "kcLocaleWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcFormGroupClass" | "kcResetFlowIcon" | "kcResetFlowIcon" | "kcFeedbackSuccessIcon" | "kcFeedbackWarningIcon" | "kcFeedbackErrorIcon" | "kcFeedbackInfoIcon" | "kcContentWrapperClass" | "kcFormSocialAccountContentClass" | "kcFormSocialAccountClass" | "kcSignUpClass" | "kcInfoAreaWrapperClass";
export declare type KcTemplateProps = KcPropsGeneric<KcTemplateClassKey>;
export declare const defaultKcTemplateProps: {
readonly stylesCommon: readonly ["node_modules/patternfly/dist/css/patternfly.min.css", "node_modules/patternfly/dist/css/patternfly-additions.min.css", "lib/zocial/zocial.css"];
readonly styles: readonly ["css/login.css"];
readonly scripts: readonly [];
readonly kcHtmlClass: readonly ["login-pf"];
readonly kcLoginClass: readonly ["login-pf-page"];
readonly kcContentWrapperClass: readonly ["row"];
readonly kcHeaderClass: readonly ["login-pf-page-header"];
readonly kcHeaderWrapperClass: readonly [];
readonly kcFormCardClass: readonly ["card-pf"];
readonly kcFormCardAccountClass: readonly ["login-pf-accounts"];
readonly kcFormSocialAccountClass: readonly ["login-pf-social-section"];
readonly kcFormSocialAccountContentClass: readonly ["col-xs-12", "col-sm-6"];
readonly kcFormHeaderClass: readonly ["login-pf-header"];
readonly kcLocaleWrapperClass: readonly [];
readonly kcFeedbackErrorIcon: readonly ["pficon", "pficon-error-circle-o"];
readonly kcFeedbackWarningIcon: readonly ["pficon", "pficon-warning-triangle-o"];
readonly kcFeedbackSuccessIcon: readonly ["pficon", "pficon-ok"];
readonly kcFeedbackInfoIcon: readonly ["pficon", "pficon-info"];
readonly kcResetFlowIcon: readonly ["pficon", "pficon-arrow fa-2x"];
readonly kcFormGroupClass: readonly ["form-group"];
readonly kcLabelWrapperClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcSignUpClass: readonly ["login-pf-signup"];
readonly kcInfoAreaWrapperClass: readonly [];
};
/** Tu use if you don't want any default */
export declare const allClearKcTemplateProps: Record<"stylesCommon" | "styles" | "scripts" | "kcHtmlClass" | "kcLoginClass" | "kcHeaderClass" | "kcHeaderWrapperClass" | "kcFormCardClass" | "kcFormCardAccountClass" | "kcFormHeaderClass" | "kcLocaleWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcFormGroupClass" | "kcResetFlowIcon" | "kcFeedbackSuccessIcon" | "kcFeedbackWarningIcon" | "kcFeedbackErrorIcon" | "kcFeedbackInfoIcon" | "kcFormSocialAccountContentClass" | "kcFormSocialAccountClass" | "kcSignUpClass" | "kcInfoAreaWrapperClass", undefined>;
export declare type KcProps = KcPropsGeneric<KcTemplateClassKey | "kcLogoLink" | "kcLogoClass" | "kcContainerClass" | "kcContentClass" | "kcFeedbackAreaClass" | "kcLocaleClass" | "kcAlertIconClasserror" | "kcFormAreaClass" | "kcFormSocialAccountListClass" | "kcFormSocialAccountDoubleListClass" | "kcFormSocialAccountListLinkClass" | "kcWebAuthnKeyIcon" | "kcFormClass" | "kcFormGroupErrorClass" | "kcLabelClass" | "kcInputClass" | "kcInputWrapperClass" | "kcFormOptionsClass" | "kcFormButtonsClass" | "kcFormSettingClass" | "kcTextareaClass" | "kcInfoAreaClass" | "kcButtonClass" | "kcButtonPrimaryClass" | "kcButtonDefaultClass" | "kcButtonLargeClass" | "kcButtonBlockClass" | "kcInputLargeClass" | "kcSrOnlyClass" | "kcSelectAuthListClass" | "kcSelectAuthListItemClass" | "kcSelectAuthListItemInfoClass" | "kcSelectAuthListItemLeftClass" | "kcSelectAuthListItemBodyClass" | "kcSelectAuthListItemDescriptionClass" | "kcSelectAuthListItemHeadingClass" | "kcSelectAuthListItemHelpTextClass" | "kcAuthenticatorDefaultClass" | "kcAuthenticatorPasswordClass" | "kcAuthenticatorOTPClass" | "kcAuthenticatorWebAuthnClass" | "kcAuthenticatorWebAuthnPasswordlessClass" | "kcSelectOTPListClass" | "kcSelectOTPListItemClass" | "kcAuthenticatorOtpCircleClass" | "kcSelectOTPItemHeadingClass" | "kcFormOptionsWrapperClass">;
export declare const defaultKcProps: {
readonly kcLogoLink: "http://www.keycloak.org";
readonly kcLogoClass: "login-pf-brand";
readonly kcContainerClass: "container-fluid";
readonly kcContentClass: readonly ["col-sm-8", "col-sm-offset-2", "col-md-6", "col-md-offset-3", "col-lg-6", "col-lg-offset-3"];
readonly kcFeedbackAreaClass: readonly ["col-md-12"];
readonly kcLocaleClass: readonly ["col-xs-12", "col-sm-1"];
readonly kcAlertIconClasserror: readonly ["pficon", "pficon-error-circle-o"];
readonly kcFormAreaClass: readonly ["col-sm-10", "col-sm-offset-1", "col-md-8", "col-md-offset-2", "col-lg-8", "col-lg-offset-2"];
readonly kcFormSocialAccountListClass: readonly ["login-pf-social", "list-unstyled", "login-pf-social-all"];
readonly kcFormSocialAccountDoubleListClass: readonly ["login-pf-social-double-col"];
readonly kcFormSocialAccountListLinkClass: readonly ["login-pf-social-link"];
readonly kcWebAuthnKeyIcon: readonly ["pficon", "pficon-key"];
readonly kcFormClass: readonly ["form-horizontal"];
readonly kcFormGroupErrorClass: readonly ["has-error"];
readonly kcLabelClass: readonly ["control-label"];
readonly kcInputClass: readonly ["form-control"];
readonly kcInputWrapperClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcFormOptionsClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcFormButtonsClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcFormSettingClass: readonly ["login-pf-settings"];
readonly kcTextareaClass: readonly ["form-control"];
readonly kcInfoAreaClass: readonly ["col-xs-12", "col-sm-4", "col-md-4", "col-lg-5", "details"];
readonly kcButtonClass: readonly ["btn"];
readonly kcButtonPrimaryClass: readonly ["btn-primary"];
readonly kcButtonDefaultClass: readonly ["btn-default"];
readonly kcButtonLargeClass: readonly ["btn-lg"];
readonly kcButtonBlockClass: readonly ["btn-block"];
readonly kcInputLargeClass: readonly ["input-lg"];
readonly kcSrOnlyClass: readonly ["sr-only"];
readonly kcSelectAuthListClass: readonly ["list-group", "list-view-pf"];
readonly kcSelectAuthListItemClass: readonly ["list-group-item", "list-view-pf-stacked"];
readonly kcSelectAuthListItemInfoClass: readonly ["list-view-pf-main-info"];
readonly kcSelectAuthListItemLeftClass: readonly ["list-view-pf-left"];
readonly kcSelectAuthListItemBodyClass: readonly ["list-view-pf-body"];
readonly kcSelectAuthListItemDescriptionClass: readonly ["list-view-pf-description"];
readonly kcSelectAuthListItemHeadingClass: readonly ["list-group-item-heading"];
readonly kcSelectAuthListItemHelpTextClass: readonly ["list-group-item-text"];
readonly kcAuthenticatorDefaultClass: readonly ["fa", "list-view-pf-icon-lg"];
readonly kcAuthenticatorPasswordClass: readonly ["fa", "fa-unlock list-view-pf-icon-lg"];
readonly kcAuthenticatorOTPClass: readonly ["fa", "fa-mobile", "list-view-pf-icon-lg"];
readonly kcAuthenticatorWebAuthnClass: readonly ["fa", "fa-key", "list-view-pf-icon-lg"];
readonly kcAuthenticatorWebAuthnPasswordlessClass: readonly ["fa", "fa-key", "list-view-pf-icon-lg"];
readonly kcSelectOTPListClass: readonly ["card-pf", "card-pf-view", "card-pf-view-select", "card-pf-view-single-select"];
readonly kcSelectOTPListItemClass: readonly ["card-pf-body", "card-pf-top-element"];
readonly kcAuthenticatorOtpCircleClass: readonly ["fa", "fa-mobile", "card-pf-icon-circle"];
readonly kcSelectOTPItemHeadingClass: readonly ["card-pf-title", "text-center"];
readonly kcFormOptionsWrapperClass: readonly [];
readonly stylesCommon: readonly ["node_modules/patternfly/dist/css/patternfly.min.css", "node_modules/patternfly/dist/css/patternfly-additions.min.css", "lib/zocial/zocial.css"];
readonly styles: readonly ["css/login.css"];
readonly scripts: readonly [];
readonly kcHtmlClass: readonly ["login-pf"];
readonly kcLoginClass: readonly ["login-pf-page"];
readonly kcContentWrapperClass: readonly ["row"];
readonly kcHeaderClass: readonly ["login-pf-page-header"];
readonly kcHeaderWrapperClass: readonly [];
readonly kcFormCardClass: readonly ["card-pf"];
readonly kcFormCardAccountClass: readonly ["login-pf-accounts"];
readonly kcFormSocialAccountClass: readonly ["login-pf-social-section"];
readonly kcFormSocialAccountContentClass: readonly ["col-xs-12", "col-sm-6"];
readonly kcFormHeaderClass: readonly ["login-pf-header"];
readonly kcLocaleWrapperClass: readonly [];
readonly kcFeedbackErrorIcon: readonly ["pficon", "pficon-error-circle-o"];
readonly kcFeedbackWarningIcon: readonly ["pficon", "pficon-warning-triangle-o"];
readonly kcFeedbackSuccessIcon: readonly ["pficon", "pficon-ok"];
readonly kcFeedbackInfoIcon: readonly ["pficon", "pficon-info"];
readonly kcResetFlowIcon: readonly ["pficon", "pficon-arrow fa-2x"];
readonly kcFormGroupClass: readonly ["form-group"];
readonly kcLabelWrapperClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcSignUpClass: readonly ["login-pf-signup"];
readonly kcInfoAreaWrapperClass: readonly [];
};
/** Tu use if you don't want any default */
export declare const allClearKcProps: Record<"stylesCommon" | "styles" | "scripts" | "kcHtmlClass" | "kcLoginClass" | "kcHeaderClass" | "kcHeaderWrapperClass" | "kcFormCardClass" | "kcFormCardAccountClass" | "kcFormHeaderClass" | "kcLocaleWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcFormGroupClass" | "kcResetFlowIcon" | "kcFeedbackSuccessIcon" | "kcFeedbackWarningIcon" | "kcFeedbackErrorIcon" | "kcFeedbackInfoIcon" | "kcFormSocialAccountContentClass" | "kcFormSocialAccountClass" | "kcSignUpClass" | "kcInfoAreaWrapperClass" | "kcLogoLink" | "kcLogoClass" | "kcContainerClass" | "kcContentClass" | "kcFeedbackAreaClass" | "kcLocaleClass" | "kcAlertIconClasserror" | "kcFormAreaClass" | "kcFormSocialAccountListClass" | "kcFormSocialAccountDoubleListClass" | "kcFormSocialAccountListLinkClass" | "kcWebAuthnKeyIcon" | "kcFormClass" | "kcFormGroupErrorClass" | "kcLabelClass" | "kcInputClass" | "kcInputWrapperClass" | "kcFormOptionsClass" | "kcFormButtonsClass" | "kcFormSettingClass" | "kcTextareaClass" | "kcInfoAreaClass" | "kcButtonClass" | "kcButtonPrimaryClass" | "kcButtonDefaultClass" | "kcButtonLargeClass" | "kcButtonBlockClass" | "kcInputLargeClass" | "kcSrOnlyClass" | "kcSelectAuthListClass" | "kcSelectAuthListItemClass" | "kcSelectAuthListItemInfoClass" | "kcSelectAuthListItemLeftClass" | "kcSelectAuthListItemBodyClass" | "kcSelectAuthListItemDescriptionClass" | "kcSelectAuthListItemHeadingClass" | "kcSelectAuthListItemHelpTextClass" | "kcAuthenticatorDefaultClass" | "kcAuthenticatorPasswordClass" | "kcAuthenticatorOTPClass" | "kcAuthenticatorWebAuthnClass" | "kcAuthenticatorWebAuthnPasswordlessClass" | "kcSelectOTPListClass" | "kcSelectOTPListItemClass" | "kcAuthenticatorOtpCircleClass" | "kcSelectOTPItemHeadingClass" | "kcFormOptionsWrapperClass", undefined>;

View File

@ -1,71 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.allClearKcProps = exports.defaultKcProps = exports.allClearKcTemplateProps = exports.defaultKcTemplateProps = void 0;
var allPropertiesValuesToUndefined_1 = require("../tools/allPropertiesValuesToUndefined");
var doExtends_1 = require("evt/tools/typeSafety/doExtends");
exports.defaultKcTemplateProps = {
"stylesCommon": [
"node_modules/patternfly/dist/css/patternfly.min.css",
"node_modules/patternfly/dist/css/patternfly-additions.min.css",
"lib/zocial/zocial.css"
],
"styles": ["css/login.css"],
"scripts": [],
"kcHtmlClass": ["login-pf"],
"kcLoginClass": ["login-pf-page"],
"kcContentWrapperClass": ["row"],
"kcHeaderClass": ["login-pf-page-header"],
"kcHeaderWrapperClass": [],
"kcFormCardClass": ["card-pf"],
"kcFormCardAccountClass": ["login-pf-accounts"],
"kcFormSocialAccountClass": ["login-pf-social-section"],
"kcFormSocialAccountContentClass": ["col-xs-12", "col-sm-6"],
"kcFormHeaderClass": ["login-pf-header"],
"kcLocaleWrapperClass": [],
"kcFeedbackErrorIcon": ["pficon", "pficon-error-circle-o"],
"kcFeedbackWarningIcon": ["pficon", "pficon-warning-triangle-o"],
"kcFeedbackSuccessIcon": ["pficon", "pficon-ok"],
"kcFeedbackInfoIcon": ["pficon", "pficon-info"],
"kcResetFlowIcon": ["pficon", "pficon-arrow fa-2x"],
"kcFormGroupClass": ["form-group"],
"kcLabelWrapperClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
"kcSignUpClass": ["login-pf-signup"],
"kcInfoAreaWrapperClass": []
};
doExtends_1.doExtends();
/** Tu use if you don't want any default */
exports.allClearKcTemplateProps = allPropertiesValuesToUndefined_1.allPropertiesValuesToUndefined(exports.defaultKcTemplateProps);
doExtends_1.doExtends();
exports.defaultKcProps = __assign(__assign({}, exports.defaultKcTemplateProps), { "kcLogoLink": "http://www.keycloak.org", "kcLogoClass": "login-pf-brand", "kcContainerClass": "container-fluid", "kcContentClass": ["col-sm-8", "col-sm-offset-2", "col-md-6", "col-md-offset-3", "col-lg-6", "col-lg-offset-3"], "kcFeedbackAreaClass": ["col-md-12"], "kcLocaleClass": ["col-xs-12", "col-sm-1"], "kcAlertIconClasserror": ["pficon", "pficon-error-circle-o"], "kcFormAreaClass": ["col-sm-10", "col-sm-offset-1", "col-md-8", "col-md-offset-2", "col-lg-8", "col-lg-offset-2"], "kcFormSocialAccountListClass": ["login-pf-social", "list-unstyled", "login-pf-social-all"], "kcFormSocialAccountDoubleListClass": ["login-pf-social-double-col"], "kcFormSocialAccountListLinkClass": ["login-pf-social-link"], "kcWebAuthnKeyIcon": ["pficon", "pficon-key"], "kcFormClass": ["form-horizontal"], "kcFormGroupErrorClass": ["has-error"], "kcLabelClass": ["control-label"], "kcInputClass": ["form-control"], "kcInputWrapperClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"], "kcFormOptionsClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"], "kcFormButtonsClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"], "kcFormSettingClass": ["login-pf-settings"], "kcTextareaClass": ["form-control"], "kcInfoAreaClass": ["col-xs-12", "col-sm-4", "col-md-4", "col-lg-5", "details"],
// css classes for form buttons main class used for all buttons
"kcButtonClass": ["btn"],
// classes defining priority of the button - primary or default (there is typically only one priority button for the form)
"kcButtonPrimaryClass": ["btn-primary"], "kcButtonDefaultClass": ["btn-default"],
// classes defining size of the button
"kcButtonLargeClass": ["btn-lg"], "kcButtonBlockClass": ["btn-block"],
// css classes for input
"kcInputLargeClass": ["input-lg"],
// css classes for form accessability
"kcSrOnlyClass": ["sr-only"],
// css classes for select-authenticator form
"kcSelectAuthListClass": ["list-group", "list-view-pf"], "kcSelectAuthListItemClass": ["list-group-item", "list-view-pf-stacked"], "kcSelectAuthListItemInfoClass": ["list-view-pf-main-info"], "kcSelectAuthListItemLeftClass": ["list-view-pf-left"], "kcSelectAuthListItemBodyClass": ["list-view-pf-body"], "kcSelectAuthListItemDescriptionClass": ["list-view-pf-description"], "kcSelectAuthListItemHeadingClass": ["list-group-item-heading"], "kcSelectAuthListItemHelpTextClass": ["list-group-item-text"],
// css classes for the authenticators
"kcAuthenticatorDefaultClass": ["fa", "list-view-pf-icon-lg"], "kcAuthenticatorPasswordClass": ["fa", "fa-unlock list-view-pf-icon-lg"], "kcAuthenticatorOTPClass": ["fa", "fa-mobile", "list-view-pf-icon-lg"], "kcAuthenticatorWebAuthnClass": ["fa", "fa-key", "list-view-pf-icon-lg"], "kcAuthenticatorWebAuthnPasswordlessClass": ["fa", "fa-key", "list-view-pf-icon-lg"],
//css classes for the OTP Login Form
"kcSelectOTPListClass": ["card-pf", "card-pf-view", "card-pf-view-select", "card-pf-view-single-select"], "kcSelectOTPListItemClass": ["card-pf-body", "card-pf-top-element"], "kcAuthenticatorOtpCircleClass": ["fa", "fa-mobile", "card-pf-icon-circle"], "kcSelectOTPItemHeadingClass": ["card-pf-title", "text-center"], "kcFormOptionsWrapperClass": [] });
doExtends_1.doExtends();
/** Tu use if you don't want any default */
exports.allClearKcProps = allPropertiesValuesToUndefined_1.allPropertiesValuesToUndefined(exports.defaultKcProps);
doExtends_1.doExtends();
//# sourceMappingURL=KcProps.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"KcProps.js","sourceRoot":"","sources":["../../src/lib/components/KcProps.ts"],"names":[],"mappings":"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"}

View File

@ -1,6 +0,0 @@
/// <reference types="react" />
import type { KcProps } from "./KcProps";
import type { KcContext } from "../KcContext";
export declare const Login: import("react").MemoExoticComponent<({ kcContext, ...props }: {
kcContext: KcContext.Login;
} & KcProps) => JSX.Element>;

View File

@ -1,82 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Login = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Template_1 = require("./Template");
var useKcMessage_1 = require("../i18n/useKcMessage");
var tss_react_1 = require("tss-react");
var powerhooks_1 = require("powerhooks");
exports.Login = react_1.memo(function (_a) {
var _b;
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
var _c = useKcMessage_1.useKcMessage(), msg = _c.msg, msgStr = _c.msgStr;
var social = kcContext.social, realm = kcContext.realm, url = kcContext.url, usernameEditDisabled = kcContext.usernameEditDisabled, login = kcContext.login, auth = kcContext.auth, registrationDisabled = kcContext.registrationDisabled;
var _d = __read(react_1.useState(false), 2), isLoginButtonDisabled = _d[0], setIsLoginButtonDisabled = _d[1];
var onSubmit = powerhooks_1.useConstCallback(function () {
return (setIsLoginButtonDisabled(true), true);
});
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { displayInfo: social.displayInfo, displayWide: realm.password && social.providers !== undefined, headerNode: msg("doLogIn"), formNode: jsx_runtime_1.jsxs("div", __assign({ id: "kc-form", className: tss_react_1.cx(realm.password && social.providers !== undefined && props.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-wrapper", className: tss_react_1.cx(realm.password && social.providers && [props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass]) }, { children: realm.password &&
(jsx_runtime_1.jsxs("form", __assign({ id: "kc-form-login", onSubmit: onSubmit, action: url.loginAction, method: "post" }, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("label", __assign({ htmlFor: "username", className: tss_react_1.cx(props.kcLabelClass) }, { children: !realm.loginWithEmailAllowed ?
msg("username")
:
(!realm.registrationEmailAsUsername ?
msg("usernameOrEmail") :
msg("email")) }), void 0),
jsx_runtime_1.jsx("input", __assign({ tabIndex: 1, id: "username", className: tss_react_1.cx(props.kcInputClass), name: "username", defaultValue: (_b = login.username) !== null && _b !== void 0 ? _b : '', type: "text" }, (usernameEditDisabled ? { "disabled": true } : { "autoFocus": true, "autoComplete": "off" })), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("label", __assign({ htmlFor: "password", className: tss_react_1.cx(props.kcLabelClass) }, { children: msg("password") }), void 0),
jsx_runtime_1.jsx("input", { tabIndex: 2, id: "password", className: tss_react_1.cx(props.kcInputClass), name: "password", type: "password", autoComplete: "off" }, void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, props.kcFormSettingClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-options" }, { children: (realm.rememberMe &&
!usernameEditDisabled) &&
jsx_runtime_1.jsx("div", __assign({ className: "checkbox" }, { children: jsx_runtime_1.jsxs("label", { children: [jsx_runtime_1.jsx("input", __assign({ tabIndex: 3, id: "rememberMe", name: "rememberMe", type: "checkbox" }, (login.rememberMe ? { "checked": true } : {})), void 0), msg("rememberMe")] }, void 0) }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcFormOptionsWrapperClass) }, { children: realm.resetPasswordAllowed &&
jsx_runtime_1.jsx("span", { children: jsx_runtime_1.jsx("a", __assign({ tabIndex: 5, href: url.loginResetCredentialsUrl }, { children: msg("doForgotPassword") }), void 0) }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ id: "kc-form-buttons", className: tss_react_1.cx(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("input", __assign({ type: "hidden", id: "id-hidden-input", name: "credentialId" }, ((auth === null || auth === void 0 ? void 0 : auth.selectedCredential) !== undefined ? { "value": auth.selectedCredential } : {})), void 0),
jsx_runtime_1.jsx("input", { tabIndex: 4, className: tss_react_1.cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.kcButtonLargeClass), name: "login", id: "kc-login", type: "submit", value: msgStr("doLogIn"), disabled: isLoginButtonDisabled }, void 0)] }), void 0)] }), void 0)) }), void 0),
(realm.password && social.providers !== undefined) &&
jsx_runtime_1.jsx("div", __assign({ id: "kc-social-providers", className: tss_react_1.cx(props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass) }, { children: jsx_runtime_1.jsx("ul", __assign({ className: tss_react_1.cx(props.kcFormSocialAccountListClass, social.providers.length > 4 && props.kcFormSocialAccountDoubleListClass) }, { children: social.providers.map(function (p) {
return jsx_runtime_1.jsx("li", __assign({ className: tss_react_1.cx(props.kcFormSocialAccountListLinkClass) }, { children: jsx_runtime_1.jsx("a", __assign({ href: p.loginUrl, id: "zocial-" + p.alias, className: tss_react_1.cx("zocial", p.providerId) }, { children: jsx_runtime_1.jsx("span", { children: p.displayName }, void 0) }), void 0) }), void 0);
}) }), void 0) }), void 0)] }), void 0), infoNode: (realm.password &&
realm.registrationAllowed &&
!registrationDisabled) &&
jsx_runtime_1.jsx("div", __assign({ id: "kc-registration" }, { children: jsx_runtime_1.jsxs("span", { children: [msg("noAccount"), jsx_runtime_1.jsx("a", __assign({ tabIndex: 6, href: url.registrationUrl }, { children: msg("doRegister") }), void 0)] }, void 0) }), void 0) }), void 0));
});
//# sourceMappingURL=Login.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/lib/components/Login.tsx"],"names":[],"mappings":"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"}

View File

@ -1,6 +0,0 @@
/// <reference types="react" />
import type { KcProps } from "./KcProps";
import type { KcContext } from "../KcContext";
export declare const LoginResetPassword: import("react").MemoExoticComponent<({ kcContext, ...props }: {
kcContext: KcContext.LoginResetPassword;
} & KcProps) => JSX.Element>;

View File

@ -1,46 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoginResetPassword = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Template_1 = require("./Template");
var useKcMessage_1 = require("../i18n/useKcMessage");
var tss_react_1 = require("tss-react");
exports.LoginResetPassword = react_1.memo(function (_a) {
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
var _b = useKcMessage_1.useKcMessage(), msg = _b.msg, msgStr = _b.msgStr;
var url = kcContext.url, realm = kcContext.realm, auth = kcContext.auth;
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { displayMessage: false, headerNode: msg("emailForgotTitle"), formNode: jsx_runtime_1.jsxs("form", __assign({ id: "kc-reset-password-form", className: tss_react_1.cx(props.kcFormClass), action: url.loginAction, method: "post" }, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "username", className: tss_react_1.cx(props.kcLabelClass) }, { children: !realm.loginWithEmailAllowed ?
msg("username")
:
!realm.registrationEmailAsUsername ?
msg("usernameOrEmail") :
msg("email") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "username", name: "username", className: tss_react_1.cx(props.kcInputClass), autoFocus: true, defaultValue: auth !== undefined && auth.showUsername ?
auth.attemptedUsername : undefined }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, props.kcFormSettingClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-options", className: tss_react_1.cx(props.kcFormOptionsClass) }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcFormOptionsWrapperClass) }, { children: jsx_runtime_1.jsx("span", { children: jsx_runtime_1.jsx("a", __assign({ href: url.loginUrl }, { children: msg("backToLogin") }), void 0) }, void 0) }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ id: "kc-form-buttons", className: tss_react_1.cx(props.kcFormButtonsClass) }, { children: jsx_runtime_1.jsx("input", { className: tss_react_1.cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.kcButtonLargeClass), type: "submit", defaultValue: msgStr("doSubmit") }, void 0) }), void 0)] }), void 0)] }), void 0), infoNode: msg("emailInstruction") }), void 0));
});
//# sourceMappingURL=LoginResetPassword.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"LoginResetPassword.js","sourceRoot":"","sources":["../../src/lib/components/LoginResetPassword.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+BAA6B;AAC7B,uCAAsC;AAGtC,qDAAoD;AACpD,uCAA+B;AAElB,QAAA,kBAAkB,GAAG,YAAI,CAAC,UAAC,EAA+E;IAA7E,IAAA,SAAS,eAAA,EAAK,KAAK,cAArB,aAAuB,CAAF;IAEnD,IAAA,KAAkB,2BAAY,EAAE,EAA9B,GAAG,SAAA,EAAE,MAAM,YAAmB,CAAC;IAGnC,IAAA,GAAG,GAGH,SAAS,IAHN,EACH,KAAK,GAEL,SAAS,MAFJ,EACL,IAAI,GACJ,SAAS,KADL,CACM;IAEd,OAAO,CACH,kBAAC,mBAAQ,0BACC,SAAS,WAAA,IAAK,KAAK,KACzB,cAAc,EAAE,KAAK,EACrB,UAAU,EAAE,GAAG,CAAC,kBAAkB,CAAC,EACnC,QAAQ,EACJ,sCAAM,EAAE,EAAC,wBAAwB,EAAC,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBACtG,qCAAK,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBACtC,oCAAK,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBACzC,sCAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,YAAY,CAAC,gBAEnD,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oCAC1B,GAAG,CAAC,UAAU,CAAC;oCACf,CAAC;wCACD,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;4CAChC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;4CACxB,GAAG,CAAC,OAAO,CAAC,YAEpB,YACN;wBACN,oCAAK,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBACzC,6BACI,IAAI,EAAC,MAAM,EACX,EAAE,EAAC,UAAU,EACb,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EACjC,SAAS,QACT,YAAY,EACR,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;oCACrC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,WAE5C,YACA,aACJ;gBACN,qCAAK,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,CAAC,iBAChE,oCAAK,EAAE,EAAC,iBAAiB,EAAC,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,gBAC7D,oCAAK,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,gBAC/C,sCACI,kCAAG,IAAI,EAAE,GAAG,CAAC,QAAQ,gBAAG,GAAG,CAAC,aAAa,CAAC,YAAK,WAC5C,YACL,YACJ;wBAEN,oCAAK,EAAE,EAAC,iBAAiB,EAAC,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,gBAC7D,6BACI,SAAS,EAAE,cAAE,CACT,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,oBAAoB,EAC/C,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CACrD,EACD,IAAI,EAAC,QAAQ,EACb,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,WAClC,YACA,aACJ,aACH,EAEX,QAAQ,EAAE,GAAG,CAAC,kBAAkB,CAAC,YACnC,CACL,CAAC;AACN,CAAC,CAAC,CAAC"}

View File

@ -1,6 +0,0 @@
/// <reference types="react" />
import type { KcProps } from "./KcProps";
import type { KcContext } from "../KcContext";
export declare const LoginVerifyEmail: import("react").MemoExoticComponent<({ kcContext, ...props }: {
kcContext: KcContext.LoginVerifyEmail;
} & KcProps) => JSX.Element>;

View File

@ -1,37 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoginVerifyEmail = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Template_1 = require("./Template");
var useKcMessage_1 = require("../i18n/useKcMessage");
exports.LoginVerifyEmail = react_1.memo(function (_a) {
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
var msg = useKcMessage_1.useKcMessage().msg;
var url = kcContext.url;
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { displayMessage: false, headerNode: msg("emailVerifyTitle"), formNode: jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsx("p", __assign({ className: "instruction" }, { children: msg("emailVerifyInstruction1") }), void 0),
jsx_runtime_1.jsxs("p", __assign({ className: "instruction" }, { children: [msg("emailVerifyInstruction2"), jsx_runtime_1.jsx("a", __assign({ href: url.loginAction }, { children: msg("doClickHere") }), void 0), msg("emailVerifyInstruction3")] }), void 0)] }, void 0) }), void 0));
});
//# sourceMappingURL=LoginVerifyEmail.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"LoginVerifyEmail.js","sourceRoot":"","sources":["../../src/lib/components/LoginVerifyEmail.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+BAA6B;AAC7B,uCAAsC;AAGtC,qDAAoD;AAEvC,QAAA,gBAAgB,GAAG,YAAI,CAAC,UAAC,EAA6E;IAA3E,IAAA,SAAS,eAAA,EAAK,KAAK,cAArB,aAAuB,CAAF;IAE/C,IAAA,GAAG,GAAK,2BAAY,EAAE,IAAnB,CAAoB;IAG3B,IAAA,GAAG,GACH,SAAS,IADN,CACO;IAEd,OAAO,CACH,kBAAC,mBAAQ,0BACC,SAAS,WAAA,IAAK,KAAK,KACzB,cAAc,EAAE,KAAK,EACrB,UAAU,EAAE,GAAG,CAAC,kBAAkB,CAAC,EACnC,QAAQ,EACJ,wDACI,kCAAG,SAAS,EAAC,aAAa,gBACrB,GAAG,CAAC,yBAAyB,CAAC,YAC/B;gBACJ,mCAAG,SAAS,EAAC,aAAa,iBACrB,GAAG,CAAC,yBAAyB,CAAC,EAC/B,kCAAG,IAAI,EAAE,GAAG,CAAC,WAAW,gBAAG,GAAG,CAAC,aAAa,CAAC,YAAK,EACjD,GAAG,CAAC,yBAAyB,CAAC,aAC/B,YACL,YAET,CACL,CAAC;AAEN,CAAC,CAAC,CAAC"}

View File

@ -1,6 +0,0 @@
/// <reference types="react" />
import type { KcProps } from "./KcProps";
import type { KcContext } from "../KcContext";
export declare const Register: import("react").MemoExoticComponent<({ kcContext, ...props }: {
kcContext: KcContext.Register;
} & KcProps) => JSX.Element>;

View File

@ -1,55 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Register = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Template_1 = require("./Template");
var useKcMessage_1 = require("../i18n/useKcMessage");
var tss_react_1 = require("tss-react");
exports.Register = react_1.memo(function (_a) {
var _b, _c, _d, _e;
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
var _f = useKcMessage_1.useKcMessage(), msg = _f.msg, msgStr = _f.msgStr;
var url = kcContext.url, messagesPerField = kcContext.messagesPerField, register = kcContext.register, realm = kcContext.realm, passwordRequired = kcContext.passwordRequired, recaptchaRequired = kcContext.recaptchaRequired, recaptchaSiteKey = kcContext.recaptchaSiteKey;
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { headerNode: msg("registerTitle"), formNode: jsx_runtime_1.jsxs("form", __assign({ id: "kc-register-form", className: tss_react_1.cx(props.kcFormClass), action: url.registrationAction, method: "post" }, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists('firstName', props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "firstName", className: tss_react_1.cx(props.kcLabelClass) }, { children: msg("firstName") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "firstName", className: tss_react_1.cx(props.kcInputClass), name: "firstName", defaultValue: (_b = register.formData.firstName) !== null && _b !== void 0 ? _b : "" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists("lastName", props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "lastName", className: tss_react_1.cx(props.kcLabelClass) }, { children: msg("lastName") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "lastName", className: tss_react_1.cx(props.kcInputClass), name: "lastName", defaultValue: (_c = register.formData.lastName) !== null && _c !== void 0 ? _c : "" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists('email', props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "email", className: tss_react_1.cx(props.kcLabelClass) }, { children: msg("email") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "email", className: tss_react_1.cx(props.kcInputClass), name: "email", defaultValue: (_d = register.formData.email) !== null && _d !== void 0 ? _d : "", autoComplete: "email" }, void 0) }), void 0)] }), void 0),
!realm.registrationEmailAsUsername &&
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists('username', props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "username", className: tss_react_1.cx(props.kcLabelClass) }, { children: msg("username") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "username", className: tss_react_1.cx(props.kcInputClass), name: "username", defaultValue: (_e = register.formData.username) !== null && _e !== void 0 ? _e : "", autoComplete: "username" }, void 0) }), void 0)] }), void 0),
passwordRequired &&
jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists("password", props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "password", className: tss_react_1.cx(props.kcLabelClass) }, { children: msg("password") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "password", id: "password", className: tss_react_1.cx(props.kcInputClass), name: "password", autoComplete: "new-password" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists("password-confirm", props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "password-confirm", className: tss_react_1.cx(props.kcLabelClass) }, { children: msg("passwordConfirm") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "password", id: "password-confirm", className: tss_react_1.cx(props.kcInputClass), name: "password-confirm" }, void 0) }), void 0)] }), void 0)] }, void 0),
recaptchaRequired &&
jsx_runtime_1.jsx("div", __assign({ className: "form-group" }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("div", { className: "g-recaptcha", "data-size": "compact", "data-sitekey": recaptchaSiteKey }, void 0) }), void 0) }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-options", className: tss_react_1.cx(props.kcFormOptionsClass) }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcFormOptionsWrapperClass) }, { children: jsx_runtime_1.jsx("span", { children: jsx_runtime_1.jsx("a", __assign({ href: url.loginUrl }, { children: msg("backToLogin") }), void 0) }, void 0) }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ id: "kc-form-buttons", className: tss_react_1.cx(props.kcFormButtonsClass) }, { children: jsx_runtime_1.jsx("input", { className: tss_react_1.cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.kcButtonLargeClass), type: "submit", defaultValue: msgStr("doRegister") }, void 0) }), void 0)] }), void 0)] }), void 0) }), void 0));
});
//# sourceMappingURL=Register.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"Register.js","sourceRoot":"","sources":["../../src/lib/components/Register.tsx"],"names":[],"mappings":"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"}

View File

@ -1,17 +0,0 @@
import type { ReactNode } from "react";
import type { KcContext } from "../KcContext";
import type { KcTemplateProps } from "./KcProps";
export declare type TemplateProps = {
displayInfo?: boolean;
displayMessage?: boolean;
displayRequiredFields?: boolean;
displayWide?: boolean;
showAnotherWayIfPresent?: boolean;
headerNode: ReactNode;
showUsernameNode?: ReactNode;
formNode: ReactNode;
infoNode?: ReactNode;
} & {
kcContext: KcContext.Template;
} & KcTemplateProps;
export declare const Template: import("react").MemoExoticComponent<(props: TemplateProps) => JSX.Element | null>;

View File

@ -1,140 +0,0 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Template = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var useKcMessage_1 = require("../i18n/useKcMessage");
var useKcLanguageTag_1 = require("../i18n/useKcLanguageTag");
var assert_1 = require("../tools/assert");
var tss_react_1 = require("tss-react");
var KcLanguageTag_1 = require("../i18n/KcLanguageTag");
var KcLanguageTag_2 = require("../i18n/KcLanguageTag");
var powerhooks_1 = require("powerhooks");
var appendHead_1 = require("../tools/appendHead");
var path_1 = require("path");
var powerhooks_2 = require("powerhooks");
exports.Template = react_1.memo(function (props) {
var _a = props.displayInfo, displayInfo = _a === void 0 ? false : _a, _b = props.displayMessage, displayMessage = _b === void 0 ? true : _b, _c = props.displayRequiredFields, displayRequiredFields = _c === void 0 ? false : _c, _d = props.displayWide, displayWide = _d === void 0 ? false : _d, _e = props.showAnotherWayIfPresent, showAnotherWayIfPresent = _e === void 0 ? true : _e, headerNode = props.headerNode, _f = props.showUsernameNode, showUsernameNode = _f === void 0 ? null : _f, formNode = props.formNode, _g = props.infoNode, infoNode = _g === void 0 ? null : _g, kcContext = props.kcContext;
react_1.useEffect(function () { console.log("Rendering this page with react using keycloakify"); }, []);
var msg = useKcMessage_1.useKcMessage().msg;
var _h = useKcLanguageTag_1.useKcLanguageTag(), kcLanguageTag = _h.kcLanguageTag, setKcLanguageTag = _h.setKcLanguageTag;
var onChangeLanguageClickFactory = powerhooks_1.useCallbackFactory(function (_a) {
var _b = __read(_a, 1), languageTag = _b[0];
return setKcLanguageTag(languageTag);
});
var onTryAnotherWayClick = powerhooks_2.useConstCallback(function () {
return (document.forms["kc-select-try-another-way-form"].submit(), false);
});
var realm = kcContext.realm, locale = kcContext.locale, auth = kcContext.auth, url = kcContext.url, message = kcContext.message, isAppInitiatedAction = kcContext.isAppInitiatedAction;
react_1.useEffect(function () {
if (!realm.internationalizationEnabled) {
return;
}
assert_1.assert(locale !== undefined);
if (kcLanguageTag === KcLanguageTag_1.getBestMatchAmongKcLanguageTag(locale.current)) {
return;
}
window.location.href =
locale.supported.find(function (_a) {
var languageTag = _a.languageTag;
return languageTag === kcLanguageTag;
}).url;
}, [kcLanguageTag]);
var _j = __read(react_1.useReducer(function () { return true; }, false), 2), isExtraCssLoaded = _j[0], setExtraCssLoaded = _j[1];
react_1.useEffect(function () {
var isUnmounted = false;
var toArr = function (x) {
return typeof x === "string" ? x.split(" ") : x !== null && x !== void 0 ? x : [];
};
Promise.all(__spreadArray(__spreadArray([], __read(toArr(props.stylesCommon).map(function (relativePath) { return path_1.join(url.resourcesCommonPath, relativePath); }))), __read(toArr(props.styles).map(function (relativePath) { return path_1.join(url.resourcesPath, relativePath); }))).map(function (href) { return appendHead_1.appendHead({
"type": "css",
href: href
}); })).then(function () {
if (isUnmounted) {
return;
}
setExtraCssLoaded();
});
toArr(props.scripts).forEach(function (relativePath) { return appendHead_1.appendHead({
"type": "javascript",
"src": path_1.join(url.resourcesPath, relativePath)
}); });
document.getElementsByTagName("html")[0]
.classList
.add(tss_react_1.cx(props.kcHtmlClass));
return function () { isUnmounted = true; };
}, []);
if (!isExtraCssLoaded) {
return null;
}
return (jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcLoginClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-header", className: tss_react_1.cx(props.kcHeaderClass) }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-header-wrapper", className: tss_react_1.cx(props.kcHeaderWrapperClass) }, { children: msg("loginTitleHtml", realm.displayNameHtml) }), void 0) }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormCardClass, displayWide && props.kcFormCardAccountClass) }, { children: [jsx_runtime_1.jsxs("header", __assign({ className: tss_react_1.cx(props.kcFormHeaderClass) }, { children: [(realm.internationalizationEnabled &&
(assert_1.assert(locale !== undefined), true) &&
locale.supported.length > 1) &&
jsx_runtime_1.jsx("div", __assign({ id: "kc-locale" }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-locale-wrapper", className: tss_react_1.cx(props.kcLocaleWrapperClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-dropdown", id: "kc-locale-dropdown" }, { children: [jsx_runtime_1.jsx("a", __assign({ href: "#", id: "kc-current-locale-link" }, { children: KcLanguageTag_2.getKcLanguageTagLabel(kcLanguageTag) }), void 0),
jsx_runtime_1.jsx("ul", { children: locale.supported.map(function (_a) {
var languageTag = _a.languageTag;
return jsx_runtime_1.jsx("li", __assign({ className: "kc-dropdown-item" }, { children: jsx_runtime_1.jsx("a", __assign({ href: "#", onClick: onChangeLanguageClickFactory(languageTag) }, { children: KcLanguageTag_2.getKcLanguageTagLabel(languageTag) }), void 0) }), languageTag);
}) }, void 0)] }), void 0) }), void 0) }), void 0),
!(auth !== undefined &&
auth.showUsername &&
!auth.showResetCredentials) ?
(displayRequiredFields ?
(jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass, "subtitle") }, { children: jsx_runtime_1.jsxs("span", __assign({ className: "subtitle" }, { children: [jsx_runtime_1.jsx("span", __assign({ className: "required" }, { children: "*" }), void 0), msg("requiredFields")] }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: "col-md-10" }, { children: jsx_runtime_1.jsx("h1", __assign({ id: "kc-page-title" }, { children: headerNode }), void 0) }), void 0)] }), void 0))
:
(jsx_runtime_1.jsx("h1", __assign({ id: "kc-page-title" }, { children: headerNode }), void 0))) : (displayRequiredFields ? (jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass, "subtitle") }, { children: jsx_runtime_1.jsxs("span", __assign({ className: "subtitle" }, { children: [jsx_runtime_1.jsx("span", __assign({ className: "required" }, { children: "*" }), void 0), " ", msg("requiredFields")] }), void 0) }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: "col-md-10" }, { children: [showUsernameNode, jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-username" }, { children: [jsx_runtime_1.jsx("label", __assign({ id: "kc-attempted-username" }, { children: auth === null || auth === void 0 ? void 0 : auth.attemptedUsername }), void 0),
jsx_runtime_1.jsx("a", __assign({ id: "reset-login", href: url.loginRestartFlowUrl }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-login-tooltip" }, { children: [jsx_runtime_1.jsx("i", { className: tss_react_1.cx(props.kcResetFlowIcon) }, void 0),
jsx_runtime_1.jsx("span", __assign({ className: "kc-tooltip-text" }, { children: msg("restartLoginTooltip") }), void 0)] }), void 0) }), void 0)] }), void 0) }), void 0)] }), void 0)] }), void 0)) : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showUsernameNode, jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-username" }, { children: [jsx_runtime_1.jsx("label", __assign({ id: "kc-attempted-username" }, { children: auth === null || auth === void 0 ? void 0 : auth.attemptedUsername }), void 0),
jsx_runtime_1.jsx("a", __assign({ id: "reset-login", href: url.loginRestartFlowUrl }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-login-tooltip" }, { children: [jsx_runtime_1.jsx("i", { className: tss_react_1.cx(props.kcResetFlowIcon) }, void 0),
jsx_runtime_1.jsx("span", __assign({ className: "kc-tooltip-text" }, { children: msg("restartLoginTooltip") }), void 0)] }), void 0) }), void 0)] }), void 0) }), void 0)] }, void 0)))] }), void 0),
jsx_runtime_1.jsx("div", __assign({ id: "kc-content" }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-content-wrapper" }, { children: [(displayMessage &&
message !== undefined &&
(message.type !== "warning" ||
!isAppInitiatedAction)) &&
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx("alert", "alert-" + message.type) }, { children: [message.type === "success" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(props.kcFeedbackSuccessIcon) }, void 0),
message.type === "warning" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(props.kcFeedbackWarningIcon) }, void 0),
message.type === "error" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(props.kcFeedbackErrorIcon) }, void 0),
message.type === "info" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(props.kcFeedbackInfoIcon) }, void 0),
jsx_runtime_1.jsx("span", __assign({ className: "kc-feedback-text" }, { children: message.summary }), void 0)] }), void 0), formNode, (auth !== undefined &&
auth.showTryAnotherWayLink &&
showAnotherWayIfPresent) &&
jsx_runtime_1.jsx("form", __assign({ id: "kc-select-try-another-way-form", action: url.loginAction, method: "post", className: tss_react_1.cx(displayWide && props.kcContentWrapperClass) }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(displayWide && [props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass]) }, { children: jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("input", { type: "hidden", name: "tryAnotherWay", value: "on" }, void 0),
jsx_runtime_1.jsx("a", __assign({ href: "#", id: "try-another-way", onClick: onTryAnotherWayClick }, { children: msg("doTryAnotherWay") }), void 0)] }), void 0) }), void 0) }), void 0),
displayInfo &&
jsx_runtime_1.jsx("div", __assign({ id: "kc-info", className: tss_react_1.cx(props.kcSignUpClass) }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-info-wrapper", className: tss_react_1.cx(props.kcInfoAreaWrapperClass) }, { children: infoNode }), void 0) }), void 0)] }), void 0) }), void 0)] }), void 0)] }), void 0));
});
//# sourceMappingURL=Template.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,11 +0,0 @@
import { messages } from "./generated_messages/login";
export declare type KcLanguageTag = keyof typeof messages;
export declare type LanguageLabel = "Deutsch" | "Norsk" | "Русский" | "Svenska" | "Português (Brasil)" | "Lietuvių" | "English" | "Italiano" | "Français" | "中文简体" | "Español" | "Čeština" | "日本語" | "Slovenčina" | "Polski" | "Català" | "Nederlands" | "Türkçe";
export declare function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel;
/**
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
* it corresponds to: "fr".
* If there is no reasonable match it's guessed from navigator.language.
* If still no matches "en" is returned.
*/
export declare function getBestMatchAmongKcLanguageTag(languageLike: string): KcLanguageTag;

View File

@ -1,55 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBestMatchAmongKcLanguageTag = exports.getKcLanguageTagLabel = void 0;
var objectKeys_1 = require("evt/tools/typeSafety/objectKeys");
var login_1 = require("./generated_messages/login");
/* spell-checker: enable */
function getKcLanguageTagLabel(language) {
switch (language) {
/* spell-checker: disable */
case "es": return "Español";
case "it": return "Italiano";
case "fr": return "Français";
case "ca": return "Català";
case "en": return "English";
case "de": return "Deutsch";
case "no": return "Norsk";
case "pt-BR": return "Português (Brasil)";
case "ru": return "Русский";
case "sk": return "Slovenčina";
case "ja": return "日本語";
case "pl": return "Polski";
case "zh-CN": return "中文简体";
case "sv": return "Svenska";
case "lt": return "Lietuvių";
case "cs": return "Čeština";
case "nl": return "Nederlands";
case "tr": return "Türkçe";
/* spell-checker: enable */
}
return language;
}
exports.getKcLanguageTagLabel = getKcLanguageTagLabel;
var availableLanguages = objectKeys_1.objectKeys(login_1.messages);
/**
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
* it corresponds to: "fr".
* If there is no reasonable match it's guessed from navigator.language.
* If still no matches "en" is returned.
*/
function getBestMatchAmongKcLanguageTag(languageLike) {
var iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
var kcLanguageTag = availableLanguages.find(function (language) {
return language.toLowerCase().includes(iso2LanguageLike) ||
getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase();
});
if (kcLanguageTag !== undefined) {
return kcLanguageTag;
}
if (languageLike !== navigator.language) {
return getBestMatchAmongKcLanguageTag(navigator.language);
}
return "en";
}
exports.getBestMatchAmongKcLanguageTag = getBestMatchAmongKcLanguageTag;
//# sourceMappingURL=KcLanguageTag.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"KcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/KcLanguageTag.ts"],"names":[],"mappings":";;;AACA,8DAA6D;AAC7D,oDAAsD;AAStD,2BAA2B;AAE3B,SAAgB,qBAAqB,CAAC,QAAuB;IAEzD,QAAQ,QAAQ,EAAE;QACd,4BAA4B;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,OAAO,CAAC;QAC1B,KAAK,OAAO,CAAC,CAAC,OAAO,oBAAoB,CAAC;QAC1C,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,KAAK,OAAO,CAAC,CAAC,OAAO,MAAM,CAAA;QAC3B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,2BAA2B;KAC9B;IAED,OAAO,QAAQ,CAAC;AAEpB,CAAC;AA3BD,sDA2BC;AAED,IAAM,kBAAkB,GAAG,uBAAU,CAAC,gBAAQ,CAAC,CAAC;AAEhD;;;;;EAKE;AACF,SAAgB,8BAA8B,CAC1C,YAAoB;IAGpB,IAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAElE,IAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAA,QAAQ;QAClD,OAAA,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjD,qBAAqB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,KAAK,YAAY,CAAC,iBAAiB,EAAE;IADxF,CACwF,CAC3F,CAAC;IAEF,IAAI,aAAa,KAAK,SAAS,EAAE;QAC7B,OAAO,aAAa,CAAC;KACxB;IAED,IAAI,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE;QACrC,OAAO,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC7D;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AApBD,wEAoBC"}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,239 +0,0 @@
export declare const messages: {
readonly ca: {
readonly invalidPasswordHistoryMessage: "Contrasenya incorrecta: no pot ser igual a cap de les últimes {0} contrasenyes.";
readonly invalidPasswordMinDigitsMessage: "Contraseña incorrecta: debe contener al menos {0} caracteres numéricos.";
readonly invalidPasswordMinLengthMessage: "Contrasenya incorrecta: longitud mínima {0}.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Contrasenya incorrecta: ha de contenir almenys {0} lletres minúscules.";
readonly invalidPasswordMinSpecialCharsMessage: "Contrasenya incorrecta: ha de contenir almenys {0} caràcters especials.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Contrasenya incorrecta: ha de contenir almenys {0} lletres majúscules.";
readonly invalidPasswordNotUsernameMessage: "Contrasenya incorrecta: no pot ser igual al nom d'usuari.";
readonly invalidPasswordRegexPatternMessage: "Contrasenya incorrecta: no compleix l'expressió regular.";
};
readonly de: {
readonly invalidPasswordMinLengthMessage: "Ungültiges Passwort: muss mindestens {0} Zeichen beinhalten.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Ungültiges Passwort: muss mindestens {0} Kleinbuchstaben beinhalten.";
readonly invalidPasswordMinDigitsMessage: "Ungültiges Passwort: muss mindestens {0} Ziffern beinhalten.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Ungültiges Passwort: muss mindestens {0} Großbuchstaben beinhalten.";
readonly invalidPasswordMinSpecialCharsMessage: "Ungültiges Passwort: muss mindestens {0} Sonderzeichen beinhalten.";
readonly invalidPasswordNotUsernameMessage: "Ungültiges Passwort: darf nicht identisch mit dem Benutzernamen sein.";
readonly invalidPasswordRegexPatternMessage: "Ungültiges Passwort: stimmt nicht mit Regex-Muster überein.";
readonly invalidPasswordHistoryMessage: "Ungültiges Passwort: darf nicht identisch mit einem der letzten {0} Passwörter sein.";
readonly invalidPasswordBlacklistedMessage: "Ungültiges Passwort: Passwort ist zu bekannt und auf der schwarzen Liste.";
readonly invalidPasswordGenericMessage: "Ungültiges Passwort: neues Passwort erfüllt die Passwort-Anforderungen nicht.";
};
readonly en: {
readonly invalidPasswordMinLengthMessage: "Invalid password: minimum length {0}.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Invalid password: must contain at least {0} lower case characters.";
readonly invalidPasswordMinDigitsMessage: "Invalid password: must contain at least {0} numerical digits.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Invalid password: must contain at least {0} upper case characters.";
readonly invalidPasswordMinSpecialCharsMessage: "Invalid password: must contain at least {0} special characters.";
readonly invalidPasswordNotUsernameMessage: "Invalid password: must not be equal to the username.";
readonly invalidPasswordRegexPatternMessage: "Invalid password: fails to match regex pattern(s).";
readonly invalidPasswordHistoryMessage: "Invalid password: must not be equal to any of last {0} passwords.";
readonly invalidPasswordBlacklistedMessage: "Invalid password: password is blacklisted.";
readonly invalidPasswordGenericMessage: "Invalid password: new password does not match password policies.";
readonly ldapErrorInvalidCustomFilter: "Custom configured LDAP filter does not start with \"(\" or does not end with \")\".";
readonly ldapErrorConnectionTimeoutNotNumber: "Connection Timeout must be a number";
readonly ldapErrorReadTimeoutNotNumber: "Read Timeout must be a number";
readonly ldapErrorMissingClientId: "Client ID needs to be provided in config when Realm Roles Mapping is not used.";
readonly ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType: "Not possible to preserve group inheritance and use UID membership type together.";
readonly ldapErrorCantWriteOnlyForReadOnlyLdap: "Can not set write only when LDAP provider mode is not WRITABLE";
readonly ldapErrorCantWriteOnlyAndReadOnly: "Can not set write-only and read-only together";
readonly ldapErrorCantEnableStartTlsAndConnectionPooling: "Can not enable both StartTLS and connection pooling.";
readonly ldapErrorCantEnableUnsyncedAndImportOff: "Can not disable Importing users when LDAP provider mode is UNSYNCED";
readonly ldapErrorMissingGroupsPathGroup: "Groups path group does not exist - please create the group on specified path first";
readonly clientRedirectURIsFragmentError: "Redirect URIs must not contain an URI fragment";
readonly clientRootURLFragmentError: "Root URL must not contain an URL fragment";
readonly clientRootURLIllegalSchemeError: "Root URL uses an illegal scheme";
readonly clientBaseURLIllegalSchemeError: "Base URL uses an illegal scheme";
readonly clientRedirectURIsIllegalSchemeError: "A redirect URI uses an illegal scheme";
readonly clientBaseURLInvalid: "Base URL is not a valid URL";
readonly clientRootURLInvalid: "Root URL is not a valid URL";
readonly clientRedirectURIsInvalid: "A redirect URI is not a valid URI";
readonly pairwiseMalformedClientRedirectURI: "Client contained an invalid redirect URI.";
readonly pairwiseClientRedirectURIsMissingHost: "Client redirect URIs must contain a valid host component.";
readonly pairwiseClientRedirectURIsMultipleHosts: "Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.";
readonly pairwiseMalformedSectorIdentifierURI: "Malformed Sector Identifier URI.";
readonly pairwiseFailedToGetRedirectURIs: "Failed to get redirect URIs from the Sector Identifier URI.";
readonly pairwiseRedirectURIsMismatch: "Client redirect URIs does not match redirect URIs fetched from the Sector Identifier URI.";
};
readonly es: {
readonly invalidPasswordMinLengthMessage: "Contraseña incorrecta: longitud mínima {0}.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Contraseña incorrecta: debe contener al menos {0} letras minúsculas.";
readonly invalidPasswordMinDigitsMessage: "Contraseña incorrecta: debe contener al menos {0} caracteres numéricos.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Contraseña incorrecta: debe contener al menos {0} letras mayúsculas.";
readonly invalidPasswordMinSpecialCharsMessage: "Contraseña incorrecta: debe contener al menos {0} caracteres especiales.";
readonly invalidPasswordNotUsernameMessage: "Contraseña incorrecta: no puede ser igual al nombre de usuario.";
readonly invalidPasswordRegexPatternMessage: "Contraseña incorrecta: no cumple la expresión regular.";
readonly invalidPasswordHistoryMessage: "Contraseña incorrecta: no puede ser igual a ninguna de las últimas {0} contraseñas.";
};
readonly fr: {
readonly invalidPasswordMinLengthMessage: "Mot de passe invalide : longueur minimale requise de {0}.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Mot de passe invalide : doit contenir au moins {0} lettre(s) en minuscule.";
readonly invalidPasswordMinDigitsMessage: "Mot de passe invalide : doit contenir au moins {0} chiffre(s).";
readonly invalidPasswordMinUpperCaseCharsMessage: "Mot de passe invalide : doit contenir au moins {0} lettre(s) en majuscule.";
readonly invalidPasswordMinSpecialCharsMessage: "Mot de passe invalide : doit contenir au moins {0} caractère(s) spéciaux.";
readonly invalidPasswordNotUsernameMessage: "Mot de passe invalide : ne doit pas être identique au nom d'utilisateur.";
readonly invalidPasswordRegexPatternMessage: "Mot de passe invalide : ne valide pas l'expression rationnelle.";
readonly invalidPasswordHistoryMessage: "Mot de passe invalide : ne doit pas être égal aux {0} derniers mot de passe.";
};
readonly it: {};
readonly ja: {
readonly invalidPasswordMinLengthMessage: "無効なパスワード: 最小{0}の長さが必要です。";
readonly invalidPasswordMinLowerCaseCharsMessage: "無効なパスワード: 少なくとも{0}文字の小文字を含む必要があります。";
readonly invalidPasswordMinDigitsMessage: "無効なパスワード: 少なくとも{0}文字の数字を含む必要があります。";
readonly invalidPasswordMinUpperCaseCharsMessage: "無効なパスワード: 少なくとも{0}文字の大文字を含む必要があります。";
readonly invalidPasswordMinSpecialCharsMessage: "無効なパスワード: 少なくとも{0}文字の特殊文字を含む必要があります。";
readonly invalidPasswordNotUsernameMessage: "無効なパスワード: ユーザー名と同じパスワードは禁止されています。";
readonly invalidPasswordRegexPatternMessage: "無効なパスワード: 正規表現パターンと一致しません。";
readonly invalidPasswordHistoryMessage: "無効なパスワード: 最近の{0}パスワードのいずれかと同じパスワードは禁止されています。";
readonly invalidPasswordBlacklistedMessage: "無効なパスワード: パスワードがブラックリストに含まれています。";
readonly invalidPasswordGenericMessage: "無効なパスワード: 新しいパスワードはパスワード・ポリシーと一致しません。";
readonly ldapErrorInvalidCustomFilter: "LDAPフィルターのカスタム設定が、「(」から開始または「)」で終了となっていません。";
readonly ldapErrorConnectionTimeoutNotNumber: "接続タイムアウトは数字でなければなりません";
readonly ldapErrorReadTimeoutNotNumber: "読み取りタイムアウトは数字でなければなりません";
readonly ldapErrorMissingClientId: "レルムロール・マッピングを使用しない場合は、クライアントIDは設定内で提供される必要があります。";
readonly ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType: "グループの継承を維持することと、UIDメンバーシップ・タイプを使用することは同時にできません。";
readonly ldapErrorCantWriteOnlyForReadOnlyLdap: "LDAPプロバイダー・モードがWRITABLEではない場合は、write onlyを設定することはできません。";
readonly ldapErrorCantWriteOnlyAndReadOnly: "write-onlyとread-onlyを一緒に設定することはできません。";
readonly ldapErrorCantEnableStartTlsAndConnectionPooling: "StartTLSと接続プーリングの両方を有効にできません。";
readonly clientRedirectURIsFragmentError: "リダイレクトURIにURIフラグメントを含めることはできません。";
readonly clientRootURLFragmentError: "ルートURLにURLフラグメントを含めることはできません。";
readonly pairwiseMalformedClientRedirectURI: "クライアントに無効なリダイレクトURIが含まれていました。";
readonly pairwiseClientRedirectURIsMissingHost: "クライアントのリダイレクトURIには有効なホスト・コンポーネントが含まれている必要があります。";
readonly pairwiseClientRedirectURIsMultipleHosts: "設定されたセレクター識別子URIがない場合は、クライアントのリダイレクトURIは複数のホスト・コンポーネントを含むことはできません。";
readonly pairwiseMalformedSectorIdentifierURI: "不正なセレクター識別子URIです。";
readonly pairwiseFailedToGetRedirectURIs: "セクター識別子URIからリダイレクトURIを取得できませんでした。";
readonly pairwiseRedirectURIsMismatch: "クライアントのリダイレクトURIは、セクター識別子URIからフェッチされたリダイレクトURIと一致しません。";
};
readonly lt: {
readonly invalidPasswordMinLengthMessage: "Per trumpas slaptažodis: mažiausias ilgis {0}.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Neteisingas slaptažodis: privaloma įvesti {0} mažąją raidę.";
readonly invalidPasswordMinDigitsMessage: "Neteisingas slaptažodis: privaloma įvesti {0} skaitmenį.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Neteisingas slaptažodis: privaloma įvesti {0} didžiąją raidę.";
readonly invalidPasswordMinSpecialCharsMessage: "Neteisingas slaptažodis: privaloma įvesti {0} specialų simbolį.";
readonly invalidPasswordNotUsernameMessage: "Neteisingas slaptažodis: slaptažodis negali sutapti su naudotojo vardu.";
readonly invalidPasswordRegexPatternMessage: "Neteisingas slaptažodis: slaptažodis netenkina regex taisyklės(ių).";
readonly invalidPasswordHistoryMessage: "Neteisingas slaptažodis: slaptažodis negali sutapti su prieš tai buvusiais {0} slaptažodžiais.";
readonly ldapErrorInvalidCustomFilter: "Sukonfigūruotas LDAP filtras neprasideda \"(\" ir nesibaigia \")\" simboliais.";
readonly ldapErrorMissingClientId: "Privaloma nurodyti kliento ID kai srities rolių susiejimas nėra nenaudojamas.";
readonly ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType: "Grupių paveldėjimo ir UID narystės tipas kartu negali būti naudojami.";
readonly ldapErrorCantWriteOnlyForReadOnlyLdap: "Negalima nustatyti rašymo rėžimo kuomet LDAP teikėjo rėžimas ne WRITABLE";
readonly ldapErrorCantWriteOnlyAndReadOnly: "Negalima nustatyti tik rašyti ir tik skaityti kartu";
readonly clientRedirectURIsFragmentError: "Nurodykite URI fragmentą, kurio negali būti peradresuojamuose URI adresuose";
readonly clientRootURLFragmentError: "Nurodykite URL fragmentą, kurio negali būti šakniniame URL adrese";
readonly pairwiseMalformedClientRedirectURI: "Klientas pateikė neteisingą nukreipimo nuorodą.";
readonly pairwiseClientRedirectURIsMissingHost: "Kliento nukreipimo nuorodos privalo būti nurodytos su serverio vardo komponentu.";
readonly pairwiseClientRedirectURIsMultipleHosts: "Kuomet nesukonfigūruotas sektoriaus identifikatoriaus URL, kliento nukreipimo nuorodos privalo talpinti ne daugiau kaip vieną skirtingą serverio vardo komponentą.";
readonly pairwiseMalformedSectorIdentifierURI: "Neteisinga sektoriaus identifikatoriaus URI.";
readonly pairwiseFailedToGetRedirectURIs: "Nepavyko gauti nukreipimo nuorodų iš sektoriaus identifikatoriaus URI.";
readonly pairwiseRedirectURIsMismatch: "Kliento nukreipimo nuoroda neatitinka nukreipimo nuorodų iš sektoriaus identifikatoriaus URI.";
};
readonly nl: {
readonly invalidPasswordMinLengthMessage: "Ongeldig wachtwoord: de minimale lengte is {0} karakters.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Ongeldig wachtwoord: het moet minstens {0} kleine letters bevatten.";
readonly invalidPasswordMinDigitsMessage: "Ongeldig wachtwoord: het moet minstens {0} getallen bevatten.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Ongeldig wachtwoord: het moet minstens {0} hoofdletters bevatten.";
readonly invalidPasswordMinSpecialCharsMessage: "Ongeldig wachtwoord: het moet minstens {0} speciale karakters bevatten.";
readonly invalidPasswordNotUsernameMessage: "Ongeldig wachtwoord: het mag niet overeenkomen met de gebruikersnaam.";
readonly invalidPasswordRegexPatternMessage: "Ongeldig wachtwoord: het voldoet niet aan het door de beheerder ingestelde patroon.";
readonly invalidPasswordHistoryMessage: "Ongeldig wachtwoord: het mag niet overeen komen met een van de laatste {0} wachtwoorden.";
readonly invalidPasswordGenericMessage: "Ongeldig wachtwoord: het nieuwe wachtwoord voldoet niet aan het wachtwoordbeleid.";
readonly ldapErrorInvalidCustomFilter: "LDAP filter met aangepaste configuratie start niet met \"(\" of eindigt niet met \")\".";
readonly ldapErrorConnectionTimeoutNotNumber: "Verbindingstimeout moet een getal zijn";
readonly ldapErrorReadTimeoutNotNumber: "Lees-timeout moet een getal zijn";
readonly ldapErrorMissingClientId: "Client ID moet ingesteld zijn als Realm Roles Mapping niet gebruikt wordt.";
readonly ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType: "Kan groepsovererving niet behouden bij UID-lidmaatschapstype.";
readonly ldapErrorCantWriteOnlyForReadOnlyLdap: "Alleen-schrijven niet mogelijk als LDAP provider mode niet WRITABLE is";
readonly ldapErrorCantWriteOnlyAndReadOnly: "Alleen-schrijven en alleen-lezen mogen niet tegelijk ingesteld zijn";
readonly clientRedirectURIsFragmentError: "Redirect URIs mogen geen URI fragment bevatten";
readonly clientRootURLFragmentError: "Root URL mag geen URL fragment bevatten";
readonly pairwiseMalformedClientRedirectURI: "Client heeft een ongeldige redirect URI.";
readonly pairwiseClientRedirectURIsMissingHost: "Client redirect URIs moeten een geldige host-component bevatten.";
readonly pairwiseClientRedirectURIsMultipleHosts: "Zonder een geconfigureerde Sector Identifier URI mogen client redirect URIs niet meerdere host componenten hebben.";
readonly pairwiseMalformedSectorIdentifierURI: "Onjuist notatie in Sector Identifier URI.";
readonly pairwiseFailedToGetRedirectURIs: "Kon geen redirect URIs verkrijgen van de Sector Identifier URI.";
readonly pairwiseRedirectURIsMismatch: "Client redirect URIs komen niet overeen met redict URIs ontvangen van de Sector Identifier URI.";
};
readonly no: {
readonly invalidPasswordMinLengthMessage: "Ugyldig passord: minimum lengde {0}.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Ugyldig passord: må inneholde minst {0} små bokstaver.";
readonly invalidPasswordMinDigitsMessage: "Ugyldig passord: må inneholde minst {0} sifre.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Ugyldig passord: må inneholde minst {0} store bokstaver.";
readonly invalidPasswordMinSpecialCharsMessage: "Ugyldig passord: må inneholde minst {0} spesialtegn.";
readonly invalidPasswordNotUsernameMessage: "Ugyldig passord: kan ikke være likt brukernavn.";
readonly invalidPasswordRegexPatternMessage: "Ugyldig passord: tilfredsstiller ikke kravene for passord-mønster.";
readonly invalidPasswordHistoryMessage: "Ugyldig passord: kan ikke være likt noen av de {0} foregående passordene.";
readonly ldapErrorInvalidCustomFilter: "Tilpasset konfigurasjon av LDAP-filter starter ikke med \"(\" eller slutter ikke med \")\".";
readonly ldapErrorMissingClientId: "KlientID må være tilgjengelig i config når sikkerhetsdomenerollemapping ikke brukes.";
readonly ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType: "Ikke mulig å bevare gruppearv og samtidig bruke UID medlemskapstype.";
readonly ldapErrorCantWriteOnlyForReadOnlyLdap: "Kan ikke sette write-only når LDAP leverandør-modus ikke er WRITABLE";
readonly ldapErrorCantWriteOnlyAndReadOnly: "Kan ikke sette både write-only og read-only";
};
readonly pl: {};
readonly "pt-BR": {
readonly invalidPasswordMinLengthMessage: "Senha inválida: deve conter ao menos {0} caracteres.";
readonly invalidPasswordMinLowerCaseCharsMessage: "Senha inválida: deve conter ao menos {0} caracteres minúsculos.";
readonly invalidPasswordMinDigitsMessage: "Senha inválida: deve conter ao menos {0} digitos numéricos.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Senha inválida: deve conter ao menos {0} caracteres maiúsculos.";
readonly invalidPasswordMinSpecialCharsMessage: "Senha inválida: deve conter ao menos {0} caracteres especiais.";
readonly invalidPasswordNotUsernameMessage: "Senha inválida: não deve ser igual ao nome de usuário.";
readonly invalidPasswordRegexPatternMessage: "Senha inválida: falha ao passar por padrões.";
readonly invalidPasswordHistoryMessage: "Senha inválida: não deve ser igual às últimas {0} senhas.";
readonly ldapErrorInvalidCustomFilter: "Filtro LDAP não inicia com \"(\" ou não termina com \")\".";
readonly ldapErrorMissingClientId: "ID do cliente precisa ser definido na configuração quando mapeamentos de Roles do Realm não é utilizado.";
readonly ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType: "Não é possível preservar herança de grupos e usar tipo de associação de UID ao mesmo tempo.";
readonly ldapErrorCantWriteOnlyForReadOnlyLdap: "Não é possível definir modo de somente escrita quando o provedor LDAP não suporta escrita";
readonly ldapErrorCantWriteOnlyAndReadOnly: "Não é possível definir somente escrita e somente leitura ao mesmo tempo";
readonly clientRedirectURIsFragmentError: "URIs de redirecionamento não podem conter fragmentos";
readonly clientRootURLFragmentError: "URL raiz não pode conter fragmentos";
};
readonly ru: {
readonly invalidPasswordMinLengthMessage: "Некорректный пароль: длина пароля должна быть не менее {0} символов(а).";
readonly invalidPasswordMinDigitsMessage: "Некорректный пароль: должен содержать не менее {0} цифр(ы).";
readonly invalidPasswordMinLowerCaseCharsMessage: "Некорректный пароль: пароль должен содержать не менее {0} символов(а) в нижнем регистре.";
readonly invalidPasswordMinUpperCaseCharsMessage: "Некорректный пароль: пароль должен содержать не менее {0} символов(а) в верхнем регистре.";
readonly invalidPasswordMinSpecialCharsMessage: "Некорректный пароль: пароль должен содержать не менее {0} спецсимволов(а).";
readonly invalidPasswordNotUsernameMessage: "Некорректный пароль: пароль не должен совпадать с именем пользователя.";
readonly invalidPasswordRegexPatternMessage: "Некорректный пароль: пароль не прошел проверку по регулярному выражению.";
readonly invalidPasswordHistoryMessage: "Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролем(ями).";
readonly invalidPasswordGenericMessage: "Некорректный пароль: новый пароль не соответствует правилам пароля.";
readonly ldapErrorInvalidCustomFilter: "Сконфигурированный пользователем фильтр LDAP не должен начинаться с \"(\" или заканчиваться на \")\".";
readonly ldapErrorMissingClientId: "Client ID должен быть настроен в конфигурации, если не используется сопоставление ролей в realm.";
readonly ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType: "Не удалось унаследовать группу и использовать членство UID типа вместе.";
readonly ldapErrorCantWriteOnlyForReadOnlyLdap: "Невозможно установить режим \"только на запись\", когда LDAP провайдер не в режиме WRITABLE";
readonly ldapErrorCantWriteOnlyAndReadOnly: "Невозможно одновременно установить режимы \"только на чтение\" и \"только на запись\"";
readonly clientRedirectURIsFragmentError: "URI перенаправления не должен содержать фрагмент URI";
readonly clientRootURLFragmentError: "Корневой URL не должен содержать фрагмент URL ";
readonly pairwiseMalformedClientRedirectURI: "Клиент содержит некорректный URI перенаправления.";
readonly pairwiseClientRedirectURIsMissingHost: "URI перенаправления клиента должен содержать корректный компонент хоста.";
readonly pairwiseClientRedirectURIsMultipleHosts: "Без конфигурации по части идентификатора URI, URI перенаправления клиента не может содержать несколько компонентов хоста.";
readonly pairwiseMalformedSectorIdentifierURI: "Искаженная часть идентификатора URI.";
readonly pairwiseFailedToGetRedirectURIs: "Не удалось получить идентификаторы URI перенаправления из части идентификатора URI.";
readonly pairwiseRedirectURIsMismatch: "Клиент URI переадресации не соответствует URI переадресации, полученной из части идентификатора URI.";
};
readonly "zh-CN": {
readonly invalidPasswordMinLengthMessage: "无效的密码:最短长度 {0}.";
readonly invalidPasswordMinLowerCaseCharsMessage: "无效的密码:至少包含 {0} 小写字母";
readonly invalidPasswordMinDigitsMessage: "无效的密码:至少包含 {0} 个数字";
readonly invalidPasswordMinUpperCaseCharsMessage: "无效的密码:最短长度 {0} 大写字母";
readonly invalidPasswordMinSpecialCharsMessage: "无效的密码:最短长度 {0} 特殊字符";
readonly invalidPasswordNotUsernameMessage: "无效的密码: 不可以与用户名相同";
readonly invalidPasswordRegexPatternMessage: "无效的密码: 无法与正则表达式匹配";
readonly invalidPasswordHistoryMessage: "无效的密码:不能与最后使用的 {0} 个密码相同";
readonly ldapErrorInvalidCustomFilter: "定制的 LDAP过滤器不是以 \"(\" 开头或以 \")\"结尾.";
readonly ldapErrorConnectionTimeoutNotNumber: "Connection Timeout 必须是个数字";
readonly ldapErrorMissingClientId: "当域角色映射未启用时,客户端 ID 需要指定。";
readonly ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType: "无法在使用UID成员类型的同时维护组继承属性。";
readonly ldapErrorCantWriteOnlyForReadOnlyLdap: "当LDAP提供方不是可写模式时无法设置只写";
readonly ldapErrorCantWriteOnlyAndReadOnly: "无法同时设置只读和只写";
readonly clientRedirectURIsFragmentError: "重定向URL不应包含URI片段";
readonly clientRootURLFragmentError: "根URL 不应包含 URL 片段";
readonly pairwiseMalformedClientRedirectURI: "客户端包含一个无效的重定向URL";
readonly pairwiseClientRedirectURIsMissingHost: "客户端重定向URL需要有一个有效的主机";
readonly pairwiseClientRedirectURIsMultipleHosts: "Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.";
readonly pairwiseMalformedSectorIdentifierURI: "Malformed Sector Identifier URI.";
readonly pairwiseFailedToGetRedirectURIs: "无法从服务器获得重定向URL";
readonly pairwiseRedirectURIsMismatch: "客户端的重定向URI与服务器端获取的URI配置不匹配。";
};
};

File diff suppressed because one or more lines are too long

View File

@ -1,633 +0,0 @@
export declare const messages: {
readonly ca: {
readonly emailVerificationSubject: "Verificació d'email";
readonly emailVerificationBody: "Algú ha creat un compte de {2} amb aquesta adreça de correu electrònic. Si has estat tu, fes clic a l'enllaç següent per verificar la teva adreça de correu electrònic.\n\n{0}\n\nAquest enllaç expirarà en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge.";
readonly emailVerificationBodyHtml: "<p>Algú ha creat un compte de {2} amb aquesta adreça de correu electrònic. Si has estat tu, fes clic a l'enllaç següent per verificar la teva adreça de correu electrònic.</p><p><a href=\"{0}\">{0}</a></p><p> Aquest enllaç expirarà en {1} minuts.</p><p> Si tu no has creat aquest compte, simplement ignora aquest missatge.</p>";
readonly passwordResetSubject: "Reinicia contrasenya";
readonly passwordResetBody: "Algú ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l'enllaç següent per a reiniciar-les.\n\n{0}\n\nAquest enllaç expirarà en {1} minuts.\n\nSi no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzarà cap canvi.";
readonly passwordResetBodyHtml: "<p>Algú ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l'enllaç següent per a reiniciar-les.</p><p><a href=\"{0}\">{0}</a></p><p>Aquest enllaç expirarà en {1} minuts.</p><p>Si no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzarà cap canvi.</p>";
readonly executeActionsSubject: "Actualitza el teu compte";
readonly executeActionsBody: "L'administrador ha sol·licitat que actualitzis el teu compte de {2}. Fes clic a l'enllaç inferior per iniciar aquest procés.\n\n{0}\n\nAquest enllaç expirarà en {1} minutes.\n\nSi no estàs al tant que l'administrador hagi sol·licitat això, simplement ignora aquest missatge i no es realitzarà cap canvi.";
readonly executeActionsBodyHtml: "<p>L'administrador ha sol·licitat que actualitzis el teu compte de {2}. Fes clic a l'enllaç inferior per iniciar aquest procés.</p><p><a href=\"{0}\">{0}</a></p><p>Aquest enllaç expirarà en {1} minutes.</p><p>Si no estàs al tant que l'administrador hagi sol·licitat això, simplement ignora aquest missatge i no es realitzarà cap canvi.</p>";
readonly eventLoginErrorSubject: "Fallada en l'inici de sessió";
readonly eventLoginErrorBody: "S'ha detectat un intent d'accés fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.";
readonly eventLoginErrorBodyHtml: "<p>S'ha detectat un intent d'accés fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.</p>";
readonly eventRemoveTotpSubject: "Esborrat OTP";
readonly eventRemoveTotpBody: "OTP s'ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, per favor contacta amb l'administrador.";
readonly eventRemoveTotpBodyHtml: "<p>OTP s'ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador. </ P>";
readonly eventUpdatePasswordSubject: "Actualització de contrasenya";
readonly eventUpdatePasswordBody: "La teva contrasenya s'ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.";
readonly eventUpdatePasswordBodyHtml: "<p>La teva contrasenya s'ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.</p>";
readonly eventUpdateTotpSubject: "Actualització de OTP";
readonly eventUpdateTotpBody: "OTP s'ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.";
readonly eventUpdateTotpBodyHtml: "<p>OTP s'ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.</p>";
};
readonly cs: {
readonly emailVerificationSubject: "Ověření e-mailu";
readonly emailVerificationBody: "Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu \n\n{0}\n\nTento odkaz vyprší za {1} minuty.\n\nPokud jste tento účet nevytvořili, tuto zprávu ignorujte.";
readonly emailVerificationBodyHtml: "<p>Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu. </p><p><a href=\"{0}\">Odkaz na ověření e-mailové adresy</a></p><p>Platnost odkazu vyprší za {1} minut.</p><p>Pokud jste tento účet nevytvořili, tuto zprávu ignorujte.</p>";
readonly emailTestSubject: "[KEYCLOAK] - testovací zpráva";
readonly emailTestBody: "Toto je testovací zpráva";
readonly emailTestBodyHtml: "<p>Toto je testovací zpráva </p>";
readonly identityProviderLinkSubject: "Odkaz {0}";
readonly identityProviderLinkBody: "Někdo chce propojit váš účet \"{1}\" s účtem \"{0}\" uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty. \n\n{3}\n\nPlatnost tohoto odkazu je {5}.\n\nPokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.";
readonly identityProviderLinkBodyHtml: "<p>Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.</p><p><a href=\"{0}\">Odkaz na změnu hesla.</a></p><p>Platnost tohoto odkazu je {3}.</p><p>Pokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.</p>";
readonly passwordResetSubject: "Zapomenuté heslo";
readonly passwordResetBody: "Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.\n\n{0}\n\nPlatnost tohoto odkazu je {3}.\n\nPokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.";
readonly passwordResetBodyHtml: "<p> Někdo právě požádal o změnu pověření vašeho účtu {2}. Pokud jste to vy, klikněte na odkaz níže, abyste je resetovali.</p><p><a href=\"{0}\">Odkaz na obnovení pověření </a></p><p> Platnost tohoto odkazu vyprší během {1} minut.</p><p> Pokud nechcete obnovit vaše pověření, ignorujte tuto zprávu a nic se nezmění.</p>";
readonly executeActionsSubject: "Aktualizujte svůj účet";
readonly executeActionsBody: "Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.\n\n{0}\n\nPlatnost tohoto odkazu je {4}.\n\nPokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.";
readonly executeActionsBodyHtml: "<p>Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.</p><p><a href=\"{0}\">Odkaz na aktualizaci účtu.</a></p><p>Platnost tohoto odkazu je {4}.</p><p>Pokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.</p>";
readonly eventLoginErrorSubject: "Chyba přihlášení";
readonly eventLoginErrorBody: "Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.";
readonly eventLoginErrorBodyHtml: "<p>Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>";
readonly eventRemoveTotpSubject: "Odebrat TOTP";
readonly eventRemoveTotpBody: "V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.";
readonly eventRemoveTotpBodyHtml: "<p>V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>";
readonly eventUpdatePasswordSubject: "Aktualizace hesla";
readonly eventUpdatePasswordBody: "V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.";
readonly eventUpdatePasswordBodyHtml: "<p>V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>";
readonly eventUpdateTotpSubject: "Aktualizace OTP";
readonly eventUpdateTotpBody: "V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.";
readonly eventUpdateTotpBodyHtml: "<p>V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>";
readonly "requiredAction.CONFIGURE_TOTP": "Konfigurace OTP";
readonly "requiredAction.terms_and_conditions": "Smluvní podmínky";
readonly "requiredAction.UPDATE_PASSWORD": "Aktualizace hesla";
readonly "requiredAction.UPDATE_PROFILE": "Aktualizace profilu";
readonly "requiredAction.VERIFY_EMAIL": "Ověření e-mailu";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "sekund";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "sekunda";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.2": "sekundy";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.3": "sekundy";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.4": "sekundy";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "minut";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "minuta";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.2": "minuty";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.3": "minuty";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.4": "minuty";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "hodin";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "hodina";
readonly "linkExpirationFormatter.timePeriodUnit.hours.2": "hodiny";
readonly "linkExpirationFormatter.timePeriodUnit.hours.3": "hodiny";
readonly "linkExpirationFormatter.timePeriodUnit.hours.4": "hodiny";
readonly "linkExpirationFormatter.timePeriodUnit.days": "dní";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "den";
readonly "linkExpirationFormatter.timePeriodUnit.days.2": "dny";
readonly "linkExpirationFormatter.timePeriodUnit.days.3": "dny";
readonly "linkExpirationFormatter.timePeriodUnit.days.4": "dny";
};
readonly de: {
readonly emailVerificationSubject: "E-Mail verifizieren";
readonly emailVerificationBody: "Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann können sie diese Nachricht ignorieren.";
readonly emailVerificationBodyHtml: "<p>Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls das Sie waren, klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.</p><p><a href=\"{0}\">Link zur Bestätigung der E-Mail-Adresse</a></p><p>Dieser Link wird in {1} Minuten ablaufen.</p><p>Falls Sie dieses Konto nicht erstellt haben, dann können sie diese Nachricht ignorieren.</p>";
readonly identityProviderLinkSubject: "Link {0}";
readonly identityProviderLinkBody: "Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{3}\n\n Die Gültigkeit des Links wird in {4} Minuten verfallen.\n\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} über {0} ermöglicht.";
readonly identityProviderLinkBodyHtml: "<p>Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href=\"{3}\">Link zur Bestätigung der Kontoverknüpfung</a></p><p>Die Gültigkeit des Links wird in {4} Minuten verfallen.</p><p>Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} über {0} ermöglicht.</p>";
readonly passwordResetSubject: "Passwort zurücksetzen";
readonly passwordResetBody: "Es wurde eine Änderung der Anmeldeinformationen für Ihren Account {2} angefordert. Wenn Sie diese Änderung beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{0}\n\nDie Gültigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie keine Änderung vollziehen wollen können Sie diese Nachricht ignorieren und an Ihrem Account wird nichts geändert.";
readonly passwordResetBodyHtml: "<p>Es wurde eine Änderung der Anmeldeinformationen für Ihren Account {2} angefordert. Wenn Sie diese Änderung beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href=\"{0}\">Link zum Zurücksetzen von Anmeldeinformationen</a></p><p>Die Gültigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie keine Änderung vollziehen wollen können Sie diese Nachricht ignorieren und an Ihrem Account wird nichts geändert.</p>";
readonly executeActionsSubject: "Aktualisieren Sie Ihr Konto";
readonly executeActionsBody: "Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\n\n{0}\n\nDie Gültigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unverändert.";
readonly executeActionsBodyHtml: "<p>Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.</p><p><a href=\"{0}\">Link zum Account-Update</a></p><p>Die Gültigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unverändert.</p>";
readonly eventLoginErrorSubject: "Fehlgeschlagene Anmeldung";
readonly eventLoginErrorBody: "Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.";
readonly eventLoginErrorBodyHtml: "<p>Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>";
readonly eventRemoveTotpSubject: "OTP Entfernt";
readonly eventRemoveTotpBody: "OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.";
readonly eventRemoveTotpBodyHtml: "<p>OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>";
readonly eventUpdatePasswordSubject: "Passwort Aktualisiert";
readonly eventUpdatePasswordBody: "Ihr Passwort wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.";
readonly eventUpdatePasswordBodyHtml: "<p>Ihr Passwort wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>";
readonly eventUpdateTotpSubject: "OTP Aktualisiert";
readonly eventUpdateTotpBody: "OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.";
readonly eventUpdateTotpBodyHtml: "<p>OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>";
};
readonly en: {
readonly emailVerificationSubject: "Verify email";
readonly emailVerificationBody: "Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\n\n{0}\n\nThis link will expire within {3}.\n\nIf you didn't create this account, just ignore this message.";
readonly emailVerificationBodyHtml: "<p>Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address</p><p><a href=\"{0}\">Link to e-mail address verification</a></p><p>This link will expire within {3}.</p><p>If you didn't create this account, just ignore this message.</p>";
readonly emailTestSubject: "[KEYCLOAK] - SMTP test message";
readonly emailTestBody: "This is a test message";
readonly emailTestBodyHtml: "<p>This is a test message</p>";
readonly identityProviderLinkSubject: "Link {0}";
readonly identityProviderLinkBody: "Someone wants to link your \"{1}\" account with \"{0}\" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {5}.\n\nIf you don't want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.";
readonly identityProviderLinkBodyHtml: "<p>Someone wants to link your <b>{1}</b> account with <b>{0}</b> account of user {2} . If this was you, click the link below to link accounts</p><p><a href=\"{3}\">Link to confirm account linking</a></p><p>This link will expire within {5}.</p><p>If you don't want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.</p>";
readonly passwordResetSubject: "Reset password";
readonly passwordResetBody: "Someone just requested to change your {2} account's credentials. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {3}.\n\nIf you don't want to reset your credentials, just ignore this message and nothing will be changed.";
readonly passwordResetBodyHtml: "<p>Someone just requested to change your {2} account's credentials. If this was you, click on the link below to reset them.</p><p><a href=\"{0}\">Link to reset credentials</a></p><p>This link will expire within {3}.</p><p>If you don't want to reset your credentials, just ignore this message and nothing will be changed.</p>";
readonly executeActionsSubject: "Update Your Account";
readonly executeActionsBody: "Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {4}.\n\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.";
readonly executeActionsBodyHtml: "<p>Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.</p><p><a href=\"{0}\">Link to account update</a></p><p>This link will expire within {4}.</p><p>If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.</p>";
readonly eventLoginErrorSubject: "Login error";
readonly eventLoginErrorBody: "A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.";
readonly eventLoginErrorBodyHtml: "<p>A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.</p>";
readonly eventRemoveTotpSubject: "Remove OTP";
readonly eventRemoveTotpBody: "OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.";
readonly eventRemoveTotpBodyHtml: "<p>OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.</p>";
readonly eventUpdatePasswordSubject: "Update password";
readonly eventUpdatePasswordBody: "Your password was changed on {0} from {1}. If this was not you, please contact an administrator.";
readonly eventUpdatePasswordBodyHtml: "<p>Your password was changed on {0} from {1}. If this was not you, please contact an administrator.</p>";
readonly eventUpdateTotpSubject: "Update OTP";
readonly eventUpdateTotpBody: "OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.";
readonly eventUpdateTotpBodyHtml: "<p>OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.</p>";
readonly "requiredAction.CONFIGURE_TOTP": "Configure OTP";
readonly "requiredAction.terms_and_conditions": "Terms and Conditions";
readonly "requiredAction.UPDATE_PASSWORD": "Update Password";
readonly "requiredAction.UPDATE_PROFILE": "Update Profile";
readonly "requiredAction.VERIFY_EMAIL": "Verify Email";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "seconds";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "second";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "minutes";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "minute";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "hours";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "hour";
readonly "linkExpirationFormatter.timePeriodUnit.days": "days";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "day";
readonly emailVerificationBodyCode: "Please verify your email address by entering in the following code.\n\n{0}\n\n.";
readonly emailVerificationBodyCodeHtml: "<p>Please verify your email address by entering in the following code.</p><p><b>{0}</b></p>";
};
readonly es: {
readonly emailVerificationSubject: "Verificación de email";
readonly emailVerificationBody: "Alguien ha creado una cuenta de {2} con esta dirección de email. Si has sido tú, haz click en el enlace siguiente para verificar tu dirección de email.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi tú no has creado esta cuenta, simplemente ignora este mensaje.";
readonly emailVerificationBodyHtml: "<p>Alguien ha creado una cuenta de {2} con esta dirección de email. Si has sido tú, haz click en el enlace siguiente para verificar tu dirección de email.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si tú no has creado esta cuenta, simplemente ignora este mensaje.</p>";
readonly passwordResetSubject: "Reiniciar contraseña";
readonly passwordResetBody: "Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido tú, haz clic en el enlace siguiente para reiniciarlas.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizará ningún cambio.";
readonly passwordResetBodyHtml: "<p>Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido tú, haz clic en el enlace siguiente para reiniciarlas.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizará ningún cambio.</p>";
readonly executeActionsSubject: "Actualiza tu cuenta";
readonly executeActionsBody: "El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi no estás al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizará ningún cambio.";
readonly executeActionsBodyHtml: "<p>El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si no estás al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizará ningún cambio.</p>";
readonly eventLoginErrorSubject: "Fallo en el inicio de sesión";
readonly eventLoginErrorBody: "Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.";
readonly eventLoginErrorBodyHtml: "<p>Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>";
readonly eventRemoveTotpSubject: "Borrado OTP";
readonly eventRemoveTotpBody: "OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.";
readonly eventRemoveTotpBodyHtml: "<p>OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>";
readonly eventUpdatePasswordSubject: "Actualización de contraseña";
readonly eventUpdatePasswordBody: "Tu contraseña se ha actualizado el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.";
readonly eventUpdatePasswordBodyHtml: "<p>Tu contraseña se ha actualizado el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>";
readonly eventUpdateTotpSubject: "Actualización de OTP";
readonly eventUpdateTotpBody: "OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.";
readonly eventUpdateTotpBodyHtml: "<p>OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>";
};
readonly fr: {
readonly emailVerificationSubject: "Vérification du courriel";
readonly emailVerificationBody: "Quelqu'un vient de créer un compte \"{2}\" avec votre courriel. Si vous êtes à l'origine de cette requête, veuillez cliquer sur le lien ci-dessous afin de vérifier votre adresse de courriel\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message.";
readonly emailVerificationBodyHtml: "<p>Quelqu'un vient de créer un compte \"{2}\" avec votre courriel. Si vous êtes à l'origine de cette requête, veuillez cliquer sur le lien ci-dessous afin de vérifier votre adresse de courriel</p><p><a href=\"{0}\">{0}</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Sinon, veuillez ignorer ce message.</p>";
readonly passwordResetSubject: "Réinitialiser le mot de passe";
readonly passwordResetBody: "Quelqu'un vient de demander une réinitialisation de mot de passe pour votre compte {2}. Si vous êtes à l'origine de cette requête, veuillez cliquer sur le lien ci-dessous pour le mettre à jour.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.";
readonly passwordResetBodyHtml: "<p>Quelqu'un vient de demander une réinitialisation de mot de passe pour votre compte {2}. Si vous êtes à l'origine de cette requête, veuillez cliquer sur le lien ci-dessous pour le mettre à jour.</p><p><a href=\"{0}\">Lien pour réinitialiser votre mot de passe</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.</p>";
readonly executeActionsSubject: "Mettre à jour votre compte";
readonly executeActionsBody: "Votre administrateur vient de demander une mise à jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSi vous n'êtes pas à l'origine de cette requête, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.";
readonly executeActionsBodyHtml: "<p>Votre administrateur vient de demander une mise à jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.</p><p><a href=\"{0}\">{0}</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Si vous n'êtes pas à l'origine de cette requête, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.</p>";
readonly eventLoginErrorSubject: "Erreur de connexion";
readonly eventLoginErrorBody: "Une tentative de connexion a été détectée sur votre compte {0} depuis {1}. Si vous n'êtes pas à l'origine de cette requête, veuillez contacter votre administrateur.";
readonly eventLoginErrorBodyHtml: "<p>Une tentative de connexion a été détectée sur votre compte {0} depuis {1}. Si vous n'êtes pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>";
readonly eventRemoveTotpSubject: "Suppression du OTP";
readonly eventRemoveTotpBody: "Le OTP a été supprimé de votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.";
readonly eventRemoveTotpBodyHtml: "<p>Le OTP a été supprimé de votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>";
readonly eventUpdatePasswordSubject: "Mise à jour du mot de passe";
readonly eventUpdatePasswordBody: "Votre mot de passe pour votre compte {0} a été modifié depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.";
readonly eventUpdatePasswordBodyHtml: "<p>Votre mot de passe pour votre compte {0} a été modifié depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>";
readonly eventUpdateTotpSubject: "Mise à jour du OTP";
readonly eventUpdateTotpBody: "Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.";
readonly eventUpdateTotpBodyHtml: "<p>Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>";
};
readonly it: {
readonly emailVerificationSubject: "Verifica l'email";
readonly emailVerificationBody: "Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email\n\n{0}\n\nQuesto link scadrà in {3}.\n\nSe non sei stato tu a creare questo account, ignora questo messaggio.";
readonly emailVerificationBodyHtml: "<p>Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email</p><p><a href=\"{0}\">{0}</a></p><p>Questo link scadrà in {3}.</p><p>Se non sei stato tu a creare questo account, ignora questo messaggio.</p>";
readonly emailTestSubject: "[KEYCLOAK] - messaggio di test SMTP";
readonly emailTestBody: "Questo è un messaggio di test";
readonly emailTestBodyHtml: "<p>Questo è un messaggio di test</p>";
readonly identityProviderLinkSubject: "Link {0}";
readonly identityProviderLinkBody: "Qualcuno vuole associare il tuo account \"{1}\" con l'account \"{0}\" dell'utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account\n\n{3}\n\nQuesto link scadrà in {5}.\n\nSe non vuoi associare l'account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.";
readonly identityProviderLinkBodyHtml: "<p>Qualcuno vuole associare il tuo account <b>{1}</b> con l'account <b>{0}</b> dell'utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account</p><p><a href=\"{3}\">{3}</a></p><p>Questo link scadrà in {5}.</p><p>Se non vuoi associare l'account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.</p>";
readonly passwordResetSubject: "Reimposta la password";
readonly passwordResetBody: "Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.\n\n{0}\n\nQuesto link e codice scadranno in {3}.\n\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verrà effettuato nessun cambio.";
readonly passwordResetBodyHtml: "<p>Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.</p><p><a href=\"{0}\">{0}</a></p><p>Questo link scadrà in {3}.</p><p>Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verrà effettuato nessun cambio.</p>";
readonly executeActionsSubject: "Aggiorna il tuo account";
readonly executeActionsBody: "Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed è necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.\n\n{0}\n\nQuesto link scadrà in {4}.\n\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verrà effettuato nessun cambio.";
readonly executeActionsBodyHtml: "<p>Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed è necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.</p><p><a href=\"{0}\">Link to account update</a></p><p>Questo link scadrà in {4}.</p><p>Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verrà effettuato nessun cambio.</p>";
readonly eventLoginErrorSubject: "Errore di accesso";
readonly eventLoginErrorBody: "È stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.";
readonly eventLoginErrorBodyHtml: "<p>È stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.</p>";
readonly eventRemoveTotpSubject: "Rimozione OTP (password temporanea valida una volta sola)";
readonly eventRemoveTotpBody: "La OTP (password temporanea valida una volta sola) è stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.";
readonly eventRemoveTotpBodyHtml: "<p>La OTP (password temporanea valida una volta sola) è stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.</p>";
readonly eventUpdatePasswordSubject: "Aggiornamento password";
readonly eventUpdatePasswordBody: "La tua password è stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.";
readonly eventUpdatePasswordBodyHtml: "<p>La tua password è stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.</p>";
readonly eventUpdateTotpSubject: "Aggiornamento OTP (password temporanea valida una volta sola)";
readonly eventUpdateTotpBody: "La OTP (password temporanea valida una volta sola) è stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.";
readonly eventUpdateTotpBodyHtml: "<p>La OTP (password temporanea valida una volta sola) è stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.</p>";
readonly "requiredAction.CONFIGURE_TOTP": "Configurazione OTP";
readonly "requiredAction.terms_and_conditions": "Termini e condizioni";
readonly "requiredAction.UPDATE_PASSWORD": "Aggiornamento password";
readonly "requiredAction.UPDATE_PROFILE": "Aggiornamento profilo";
readonly "requiredAction.VERIFY_EMAIL": "Verifica dell'indirizzo email";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "secondi";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "secondo";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "minuti";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "minuto";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "ore";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "ora";
readonly "linkExpirationFormatter.timePeriodUnit.days": "giorni";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "giorno";
readonly emailVerificationBodyCode: "Per favore verifica il tuo indirizzo email inserendo il codice seguente.\n\n{0}\n\n.";
readonly emailVerificationBodyCodeHtml: "<p>Per favore verifica il tuo indirizzo email inserendo il codice seguente.</p><p><b>{0}</b></p>";
};
readonly ja: {
readonly emailVerificationSubject: "Eメールの確認";
readonly emailVerificationBody: "このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。";
readonly emailVerificationBodyHtml: "<p>このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。</p><p><a href=\"{0}\">メールアドレスの確認</a></p><p>このリンクは{3}だけ有効です。</p><p>もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。</p>";
readonly emailTestSubject: "[KEYCLOAK] - SMTPテストメッセージ";
readonly emailTestBody: "これはテストメッセージです";
readonly emailTestBodyHtml: "<p>これはテストメッセージです</p>";
readonly identityProviderLinkSubject: "リンク {0}";
readonly identityProviderLinkBody: "あなたの\"{1}\"アカウントと{2}ユーザーの\"{0}\"アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\n\n{3}\n\nこのリンクは{5}だけ有効です。\n\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。";
readonly identityProviderLinkBodyHtml: "<p>あなたの<b>{1}</b>アカウントと{2}ユーザーの<b>{0}</b>アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。</p><p><a href=\"{3}\">アカウントリンクの確認</a></p><p>このリンクは{5}だけ有効です。</p><p>もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。</p>";
readonly passwordResetSubject: "パスワードのリセット";
readonly passwordResetBody: "あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。";
readonly passwordResetBodyHtml: "<p>あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。</p><p><a href=\"{0}\">パスワードのリセット</a></p><p>このリンクは{3}だけ有効です。</p><p>もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。</p>";
readonly executeActionsSubject: "アカウントの更新";
readonly executeActionsBody: "次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。\n\n{0}\n\nこのリンクは{4}だけ有効です。\n\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。";
readonly executeActionsBodyHtml: "<p>次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。</p><p><a href=\"{0}\">アカウントの更新</a></p><p>このリンクは{4}だけ有効です。</p><p>管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。</p>";
readonly eventLoginErrorSubject: "ログインエラー";
readonly eventLoginErrorBody: "{0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。";
readonly eventLoginErrorBodyHtml: "<p>{0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。</p>";
readonly eventRemoveTotpSubject: "OTPの削除";
readonly eventRemoveTotpBody: "{0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。";
readonly eventRemoveTotpBodyHtml: "<p>{0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。</p>";
readonly eventUpdatePasswordSubject: "パスワードの更新";
readonly eventUpdatePasswordBody: "{0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。";
readonly eventUpdatePasswordBodyHtml: "<p>{0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。</p>";
readonly eventUpdateTotpSubject: "OTPの更新";
readonly eventUpdateTotpBody: "{0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。";
readonly eventUpdateTotpBodyHtml: "<p>{0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。</p>";
readonly "requiredAction.CONFIGURE_TOTP": "OTPの設定";
readonly "requiredAction.terms_and_conditions": "利用規約";
readonly "requiredAction.UPDATE_PASSWORD": "パスワードの更新";
readonly "requiredAction.UPDATE_PROFILE": "プロファイルの更新";
readonly "requiredAction.VERIFY_EMAIL": "Eメールの確認";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "秒";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "秒";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "分";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "分";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "時間";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "時間";
readonly "linkExpirationFormatter.timePeriodUnit.days": "日";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "日";
readonly emailVerificationBodyCode: "次のコードを入力してメールアドレスを確認してください。\n\n{0}\n\n.";
readonly emailVerificationBodyCodeHtml: "<p>次のコードを入力してメールアドレスを確認してください。</p><p><b>{0}</b></p>";
};
readonly lt: {
readonly emailVerificationSubject: "El. pašto patvirtinimas";
readonly emailVerificationBody: "Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką. ";
readonly emailVerificationBodyHtml: "<p>Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tao buvote Jūs, tuomet paspauskite žemiau esančią nuorodą</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką.</p>";
readonly identityProviderLinkSubject: "Sąsaja {0}";
readonly identityProviderLinkBody: "Kažas pageidauja susieti Jūsų \"{1}\" paskyrą su \"{0}\" {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras\n\n{3}\n\nŠi nuoroda galioja {4} min.\n\nJei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.";
readonly identityProviderLinkBodyHtml: "<p>žas pageidauja susieti Jūsų <b>{1}</b> paskyrą su <b>{0}</b> {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras</p><p><a href=LT\"{3}\">{3}</a></p><p>Ši nuoroda galioja {4} min.</p><p>Jei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.</p>";
readonly passwordResetSubject: "Slaptažodžio atkūrimas";
readonly passwordResetBody: "Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.\n\n{0}\n\nŠi nuoroda ir kodas galioja {1} min.\n\nJei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.";
readonly passwordResetBodyHtml: "<p>Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda ir kodas galioja {1} min.</p><p>Jei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>";
readonly executeActionsSubject: "Atnaujinkite savo paskyrą";
readonly executeActionsBody: "Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.";
readonly executeActionsBodyHtml: "<p>Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>Jei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>";
readonly eventLoginErrorSubject: "Nesėkmingas bandymas prisijungti prie jūsų paskyros";
readonly eventLoginErrorBody: "Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi";
readonly eventLoginErrorBodyHtml: "<p>Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi</p>";
readonly eventRemoveTotpSubject: "OTP pašalinimas";
readonly eventRemoveTotpBody: "Kažkas pageidauja atsieti TOPT Jūsų {1} paskyroje su {0}. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi";
readonly eventRemoveTotpBodyHtml: "<p>Kažkas pageidauja atsieti TOPT Jūsų <b>{1}</b> paskyroje su <b>{0}</b>. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>";
readonly eventUpdatePasswordSubject: "Slaptažodžio atnaujinimas";
readonly eventUpdatePasswordBody: "{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi";
readonly eventUpdatePasswordBodyHtml: "<p>{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi</p>";
readonly eventUpdateTotpSubject: "OTP atnaujinimas";
readonly eventUpdateTotpBody: "OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi";
readonly eventUpdateTotpBodyHtml: "<p>OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>";
};
readonly nl: {
readonly emailVerificationSubject: "Bevestig e-mailadres";
readonly emailVerificationBody: "Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen \n\n{0}\n\nDeze koppeling zal binnen {3} vervallen.\n\nU kunt dit bericht negeren indien u dit account niet heeft aangemaakt.";
readonly emailVerificationBodyHtml: "<p>Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen</p><p><a href=\"{0}\">Koppeling naar e-mailadres bevestiging</a></p><p>Deze koppeling zal binnen {3} vervallen.</p<p>U kunt dit bericht negeren indien u dit account niet heeft aangemaakt.</p>";
readonly emailTestSubject: "[KEYCLOAK] - SMTP testbericht";
readonly emailTestBody: "Dit is een testbericht";
readonly emailTestBodyHtml: "<p>Dit is een testbericht</p>";
readonly identityProviderLinkSubject: "Koppel {0}";
readonly identityProviderLinkBody: "Iemand wil uw \"{1}\" account koppelen met \"{0}\" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen\n\n{3}\n\nDeze link zal over {5} vervallen.\n\nAls u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.";
readonly identityProviderLinkBodyHtml: "<p>Iemand wil uw \"{1}\" account koppelen met \"{0}\" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen</p><p><a href=\"{3}\">Link om accounts te koppelen</a></p><p>Deze link zal over {5} vervallen.</p><p>Als u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.</p>";
readonly passwordResetSubject: "Wijzig wachtwoord";
readonly passwordResetBody: "Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.\n\n{0}\n\nDe link en de code zullen binnen {3} vervallen.\n\nAls u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.";
readonly passwordResetBodyHtml: "<p>Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.</p><p><a href=\"{0}\">Wijzig aanmeldgegevens</a></p><p>De link en de code zullen binnen {3} vervallen.</p><p>Als u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.</p>";
readonly executeActionsSubject: "Wijzig uw account";
readonly executeActionsBody: "Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten. \n\n{0}\n\nDeze link zal over {4} vervallen. \n\nAls u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.";
readonly executeActionsBodyHtml: "<p>Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten.</p><p><a href=\"{0}\">Link naar account wijziging</a></p><p>Deze link zal over {4} vervallen.</p><p>Als u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.</p>";
readonly eventLoginErrorSubject: "Inlogfout";
readonly eventLoginErrorBody: "Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.";
readonly eventLoginErrorBodyHtml: "<p>Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.</p>";
readonly eventRemoveTotpSubject: "OTP verwijderd";
readonly eventRemoveTotpBody: "OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.";
readonly eventRemoveTotpBodyHtml: "<p>OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>";
readonly eventUpdatePasswordSubject: "Wachtwoord gewijzigd";
readonly eventUpdatePasswordBody: "Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.";
readonly eventUpdatePasswordBodyHtml: "<p>Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>";
readonly eventUpdateTotpSubject: "OTP gewijzigd";
readonly eventUpdateTotpBody: "OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.";
readonly eventUpdateTotpBodyHtml: "<p>OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "seconden";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "seconde";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "minuten";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "minuut";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "uur";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "uur";
readonly "linkExpirationFormatter.timePeriodUnit.days": "dagen";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "dag";
};
readonly no: {
readonly emailVerificationSubject: "Bekreft e-postadresse";
readonly emailVerificationBody: "Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk på lenken nedenfor for å bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.";
readonly emailVerificationBodyHtml: "<p>Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk på lenken nedenfor for å bekrefte e-postadressen din</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.</p>";
readonly identityProviderLinkSubject: "Lenke {0}";
readonly identityProviderLinkBody: "Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk på lenken nedenfor for å koble kontoene\n\n{3}\n\nDenne lenken vil utløpe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.";
readonly identityProviderLinkBodyHtml: "<p>Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk på lenken nedenfor for å koble kontoene.</p><p><a href=\"{3}\">{3}</a></p><p>Denne lenken vil utløpe om {4} minutter.</p><p>Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.</p>";
readonly passwordResetSubject: "Tilbakestill passord";
readonly passwordResetBody: "Noen har bedt om å endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk på lenken nedenfor for å tilbakestille dem.\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.";
readonly passwordResetBodyHtml: "<p>Noen har bedt om å endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk på lenken nedenfor for å tilbakestille dem.</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.</p>";
readonly executeActionsSubject: "Oppdater kontoen din";
readonly executeActionsBody: "Administrator har anmodet at du oppdaterer din {2} konto. Klikk på lenken nedenfor for å starte denne prosessen\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret.";
readonly executeActionsBodyHtml: "<p>Administrator har anmodet at du oppdaterer din {2} konto. Klikk på linken nedenfor for å starte denne prosessen.</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret. </p>";
readonly eventLoginErrorSubject: "Innlogging feilet";
readonly eventLoginErrorBody: "Et mislykket innloggingsforsøk ble oppdaget på din konto på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.";
readonly eventLoginErrorBodyHtml: "<p>Et mislykket innloggingsforsøk ble oppdaget på din konto på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>";
readonly eventRemoveTotpSubject: "Fjern engangskode";
readonly eventRemoveTotpBody: "Engangskode ble fjernet fra kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.";
readonly eventRemoveTotpBodyHtml: "<p>Engangskode ble fjernet fra kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>";
readonly eventUpdatePasswordSubject: "Oppdater passord";
readonly eventUpdatePasswordBody: "Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.";
readonly eventUpdatePasswordBodyHtml: "<p>Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>";
readonly eventUpdateTotpSubject: "Oppdater engangskode";
readonly eventUpdateTotpBody: "Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.";
readonly eventUpdateTotpBodyHtml: "<p>Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>";
};
readonly pl: {
readonly emailVerificationSubject: "Zweryfikuj email";
readonly emailVerificationBody: "Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij poniższy link, aby zweryfikować swój adres e-mail \n\n{0}\n\nLink ten wygaśnie w ciągu {3}.\n\nJeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.";
readonly emailVerificationBodyHtml: "<p>Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij <a href=\"{0}\">ten link</a> aby zweryfikować swój adres e-mail</p><p>Link ten wygaśnie w ciągu {3}</p><p>Jeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.</p>";
readonly emailTestSubject: "[KEYCLOAK] - wiadomość testowa SMTP";
readonly emailTestBody: "To jest wiadomość testowa";
readonly emailTestBodyHtml: "<p>To jest wiadomość testowa</p>";
readonly identityProviderLinkSubject: "Link {0}";
readonly identityProviderLinkBody: "Ktoś chce połączyć Twoje konto \"{1}\" z kontem \"{0}\" użytkownika {2}. Jeśli to Ty, kliknij poniższy link by połączyć konta\n\n{3}\n\nTen link wygaśnie w ciągu {5}.\n\nJeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.";
readonly identityProviderLinkBodyHtml: "<p>Ktoś chce połączyć Twoje konto <b>{1}</b> z kontem <b>{0}</b> użytkownika {2}. Jeśli to Ty, kliknij <a href=\"{3}\">ten link</a> by połączyć konta.</p><p>Ten link wygaśnie w ciągu {5}.</p><p>Jeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.</p>";
readonly passwordResetSubject: "Zresetuj hasło";
readonly passwordResetBody: "Ktoś właśnie poprosił o zmianę danych logowania Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.\n\n{0}\n\nTen link i kod stracą ważność w ciągu {3}.\n\nJeśli nie chcesz zresetować swoich danych logowania, po prostu zignoruj tę wiadomość i nic się nie zmieni.";
readonly passwordResetBodyHtml: "<p>Ktoś właśnie poprosił o zmianę poświadczeń Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.</p><p><a href=\"{0}\">Link do resetowania poświadczeń</a></p><p>Ten link wygaśnie w ciągu {3}.</p><p>Jeśli nie chcesz resetować swoich poświadczeń, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>";
readonly executeActionsSubject: "Zaktualizuj swoje konto";
readonly executeActionsBody: "Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij poniższy link, aby rozpocząć ten proces.\n\n{0}\n\nTen link wygaśnie w ciągu {4}.\n\nJeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.";
readonly executeActionsBodyHtml: "<p>Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij <a href=\"{0}\">ten link</a>, aby rozpocząć proces.</p><p>Link ten wygaśnie w ciągu {4}.</p><p>Jeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>";
readonly eventLoginErrorSubject: "Błąd logowania";
readonly eventLoginErrorBody: "Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.";
readonly eventLoginErrorBodyHtml: "<p>Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>";
readonly eventRemoveTotpSubject: "Usuń hasło jednorazowe (OTP)";
readonly eventRemoveTotpBody: "Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.";
readonly eventRemoveTotpBodyHtml: "<p>Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>";
readonly eventUpdatePasswordSubject: "Aktualizuj hasło";
readonly eventUpdatePasswordBody: "Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.";
readonly eventUpdatePasswordBodyHtml: "<p>Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>";
readonly eventUpdateTotpSubject: "Aktualizuj hasło jednorazowe (OTP)";
readonly eventUpdateTotpBody: "Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.";
readonly eventUpdateTotpBodyHtml: "<p>Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>";
readonly "requiredAction.CONFIGURE_TOTP": "Konfiguracja hasła jednorazowego (OTP)";
readonly "requiredAction.terms_and_conditions": "Regulamin";
readonly "requiredAction.UPDATE_PASSWORD": "Aktualizacja hasła";
readonly "requiredAction.UPDATE_PROFILE": "Aktualizacja profilu";
readonly "requiredAction.VERIFY_EMAIL": "Weryfikacja adresu e-mail";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "sekund";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "sekunda";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.2": "sekundy";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.3": "sekundy";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.4": "sekundy";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "minut";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "minuta";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.2": "minuty";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.3": "minuty";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.4": "minuty";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "godzin";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "godzina";
readonly "linkExpirationFormatter.timePeriodUnit.hours.2": "godziny";
readonly "linkExpirationFormatter.timePeriodUnit.hours.3": "godziny";
readonly "linkExpirationFormatter.timePeriodUnit.hours.4": "godziny";
readonly "linkExpirationFormatter.timePeriodUnit.days": "dni";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "dzień";
readonly emailVerificationBodyCode: "Potwierdź swój adres e-mail wprowadzając następujący kod.\n\n{0}\n\n.";
readonly emailVerificationBodyCodeHtml: "<p>Potwierdź swój adres e-mail, wprowadzając następujący kod.</p><p><b>{0}</b></p>";
};
readonly "pt-BR": {
readonly emailVerificationSubject: "Verificação de e-mail";
readonly emailVerificationBody: "Alguém criou uma conta {2} com este endereço de e-mail. Se foi você, clique no link abaixo para verificar o seu endereço de email\n\n{0}\n\nEste link irá expirar dentro de {3}.\n\nSe não foi você que criou esta conta, basta ignorar esta mensagem.";
readonly emailVerificationBodyHtml: "<p>Alguém criou uma conta {2} com este endereço de e-mail. Se foi você, clique no link abaixo para verificar o seu endereço de email</p><p><a href=\"{0}\">{0}</a></p><p>Este link irá expirar dentro de {3}.</p><p>Se não foi você que criou esta conta, basta ignorar esta mensagem.</p>";
readonly emailTestSubject: "[KEYCLOAK] - SMTP mensagem de teste";
readonly emailTestBody: "Esta é uma mensagem de teste";
readonly emailTestBodyHtml: "<p>Esta é uma mensagem de teste</p>";
readonly identityProviderLinkSubject: "Vincular {0}";
readonly identityProviderLinkBody: "Alguém quer vincular sua conta \"{1}\" com a conta \"{0}\" do usuário {2} . Se foi você, clique no link abaixo para vincular as contas.\n\n{3}\n\nEste link irá expirar em {5}.\n\nSe você não quer vincular a conta, apenas ignore esta mensagem. Se você vincular as contas, você será capaz de logar em {1} atrávés de {0}.";
readonly identityProviderLinkBodyHtml: "<p>Alguém quer vincular sua conta <b>{1}</b> com a conta <b>{0}</b> do usuário {2} . Se foi você, clique no link abaixo para vincular as contas.</p><p><a href=\"{3}\">{3}</a></p><p>Este link irá expirar em {5}.</p><p>Se você não quer vincular a conta, apenas ignore esta mensagem. Se você vincular as contas, você será capaz de logar em {1} atrávés de {0}.</p>";
readonly passwordResetSubject: "Redefinição de senha";
readonly passwordResetBody: "Alguém solicitou uma alteração de senha da sua conta {2}. Se foi você, clique no link abaixo para redefini-la.\n\n{0}\n\nEste link e código expiram em {3}.\n\nSe você não deseja redefinir sua senha, apenas ignore esta mensagem e nada será alterado.";
readonly passwordResetBodyHtml: "<p>Alguém solicitou uma alteração de senha da sua conta {2}. Se foi você, clique no link abaixo para redefini-la.</p><p><a href=\"{0}\">Link para redefinir a senha</a></p><p>Este link irá expirar em {3}.</p><p>Se você não deseja redefinir sua senha, apenas ignore esta mensagem e nada será alterado.</p>";
readonly executeActionsSubject: "Atualização de conta";
readonly executeActionsBody: "O administrador solicitou que você atualize sua conta {2} executando a(s) seguinte(s) ação(ões): {3}. Clique no link abaixo para iniciar o processo.\n\n{0}\n\nEste link irá expirar em {4}.\n\nSe você não tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada será alterado.";
readonly executeActionsBodyHtml: "<p>O administrador solicitou que você atualize sua conta {2} executando a(s) seguinte(s) ação(ões): {3}. Clique no link abaixo para iniciar o processo.</p><p><a href=\"{0}\">Link to account update</a></p><p>Este link irá expirar em {4}.</p><p>Se você não tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada será alterado.</p>";
readonly eventLoginErrorSubject: "Erro de login";
readonly eventLoginErrorBody: "Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.";
readonly eventLoginErrorBodyHtml: "<p>Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>";
readonly eventRemoveTotpSubject: "Remover OTP";
readonly eventRemoveTotpBody: "OTP foi removido da sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.";
readonly eventRemoveTotpBodyHtml: "<p>OTP foi removido da sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>";
readonly eventUpdatePasswordSubject: "Atualização de senha";
readonly eventUpdatePasswordBody: "Sua senha foi alterada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.";
readonly eventUpdatePasswordBodyHtml: "<p>Sua senha foi alterada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>";
readonly eventUpdateTotpSubject: "Atualização OTP";
readonly eventUpdateTotpBody: "OTP foi atualizado para a sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.";
readonly eventUpdateTotpBodyHtml: "<p>OTP foi atualizado para a sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>";
readonly "requiredAction.CONFIGURE_TOTP": "Configurar OTP";
readonly "requiredAction.terms_and_conditions": "Termos e Condições";
readonly "requiredAction.UPDATE_PASSWORD": "Atualizar Senha";
readonly "requiredAction.UPDATE_PROFILE": "Atualizar Perfil";
readonly "requiredAction.VERIFY_EMAIL": "Verificar E-mail";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "segundos";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "segundo";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "minutos";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "minuto";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "horas";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "hora";
readonly "linkExpirationFormatter.timePeriodUnit.days": "dias";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "dia";
readonly emailVerificationBodyCode: "Verifique seu endereço de e-mail digitando o seguinte código.\n\n{0}\n\n.";
readonly emailVerificationBodyCodeHtml: "<p>Verifique seu endereço de e-mail digitando o seguinte código.</p><p><b>{0}</b></p>";
};
readonly ru: {
readonly emailVerificationSubject: "Подтверждение E-mail";
readonly emailVerificationBody: "Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо.";
readonly emailVerificationBodyHtml: "<p>Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не создавали учетную запись, просто проигнорируйте это письмо.</p>";
readonly identityProviderLinkSubject: "Ссылка {0}";
readonly identityProviderLinkBody: "Кто-то хочет связать вашу учетную запись \"{1}\" с \"{0}\" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\n\n{3}\n\nЭта ссылка устареет через {4} минут.\n\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.";
readonly identityProviderLinkBodyHtml: "<p>Кто-то хочет связать вашу учетную запись <b>{1}</b> с <b>{0}</b> учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи</p><p><a href=\"{3}\">{3}</a></p><p>Эта ссылка устареет через {4} минут.</p><p>Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.</p>";
readonly passwordResetSubject: "Сброс пароля";
readonly passwordResetBody: "Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо.";
readonly passwordResetBodyHtml: "<p>Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.</p>";
readonly executeActionsSubject: "Обновление Вашей учетной записи";
readonly executeActionsBody: "Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.";
readonly executeActionsBodyHtml: "<p>Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.</p>";
readonly eventLoginErrorSubject: "Ошибка входа";
readonly eventLoginErrorBody: "Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.";
readonly eventLoginErrorBodyHtml: "<p>Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>";
readonly eventRemoveTotpSubject: "Удалить OTP";
readonly eventRemoveTotpBody: "OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.";
readonly eventRemoveTotpBodyHtml: "<p>OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>";
readonly eventUpdatePasswordSubject: "Обновление пароля";
readonly eventUpdatePasswordBody: "Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.";
readonly eventUpdatePasswordBodyHtml: "<p>Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>";
readonly eventUpdateTotpSubject: "Обновление OTP";
readonly eventUpdateTotpBody: "OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.";
readonly eventUpdateTotpBodyHtml: "<p>OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>";
};
readonly sk: {
readonly emailVerificationSubject: "Overenie e-mailu";
readonly emailVerificationBody: "Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz a overte svoju e-mailovú adresu \n\n{0}\n\nTento odkaz uplynie do {1} minút.\n\nAk ste tento účet nevytvorili, ignorujte túto správu.";
readonly emailVerificationBodyHtml: "<p>Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz na overenie svojej e-mailovej adresy.</p><p><a href=\"{0}\"> Odkaz na overenie e-mailovej adresy </a></p><p>Platnosť odkazu vyprší za {1} minút.</p><p> Ak ste tento účet nevytvorili, ignorujte túto správu.</p>";
readonly emailTestSubject: "[KEYCLOAK] - Testovacia správa SMTP";
readonly emailTestBody: "Toto je skúšobná správa";
readonly emailTestBodyHtml: "<p>Toto je skúšobná správa</p>";
readonly identityProviderLinkSubject: "Odkaz {0}";
readonly identityProviderLinkBody: "Niekto chce prepojiť váš účet \"{1}\" s účtom {0}\"používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty. \n\n{3}\n\nTento odkaz uplynie do {4} minút.\n\nAk nechcete prepojiť účet, jednoducho ignorujte túto správu , Ak prepájate účty, budete sa môcť prihlásiť do {1} až {0}.";
readonly identityProviderLinkBodyHtml: "<p>Niekto chce prepojiť váš účet <b>{1}</b> s účtom <b>{0}</b> používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty</p><p><a href=\"{3}\">Odkaz na potvrdenie prepojenia účtu </a></p><p> Platnosť tohto odkazu vyprší v rámci {4} minút.</p><p>Ak nechcete prepojiť účet, ignorujte túto správu. Ak prepojujete účty, budete sa môcť prihlásiť do {1} až {0}.</p>";
readonly passwordResetSubject: "Obnovenie hesla";
readonly passwordResetBody: "Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknite na odkaz uvedený nižšie, aby ste ich vynulovali.\n\n{0}\n\nTento odkaz a kód uplynie do {1} minút.\n\nAk nechcete obnoviť svoje poverenia , ignorujte túto správu a nič sa nezmení.";
readonly passwordResetBodyHtml: "<p>Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknutím na odkaz nižšie ich resetujte.</p><p><a href=\"{0}\">Odkaz na obnovenie poverení </a></p><p>Platnosť tohto odkazu vyprší v priebehu {1} minút.</p><p>Ak nechcete obnoviť svoje poverenia, ignorujte túto správu a nič sa nezmení.</p>";
readonly executeActionsSubject: "Aktualizujte svoj účet";
readonly executeActionsBody: "Váš administrátor práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.\n\n{0}\n\nTento odkaz vyprší za {1} minúty.\n\nAk si nie ste vedomý, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič bude zmenené.";
readonly executeActionsBodyHtml: "<p>Váš správca práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.</p><p><a href=\"{0}\"> Odkaz na aktualizáciu účtu </a></p><p> Platnosť tohto odkazu uplynie do {1} minúty.</p><p> Ak si nie ste vedomí, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič sa nezmení.</p>";
readonly eventLoginErrorSubject: "Chyba prihlásenia";
readonly eventLoginErrorBody: "Bol zistený neúspešný pokus o prihlásenie do vášho účtu v {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.";
readonly eventLoginErrorBodyHtml: "<p>Bol zistený neúspešný pokus o prihlásenie vášho účtu na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>";
readonly eventRemoveTotpSubject: "Odstrániť TOTP";
readonly eventRemoveTotpBody: "OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.";
readonly eventRemoveTotpBodyHtml: "<p>OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>";
readonly eventUpdatePasswordSubject: "Aktualizovať heslo";
readonly eventUpdatePasswordBody: "Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.";
readonly eventUpdatePasswordBodyHtml: "<p>Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>";
readonly eventUpdateTotpSubject: "Aktualizácia TOTP";
readonly eventUpdateTotpBody: "TOTP bol aktualizovaný pre váš účet na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.";
readonly eventUpdateTotpBodyHtml: "<p>TOTP bol aktualizovaný pre váš účet dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>";
readonly "requiredAction.CONFIGURE_TOTP": "Konfigurácia OTP";
readonly "requiredAction.terms_and_conditions": "Zmluvné podmienky";
readonly "requiredAction.UPDATE_PASSWORD": "Aktualizovať heslo";
readonly "requiredAction.UPDATE_PROFILE": "Aktualizovať profil";
readonly "requiredAction.VERIFY_EMAIL": "Overiť e-mail";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "sekundy";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "sekunda";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "minuty";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "minúta";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "hodiny";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "hodina";
readonly "linkExpirationFormatter.timePeriodUnit.days": "dni";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "deň ";
};
readonly sv: {
readonly emailVerificationSubject: "Verifiera e-post";
readonly emailVerificationBody: "Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.";
readonly emailVerificationBodyHtml: "<p>Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.</p>";
readonly identityProviderLinkSubject: "Länk {0}";
readonly identityProviderLinkBody: "Någon vill länka ditt \"{1}\" konto med \"{0}\" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\n\n{3}\n\nDen här länken kommer att upphöra inom {4} minuter.\n\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.";
readonly identityProviderLinkBodyHtml: "<p>Någon vill länka ditt <b>{1}</b> konto med <b>{0}</b> kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona</p><p><a href=\"{3}\">{3}</a></p><p>Den här länken kommer att upphöra inom {4} minuter.</p><p>Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.</p>";
readonly passwordResetSubject: "Återställ lösenord";
readonly passwordResetBody: "Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.\n\n{0}\n\nDen här länken och koden kommer att upphöra inom {1} minuter.\n\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.";
readonly passwordResetBodyHtml: "<p>Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken och koden kommer att upphöra inom {1} minuter.</p><p>Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>";
readonly executeActionsSubject: "Uppdatera ditt konto";
readonly executeActionsBody: "Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.";
readonly executeActionsBodyHtml: "<p>Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>";
readonly eventLoginErrorSubject: "Inloggningsfel";
readonly eventLoginErrorBody: "Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.";
readonly eventLoginErrorBodyHtml: "<p>Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>";
readonly eventRemoveTotpSubject: "Ta bort OTP";
readonly eventRemoveTotpBody: "OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.";
readonly eventRemoveTotpBodyHtml: "<p>OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>";
readonly eventUpdatePasswordSubject: "Uppdatera lösenord";
readonly eventUpdatePasswordBody: "Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.";
readonly eventUpdatePasswordBodyHtml: "<p>Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>";
readonly eventUpdateTotpSubject: "Uppdatera OTP";
readonly eventUpdateTotpBody: "OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.";
readonly eventUpdateTotpBodyHtml: "<p>OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>";
};
readonly tr: {
readonly emailVerificationSubject: "E-postayı doğrula";
readonly emailVerificationBody: "Birisi bu e-posta adresiyle bir {2} hesap oluşturdu. Bu sizseniz, e-posta adresinizi doğrulamak için aşağıdaki bağlantıya tıklayın\n\n{0}\n\nBu bağlantı {3} içinde sona erecek.\n\nBu hesabı oluşturmadıysanız, sadece bu iletiyi yoksayınız.";
readonly emailVerificationBodyHtml: "<p>Birisi bu e-posta adresiyle bir {2} hesap oluşturdu. Bu sizseniz, e-posta adresinizi doğrulamak için aşağıdaki bağlantıyı tıklayın.</p><p><a href=\"{0}\">E-posta adresi doğrulama adresi</a></p><p>Bu bağlantının süresi {3} içerisinde sona erecek.</p><p>Bu hesabı siz oluşturmadıysanız, bu mesajı göz ardı edin.</p>";
readonly emailTestSubject: "[KEYCLOAK] - SMTP test mesajı";
readonly emailTestBody: "Bu bir test mesajı";
readonly emailTestBodyHtml: "<p>Bu bir test mesajı</p>";
readonly identityProviderLinkSubject: "Link {0}";
readonly identityProviderLinkBody: "Birisi \"{1}\" hesabınızı \"{0}\" kullanıcı hesabı {2} ile bağlamak istiyor. Bu sizseniz, hesapları bağlamak için aşağıdaki bağlantıyı tıklayın:\n\n{3}\n\nBu bağlantı {5} içinde sona erecek.\n\nHesabınızı bağlamak istemiyorsanız bu mesajı göz ardı edin. Hesapları bağlarsanız, {1} ile {0} arasında oturum açabilirsiniz.";
readonly identityProviderLinkBodyHtml: "<p>Birisi <b> {1} </ b> hesabınızı {2} kullanıcısı <b> {0} </ b> hesabına bağlamak istiyor. Bu sizseniz, bağlantı vermek için aşağıdaki bağlantıyı tıklayın</p><p><a href=\"{3}\">Hesap bağlantısını onaylamak için bağlantı</a></p><p>Bu bağlantının süresi {5} içerisinde sona erecek.</p><p>Hesabı bağlamak istemiyorsanız, bu mesajı göz ardı edin. Hesapları bağlarsanız, {1} ile {0} arasında oturum açabilirsiniz.</p>";
readonly passwordResetSubject: "Şifreyi sıfırla";
readonly passwordResetBody: "Birisi, {2} hesabınızın kimlik bilgilerini değiştirmeyi istedi.Bu sizseniz, sıfırlamak için aşağıdaki bağlantıyı tıklayın.\n\n{0}\n\nBu bağlantı ve kod {3} içinde sona erecek.\n\nFakat bilgilerinizi sıfırlamak istemiyorsanız, Sadece bu mesajı görmezden gelin ve hiçbir şey değişmeyecek.";
readonly passwordResetBodyHtml: "<p>Birisi, {2} hesabınızın kimlik bilgilerini değiştirmeyi istedi. Sizseniz, sıfırlamak için aşağıdaki linke tıklayınız.</p><p><a href=\"{0}\">Kimlik bilgilerini sıfırlamak için bağlantı</a></p><p>Bu bağlantının süresi {3} içerisinde sona erecek.</p><p>Kimlik bilgilerinizi sıfırlamak istemiyorsanız, bu mesajı göz ardı edin.</p>";
readonly executeActionsSubject: "Hesabınızı Güncelleyin";
readonly executeActionsBody: "Yöneticiniz aşağıdaki işlemleri gerçekleştirerek {2} hesabınızı güncelledi: {3}. Bu işlemi başlatmak için aşağıdaki linke tıklayın.\n\n{0}\n\nBu bağlantının süresi {4} içerisinde sona erecek.\n\nYöneticinizin bunu istediğinden habersizseniz, bu mesajı göz ardı edin ve hiçbir şey değişmez.";
readonly executeActionsBodyHtml: "<p>Yöneticiniz aşağıdaki işlemleri gerçekleştirerek {2} hesabınızı güncelledi: {3}. Bu işlemi başlatmak için aşağıdaki linke tıklayın.</p><p><a href=\"{0}\">Hesap güncelleme bağlantısı</a></p><p>Bu bağlantının süresi {4} içerisinde sona erecek.</p><p>Yöneticinizin bunu istediğinden habersizseniz, bu mesajı göz ardı edin ve hiçbir şey değişmez.</p>";
readonly eventLoginErrorSubject: "Giriş hatası";
readonly eventLoginErrorBody: "{1} 'den {0} tarihinde başarısız bir giriş denemesi yapıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.";
readonly eventLoginErrorBodyHtml: "<p>{1} 'den {0} tarihinde başarısız bir giriş denemesi yapıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>";
readonly eventRemoveTotpSubject: "OTP'yi kaldır";
readonly eventRemoveTotpBody: "OTP, {0} tarihinden {1} tarihinde hesabınızdan kaldırıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.";
readonly eventRemoveTotpBodyHtml: "<p>OTP, {0} tarihinden {1} tarihinde hesabınızdan kaldırıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>";
readonly eventUpdatePasswordSubject: "Şifreyi güncelle";
readonly eventUpdatePasswordBody: "Şifreniz {0} tarihinde {0} tarihinde değiştirildi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.";
readonly eventUpdatePasswordBodyHtml: "<p>Şifreniz {0} tarihinde {0} tarihinde değiştirildi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>";
readonly eventUpdateTotpSubject: "OTP'yi Güncelle";
readonly eventUpdateTotpBody: "OTP, {0} tarihinden {1} tarihinde hesabınız için güncellendi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.";
readonly eventUpdateTotpBodyHtml: "<p>OTP, {0} tarihinden {1} tarihinde hesabınız için güncellendi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>";
readonly "requiredAction.CONFIGURE_TOTP": "OTP'yi yapılandır";
readonly "requiredAction.terms_and_conditions": "Şartlar ve Koşullar";
readonly "requiredAction.UPDATE_PASSWORD": "Şifre Güncelleme";
readonly "requiredAction.UPDATE_PROFILE": "Profilleri güncelle";
readonly "requiredAction.VERIFY_EMAIL": "E-mail doğrula";
readonly "linkExpirationFormatter.timePeriodUnit.seconds": "saniye";
readonly "linkExpirationFormatter.timePeriodUnit.seconds.1": "saniye";
readonly "linkExpirationFormatter.timePeriodUnit.minutes": "dakika";
readonly "linkExpirationFormatter.timePeriodUnit.minutes.1": "dakika";
readonly "linkExpirationFormatter.timePeriodUnit.hours": "saat";
readonly "linkExpirationFormatter.timePeriodUnit.hours.1": "saat";
readonly "linkExpirationFormatter.timePeriodUnit.days": "gün";
readonly "linkExpirationFormatter.timePeriodUnit.days.1": "gün";
readonly emailVerificationBodyCode: "Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.\n\n{0}\n\n.";
readonly emailVerificationBodyCodeHtml: "<p>Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.</p><p><b>{0}</b></p>";
};
readonly "zh-CN": {
readonly emailVerificationSubject: "验证电子邮件";
readonly emailVerificationBody: "用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您没有注册用户请忽略这条消息。";
readonly emailVerificationBodyHtml: "<p>用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后过期.</p><p>如果您没有注册用户,请忽略这条消息。</p>";
readonly identityProviderLinkSubject: "链接 {0}";
readonly identityProviderLinkBody: "有用户想要将账户 \"{1}\" 与用户{2}的账户\"{0}\" 做链接 . 如果是本人操作,请点击以下链接完成链接请求\n\n{3}\n\n这个链接会在 {4} 分钟后过期.\n\n如非本人操作请忽略这条消息。如果您链接账户您将可以通过{0}登录账户 {1}.";
readonly identityProviderLinkBodyHtml: "<p>有用户想要将账户 <b>{1}</b> 与用户{2} 的账户<b>{0}</b> 做链接 . 如果是本人操作,请点击以下链接完成链接请求</p><p><a href=\"{3}\">{3}</a></p><p>这个链接会在 {4} 分钟后过期。</p><p>如非本人操作,请忽略这条消息。如果您链接账户,您将可以通过{0}登录账户 {1}.</p>";
readonly passwordResetSubject: "重置密码";
readonly passwordResetBody: "有用户要求修改账户 {2} 的密码.如是本人操作,请点击下面链接进行重置.\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您不想重置您的密码请忽略这条消息密码不会改变。";
readonly passwordResetBodyHtml: "<p>有用户要求修改账户 {2} 的密码如是本人操作,请点击下面链接进行重置.</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后过期</p><p>如果您不想重置您的密码,请忽略这条消息,密码不会改变。</p>";
readonly executeActionsSubject: "更新您的账户";
readonly executeActionsBody: "您的管理员要求您更新账户 {2}. 点击以下链接开始更新\n\n{0}\n\n这个链接会在 {1} 分钟后失效.\n\n如果您不知道管理员要求更新账户信息请忽略这条消息。账户信息不会修改。";
readonly executeActionsBodyHtml: "<p>您的管理员要求您更新账户{2}. 点击以下链接开始更新.</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后失效.</p><p>如果您不知道管理员要求更新账户信息,请忽略这条消息。账户信息不会修改。</p>";
readonly eventLoginErrorSubject: "登录错误";
readonly eventLoginErrorBody: "在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.";
readonly eventLoginErrorBodyHtml: "<p>在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.</p>";
readonly eventRemoveTotpSubject: "删除 OTP";
readonly eventRemoveTotpBody: "OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员";
readonly eventRemoveTotpBodyHtml: "<p>OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员。</p>";
readonly eventUpdatePasswordSubject: "更新密码";
readonly eventUpdatePasswordBody: "您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员";
readonly eventUpdatePasswordBodyHtml: "<p>您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员</p>";
readonly eventUpdateTotpSubject: "更新 OTP";
readonly eventUpdateTotpBody: "您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。";
readonly eventUpdateTotpBodyHtml: "<p>您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。</p>";
};
};

View File

@ -1,641 +0,0 @@
"use strict";
//This code was automatically generated by running dist/bin/generate-i18n-messages.js
//PLEASE DO NOT EDIT MANUALLY
Object.defineProperty(exports, "__esModule", { value: true });
exports.messages = void 0;
/* spell-checker: disable */
exports.messages = {
"ca": {
"emailVerificationSubject": "Verificació d'email",
"emailVerificationBody": "Algú ha creat un compte de {2} amb aquesta adreça de correu electrònic. Si has estat tu, fes clic a l'enllaç següent per verificar la teva adreça de correu electrònic.\n\n{0}\n\nAquest enllaç expirarà en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge.",
"emailVerificationBodyHtml": "<p>Algú ha creat un compte de {2} amb aquesta adreça de correu electrònic. Si has estat tu, fes clic a l'enllaç següent per verificar la teva adreça de correu electrònic.</p><p><a href=\"{0}\">{0}</a></p><p> Aquest enllaç expirarà en {1} minuts.</p><p> Si tu no has creat aquest compte, simplement ignora aquest missatge.</p>",
"passwordResetSubject": "Reinicia contrasenya",
"passwordResetBody": "Algú ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l'enllaç següent per a reiniciar-les.\n\n{0}\n\nAquest enllaç expirarà en {1} minuts.\n\nSi no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzarà cap canvi.",
"passwordResetBodyHtml": "<p>Algú ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l'enllaç següent per a reiniciar-les.</p><p><a href=\"{0}\">{0}</a></p><p>Aquest enllaç expirarà en {1} minuts.</p><p>Si no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzarà cap canvi.</p>",
"executeActionsSubject": "Actualitza el teu compte",
"executeActionsBody": "L'administrador ha sol·licitat que actualitzis el teu compte de {2}. Fes clic a l'enllaç inferior per iniciar aquest procés.\n\n{0}\n\nAquest enllaç expirarà en {1} minutes.\n\nSi no estàs al tant que l'administrador hagi sol·licitat això, simplement ignora aquest missatge i no es realitzarà cap canvi.",
"executeActionsBodyHtml": "<p>L'administrador ha sol·licitat que actualitzis el teu compte de {2}. Fes clic a l'enllaç inferior per iniciar aquest procés.</p><p><a href=\"{0}\">{0}</a></p><p>Aquest enllaç expirarà en {1} minutes.</p><p>Si no estàs al tant que l'administrador hagi sol·licitat això, simplement ignora aquest missatge i no es realitzarà cap canvi.</p>",
"eventLoginErrorSubject": "Fallada en l'inici de sessió",
"eventLoginErrorBody": "S'ha detectat un intent d'accés fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.",
"eventLoginErrorBodyHtml": "<p>S'ha detectat un intent d'accés fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.</p>",
"eventRemoveTotpSubject": "Esborrat OTP",
"eventRemoveTotpBody": "OTP s'ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, per favor contacta amb l'administrador.",
"eventRemoveTotpBodyHtml": "<p>OTP s'ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador. </ P>",
"eventUpdatePasswordSubject": "Actualització de contrasenya",
"eventUpdatePasswordBody": "La teva contrasenya s'ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.",
"eventUpdatePasswordBodyHtml": "<p>La teva contrasenya s'ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.</p>",
"eventUpdateTotpSubject": "Actualització de OTP",
"eventUpdateTotpBody": "OTP s'ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.",
"eventUpdateTotpBodyHtml": "<p>OTP s'ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.</p>"
},
"cs": {
"emailVerificationSubject": "Ověření e-mailu",
"emailVerificationBody": "Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu \n\n{0}\n\nTento odkaz vyprší za {1} minuty.\n\nPokud jste tento účet nevytvořili, tuto zprávu ignorujte.",
"emailVerificationBodyHtml": "<p>Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu. </p><p><a href=\"{0}\">Odkaz na ověření e-mailové adresy</a></p><p>Platnost odkazu vyprší za {1} minut.</p><p>Pokud jste tento účet nevytvořili, tuto zprávu ignorujte.</p>",
"emailTestSubject": "[KEYCLOAK] - testovací zpráva",
"emailTestBody": "Toto je testovací zpráva",
"emailTestBodyHtml": "<p>Toto je testovací zpráva </p>",
"identityProviderLinkSubject": "Odkaz {0}",
"identityProviderLinkBody": "Někdo chce propojit váš účet \"{1}\" s účtem \"{0}\" uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty. \n\n{3}\n\nPlatnost tohoto odkazu je {5}.\n\nPokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.",
"identityProviderLinkBodyHtml": "<p>Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.</p><p><a href=\"{0}\">Odkaz na změnu hesla.</a></p><p>Platnost tohoto odkazu je {3}.</p><p>Pokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.</p>",
"passwordResetSubject": "Zapomenuté heslo",
"passwordResetBody": "Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.\n\n{0}\n\nPlatnost tohoto odkazu je {3}.\n\nPokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.",
"passwordResetBodyHtml": "<p> Někdo právě požádal o změnu pověření vašeho účtu {2}. Pokud jste to vy, klikněte na odkaz níže, abyste je resetovali.</p><p><a href=\"{0}\">Odkaz na obnovení pověření </a></p><p> Platnost tohoto odkazu vyprší během {1} minut.</p><p> Pokud nechcete obnovit vaše pověření, ignorujte tuto zprávu a nic se nezmění.</p>",
"executeActionsSubject": "Aktualizujte svůj účet",
"executeActionsBody": "Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.\n\n{0}\n\nPlatnost tohoto odkazu je {4}.\n\nPokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.",
"executeActionsBodyHtml": "<p>Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.</p><p><a href=\"{0}\">Odkaz na aktualizaci účtu.</a></p><p>Platnost tohoto odkazu je {4}.</p><p>Pokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.</p>",
"eventLoginErrorSubject": "Chyba přihlášení",
"eventLoginErrorBody": "Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.",
"eventLoginErrorBodyHtml": "<p>Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>",
"eventRemoveTotpSubject": "Odebrat TOTP",
"eventRemoveTotpBody": "V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.",
"eventRemoveTotpBodyHtml": "<p>V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>",
"eventUpdatePasswordSubject": "Aktualizace hesla",
"eventUpdatePasswordBody": "V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.",
"eventUpdatePasswordBodyHtml": "<p>V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>",
"eventUpdateTotpSubject": "Aktualizace OTP",
"eventUpdateTotpBody": "V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.",
"eventUpdateTotpBodyHtml": "<p>V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>",
"requiredAction.CONFIGURE_TOTP": "Konfigurace OTP",
"requiredAction.terms_and_conditions": "Smluvní podmínky",
"requiredAction.UPDATE_PASSWORD": "Aktualizace hesla",
"requiredAction.UPDATE_PROFILE": "Aktualizace profilu",
"requiredAction.VERIFY_EMAIL": "Ověření e-mailu",
"linkExpirationFormatter.timePeriodUnit.seconds": "sekund",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "sekunda",
"linkExpirationFormatter.timePeriodUnit.seconds.2": "sekundy",
"linkExpirationFormatter.timePeriodUnit.seconds.3": "sekundy",
"linkExpirationFormatter.timePeriodUnit.seconds.4": "sekundy",
"linkExpirationFormatter.timePeriodUnit.minutes": "minut",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "minuta",
"linkExpirationFormatter.timePeriodUnit.minutes.2": "minuty",
"linkExpirationFormatter.timePeriodUnit.minutes.3": "minuty",
"linkExpirationFormatter.timePeriodUnit.minutes.4": "minuty",
"linkExpirationFormatter.timePeriodUnit.hours": "hodin",
"linkExpirationFormatter.timePeriodUnit.hours.1": "hodina",
"linkExpirationFormatter.timePeriodUnit.hours.2": "hodiny",
"linkExpirationFormatter.timePeriodUnit.hours.3": "hodiny",
"linkExpirationFormatter.timePeriodUnit.hours.4": "hodiny",
"linkExpirationFormatter.timePeriodUnit.days": "dní",
"linkExpirationFormatter.timePeriodUnit.days.1": "den",
"linkExpirationFormatter.timePeriodUnit.days.2": "dny",
"linkExpirationFormatter.timePeriodUnit.days.3": "dny",
"linkExpirationFormatter.timePeriodUnit.days.4": "dny"
},
"de": {
"emailVerificationSubject": "E-Mail verifizieren",
"emailVerificationBody": "Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann können sie diese Nachricht ignorieren.",
"emailVerificationBodyHtml": "<p>Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls das Sie waren, klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.</p><p><a href=\"{0}\">Link zur Bestätigung der E-Mail-Adresse</a></p><p>Dieser Link wird in {1} Minuten ablaufen.</p><p>Falls Sie dieses Konto nicht erstellt haben, dann können sie diese Nachricht ignorieren.</p>",
"identityProviderLinkSubject": "Link {0}",
"identityProviderLinkBody": "Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{3}\n\n Die Gültigkeit des Links wird in {4} Minuten verfallen.\n\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} über {0} ermöglicht.",
"identityProviderLinkBodyHtml": "<p>Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href=\"{3}\">Link zur Bestätigung der Kontoverknüpfung</a></p><p>Die Gültigkeit des Links wird in {4} Minuten verfallen.</p><p>Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} über {0} ermöglicht.</p>",
"passwordResetSubject": "Passwort zurücksetzen",
"passwordResetBody": "Es wurde eine Änderung der Anmeldeinformationen für Ihren Account {2} angefordert. Wenn Sie diese Änderung beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{0}\n\nDie Gültigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie keine Änderung vollziehen wollen können Sie diese Nachricht ignorieren und an Ihrem Account wird nichts geändert.",
"passwordResetBodyHtml": "<p>Es wurde eine Änderung der Anmeldeinformationen für Ihren Account {2} angefordert. Wenn Sie diese Änderung beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href=\"{0}\">Link zum Zurücksetzen von Anmeldeinformationen</a></p><p>Die Gültigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie keine Änderung vollziehen wollen können Sie diese Nachricht ignorieren und an Ihrem Account wird nichts geändert.</p>",
"executeActionsSubject": "Aktualisieren Sie Ihr Konto",
"executeActionsBody": "Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\n\n{0}\n\nDie Gültigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unverändert.",
"executeActionsBodyHtml": "<p>Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.</p><p><a href=\"{0}\">Link zum Account-Update</a></p><p>Die Gültigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unverändert.</p>",
"eventLoginErrorSubject": "Fehlgeschlagene Anmeldung",
"eventLoginErrorBody": "Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.",
"eventLoginErrorBodyHtml": "<p>Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>",
"eventRemoveTotpSubject": "OTP Entfernt",
"eventRemoveTotpBody": "OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.",
"eventRemoveTotpBodyHtml": "<p>OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>",
"eventUpdatePasswordSubject": "Passwort Aktualisiert",
"eventUpdatePasswordBody": "Ihr Passwort wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.",
"eventUpdatePasswordBodyHtml": "<p>Ihr Passwort wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>",
"eventUpdateTotpSubject": "OTP Aktualisiert",
"eventUpdateTotpBody": "OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.",
"eventUpdateTotpBodyHtml": "<p>OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>"
},
"en": {
"emailVerificationSubject": "Verify email",
"emailVerificationBody": "Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\n\n{0}\n\nThis link will expire within {3}.\n\nIf you didn't create this account, just ignore this message.",
"emailVerificationBodyHtml": "<p>Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address</p><p><a href=\"{0}\">Link to e-mail address verification</a></p><p>This link will expire within {3}.</p><p>If you didn't create this account, just ignore this message.</p>",
"emailTestSubject": "[KEYCLOAK] - SMTP test message",
"emailTestBody": "This is a test message",
"emailTestBodyHtml": "<p>This is a test message</p>",
"identityProviderLinkSubject": "Link {0}",
"identityProviderLinkBody": "Someone wants to link your \"{1}\" account with \"{0}\" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {5}.\n\nIf you don't want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.",
"identityProviderLinkBodyHtml": "<p>Someone wants to link your <b>{1}</b> account with <b>{0}</b> account of user {2} . If this was you, click the link below to link accounts</p><p><a href=\"{3}\">Link to confirm account linking</a></p><p>This link will expire within {5}.</p><p>If you don't want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.</p>",
"passwordResetSubject": "Reset password",
"passwordResetBody": "Someone just requested to change your {2} account's credentials. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {3}.\n\nIf you don't want to reset your credentials, just ignore this message and nothing will be changed.",
"passwordResetBodyHtml": "<p>Someone just requested to change your {2} account's credentials. If this was you, click on the link below to reset them.</p><p><a href=\"{0}\">Link to reset credentials</a></p><p>This link will expire within {3}.</p><p>If you don't want to reset your credentials, just ignore this message and nothing will be changed.</p>",
"executeActionsSubject": "Update Your Account",
"executeActionsBody": "Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {4}.\n\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.",
"executeActionsBodyHtml": "<p>Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.</p><p><a href=\"{0}\">Link to account update</a></p><p>This link will expire within {4}.</p><p>If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.</p>",
"eventLoginErrorSubject": "Login error",
"eventLoginErrorBody": "A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.",
"eventLoginErrorBodyHtml": "<p>A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.</p>",
"eventRemoveTotpSubject": "Remove OTP",
"eventRemoveTotpBody": "OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.",
"eventRemoveTotpBodyHtml": "<p>OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.</p>",
"eventUpdatePasswordSubject": "Update password",
"eventUpdatePasswordBody": "Your password was changed on {0} from {1}. If this was not you, please contact an administrator.",
"eventUpdatePasswordBodyHtml": "<p>Your password was changed on {0} from {1}. If this was not you, please contact an administrator.</p>",
"eventUpdateTotpSubject": "Update OTP",
"eventUpdateTotpBody": "OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.",
"eventUpdateTotpBodyHtml": "<p>OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.</p>",
"requiredAction.CONFIGURE_TOTP": "Configure OTP",
"requiredAction.terms_and_conditions": "Terms and Conditions",
"requiredAction.UPDATE_PASSWORD": "Update Password",
"requiredAction.UPDATE_PROFILE": "Update Profile",
"requiredAction.VERIFY_EMAIL": "Verify Email",
"linkExpirationFormatter.timePeriodUnit.seconds": "seconds",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "second",
"linkExpirationFormatter.timePeriodUnit.minutes": "minutes",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "minute",
"linkExpirationFormatter.timePeriodUnit.hours": "hours",
"linkExpirationFormatter.timePeriodUnit.hours.1": "hour",
"linkExpirationFormatter.timePeriodUnit.days": "days",
"linkExpirationFormatter.timePeriodUnit.days.1": "day",
"emailVerificationBodyCode": "Please verify your email address by entering in the following code.\n\n{0}\n\n.",
"emailVerificationBodyCodeHtml": "<p>Please verify your email address by entering in the following code.</p><p><b>{0}</b></p>"
},
"es": {
"emailVerificationSubject": "Verificación de email",
"emailVerificationBody": "Alguien ha creado una cuenta de {2} con esta dirección de email. Si has sido tú, haz click en el enlace siguiente para verificar tu dirección de email.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi tú no has creado esta cuenta, simplemente ignora este mensaje.",
"emailVerificationBodyHtml": "<p>Alguien ha creado una cuenta de {2} con esta dirección de email. Si has sido tú, haz click en el enlace siguiente para verificar tu dirección de email.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si tú no has creado esta cuenta, simplemente ignora este mensaje.</p>",
"passwordResetSubject": "Reiniciar contraseña",
"passwordResetBody": "Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido tú, haz clic en el enlace siguiente para reiniciarlas.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizará ningún cambio.",
"passwordResetBodyHtml": "<p>Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido tú, haz clic en el enlace siguiente para reiniciarlas.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizará ningún cambio.</p>",
"executeActionsSubject": "Actualiza tu cuenta",
"executeActionsBody": "El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi no estás al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizará ningún cambio.",
"executeActionsBodyHtml": "<p>El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si no estás al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizará ningún cambio.</p>",
"eventLoginErrorSubject": "Fallo en el inicio de sesión",
"eventLoginErrorBody": "Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.",
"eventLoginErrorBodyHtml": "<p>Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>",
"eventRemoveTotpSubject": "Borrado OTP",
"eventRemoveTotpBody": "OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.",
"eventRemoveTotpBodyHtml": "<p>OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>",
"eventUpdatePasswordSubject": "Actualización de contraseña",
"eventUpdatePasswordBody": "Tu contraseña se ha actualizado el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.",
"eventUpdatePasswordBodyHtml": "<p>Tu contraseña se ha actualizado el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>",
"eventUpdateTotpSubject": "Actualización de OTP",
"eventUpdateTotpBody": "OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.",
"eventUpdateTotpBodyHtml": "<p>OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>"
},
"fr": {
"emailVerificationSubject": "Vérification du courriel",
"emailVerificationBody": "Quelqu'un vient de créer un compte \"{2}\" avec votre courriel. Si vous êtes à l'origine de cette requête, veuillez cliquer sur le lien ci-dessous afin de vérifier votre adresse de courriel\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message.",
"emailVerificationBodyHtml": "<p>Quelqu'un vient de créer un compte \"{2}\" avec votre courriel. Si vous êtes à l'origine de cette requête, veuillez cliquer sur le lien ci-dessous afin de vérifier votre adresse de courriel</p><p><a href=\"{0}\">{0}</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Sinon, veuillez ignorer ce message.</p>",
"passwordResetSubject": "Réinitialiser le mot de passe",
"passwordResetBody": "Quelqu'un vient de demander une réinitialisation de mot de passe pour votre compte {2}. Si vous êtes à l'origine de cette requête, veuillez cliquer sur le lien ci-dessous pour le mettre à jour.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.",
"passwordResetBodyHtml": "<p>Quelqu'un vient de demander une réinitialisation de mot de passe pour votre compte {2}. Si vous êtes à l'origine de cette requête, veuillez cliquer sur le lien ci-dessous pour le mettre à jour.</p><p><a href=\"{0}\">Lien pour réinitialiser votre mot de passe</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.</p>",
"executeActionsSubject": "Mettre à jour votre compte",
"executeActionsBody": "Votre administrateur vient de demander une mise à jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSi vous n'êtes pas à l'origine de cette requête, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.",
"executeActionsBodyHtml": "<p>Votre administrateur vient de demander une mise à jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.</p><p><a href=\"{0}\">{0}</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Si vous n'êtes pas à l'origine de cette requête, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.</p>",
"eventLoginErrorSubject": "Erreur de connexion",
"eventLoginErrorBody": "Une tentative de connexion a été détectée sur votre compte {0} depuis {1}. Si vous n'êtes pas à l'origine de cette requête, veuillez contacter votre administrateur.",
"eventLoginErrorBodyHtml": "<p>Une tentative de connexion a été détectée sur votre compte {0} depuis {1}. Si vous n'êtes pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>",
"eventRemoveTotpSubject": "Suppression du OTP",
"eventRemoveTotpBody": "Le OTP a été supprimé de votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.",
"eventRemoveTotpBodyHtml": "<p>Le OTP a été supprimé de votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>",
"eventUpdatePasswordSubject": "Mise à jour du mot de passe",
"eventUpdatePasswordBody": "Votre mot de passe pour votre compte {0} a été modifié depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.",
"eventUpdatePasswordBodyHtml": "<p>Votre mot de passe pour votre compte {0} a été modifié depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>",
"eventUpdateTotpSubject": "Mise à jour du OTP",
"eventUpdateTotpBody": "Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.",
"eventUpdateTotpBodyHtml": "<p>Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>"
},
"it": {
"emailVerificationSubject": "Verifica l'email",
"emailVerificationBody": "Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email\n\n{0}\n\nQuesto link scadrà in {3}.\n\nSe non sei stato tu a creare questo account, ignora questo messaggio.",
"emailVerificationBodyHtml": "<p>Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email</p><p><a href=\"{0}\">{0}</a></p><p>Questo link scadrà in {3}.</p><p>Se non sei stato tu a creare questo account, ignora questo messaggio.</p>",
"emailTestSubject": "[KEYCLOAK] - messaggio di test SMTP",
"emailTestBody": "Questo è un messaggio di test",
"emailTestBodyHtml": "<p>Questo è un messaggio di test</p>",
"identityProviderLinkSubject": "Link {0}",
"identityProviderLinkBody": "Qualcuno vuole associare il tuo account \"{1}\" con l'account \"{0}\" dell'utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account\n\n{3}\n\nQuesto link scadrà in {5}.\n\nSe non vuoi associare l'account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.",
"identityProviderLinkBodyHtml": "<p>Qualcuno vuole associare il tuo account <b>{1}</b> con l'account <b>{0}</b> dell'utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account</p><p><a href=\"{3}\">{3}</a></p><p>Questo link scadrà in {5}.</p><p>Se non vuoi associare l'account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.</p>",
"passwordResetSubject": "Reimposta la password",
"passwordResetBody": "Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.\n\n{0}\n\nQuesto link e codice scadranno in {3}.\n\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verrà effettuato nessun cambio.",
"passwordResetBodyHtml": "<p>Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.</p><p><a href=\"{0}\">{0}</a></p><p>Questo link scadrà in {3}.</p><p>Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verrà effettuato nessun cambio.</p>",
"executeActionsSubject": "Aggiorna il tuo account",
"executeActionsBody": "Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed è necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.\n\n{0}\n\nQuesto link scadrà in {4}.\n\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verrà effettuato nessun cambio.",
"executeActionsBodyHtml": "<p>Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed è necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.</p><p><a href=\"{0}\">Link to account update</a></p><p>Questo link scadrà in {4}.</p><p>Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verrà effettuato nessun cambio.</p>",
"eventLoginErrorSubject": "Errore di accesso",
"eventLoginErrorBody": "È stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.",
"eventLoginErrorBodyHtml": "<p>È stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.</p>",
"eventRemoveTotpSubject": "Rimozione OTP (password temporanea valida una volta sola)",
"eventRemoveTotpBody": "La OTP (password temporanea valida una volta sola) è stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.",
"eventRemoveTotpBodyHtml": "<p>La OTP (password temporanea valida una volta sola) è stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.</p>",
"eventUpdatePasswordSubject": "Aggiornamento password",
"eventUpdatePasswordBody": "La tua password è stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.",
"eventUpdatePasswordBodyHtml": "<p>La tua password è stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.</p>",
"eventUpdateTotpSubject": "Aggiornamento OTP (password temporanea valida una volta sola)",
"eventUpdateTotpBody": "La OTP (password temporanea valida una volta sola) è stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.",
"eventUpdateTotpBodyHtml": "<p>La OTP (password temporanea valida una volta sola) è stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l'amministratore.</p>",
"requiredAction.CONFIGURE_TOTP": "Configurazione OTP",
"requiredAction.terms_and_conditions": "Termini e condizioni",
"requiredAction.UPDATE_PASSWORD": "Aggiornamento password",
"requiredAction.UPDATE_PROFILE": "Aggiornamento profilo",
"requiredAction.VERIFY_EMAIL": "Verifica dell'indirizzo email",
"linkExpirationFormatter.timePeriodUnit.seconds": "secondi",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "secondo",
"linkExpirationFormatter.timePeriodUnit.minutes": "minuti",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "minuto",
"linkExpirationFormatter.timePeriodUnit.hours": "ore",
"linkExpirationFormatter.timePeriodUnit.hours.1": "ora",
"linkExpirationFormatter.timePeriodUnit.days": "giorni",
"linkExpirationFormatter.timePeriodUnit.days.1": "giorno",
"emailVerificationBodyCode": "Per favore verifica il tuo indirizzo email inserendo il codice seguente.\n\n{0}\n\n.",
"emailVerificationBodyCodeHtml": "<p>Per favore verifica il tuo indirizzo email inserendo il codice seguente.</p><p><b>{0}</b></p>"
},
"ja": {
"emailVerificationSubject": "Eメールの確認",
"emailVerificationBody": "このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。",
"emailVerificationBodyHtml": "<p>このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。</p><p><a href=\"{0}\">メールアドレスの確認</a></p><p>このリンクは{3}だけ有効です。</p><p>もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。</p>",
"emailTestSubject": "[KEYCLOAK] - SMTPテストメッセージ",
"emailTestBody": "これはテストメッセージです",
"emailTestBodyHtml": "<p>これはテストメッセージです</p>",
"identityProviderLinkSubject": "リンク {0}",
"identityProviderLinkBody": "あなたの\"{1}\"アカウントと{2}ユーザーの\"{0}\"アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\n\n{3}\n\nこのリンクは{5}だけ有効です。\n\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。",
"identityProviderLinkBodyHtml": "<p>あなたの<b>{1}</b>アカウントと{2}ユーザーの<b>{0}</b>アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。</p><p><a href=\"{3}\">アカウントリンクの確認</a></p><p>このリンクは{5}だけ有効です。</p><p>もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。</p>",
"passwordResetSubject": "パスワードのリセット",
"passwordResetBody": "あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。",
"passwordResetBodyHtml": "<p>あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。</p><p><a href=\"{0}\">パスワードのリセット</a></p><p>このリンクは{3}だけ有効です。</p><p>もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。</p>",
"executeActionsSubject": "アカウントの更新",
"executeActionsBody": "次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。\n\n{0}\n\nこのリンクは{4}だけ有効です。\n\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。",
"executeActionsBodyHtml": "<p>次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。</p><p><a href=\"{0}\">アカウントの更新</a></p><p>このリンクは{4}だけ有効です。</p><p>管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。</p>",
"eventLoginErrorSubject": "ログインエラー",
"eventLoginErrorBody": "{0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。",
"eventLoginErrorBodyHtml": "<p>{0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。</p>",
"eventRemoveTotpSubject": "OTPの削除",
"eventRemoveTotpBody": "{0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。",
"eventRemoveTotpBodyHtml": "<p>{0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。</p>",
"eventUpdatePasswordSubject": "パスワードの更新",
"eventUpdatePasswordBody": "{0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。",
"eventUpdatePasswordBodyHtml": "<p>{0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。</p>",
"eventUpdateTotpSubject": "OTPの更新",
"eventUpdateTotpBody": "{0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。",
"eventUpdateTotpBodyHtml": "<p>{0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。</p>",
"requiredAction.CONFIGURE_TOTP": "OTPの設定",
"requiredAction.terms_and_conditions": "利用規約",
"requiredAction.UPDATE_PASSWORD": "パスワードの更新",
"requiredAction.UPDATE_PROFILE": "プロファイルの更新",
"requiredAction.VERIFY_EMAIL": "Eメールの確認",
"linkExpirationFormatter.timePeriodUnit.seconds": "秒",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "秒",
"linkExpirationFormatter.timePeriodUnit.minutes": "分",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "分",
"linkExpirationFormatter.timePeriodUnit.hours": "時間",
"linkExpirationFormatter.timePeriodUnit.hours.1": "時間",
"linkExpirationFormatter.timePeriodUnit.days": "日",
"linkExpirationFormatter.timePeriodUnit.days.1": "日",
"emailVerificationBodyCode": "次のコードを入力してメールアドレスを確認してください。\n\n{0}\n\n.",
"emailVerificationBodyCodeHtml": "<p>次のコードを入力してメールアドレスを確認してください。</p><p><b>{0}</b></p>"
},
"lt": {
"emailVerificationSubject": "El. pašto patvirtinimas",
"emailVerificationBody": "Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką. ",
"emailVerificationBodyHtml": "<p>Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tao buvote Jūs, tuomet paspauskite žemiau esančią nuorodą</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką.</p>",
"identityProviderLinkSubject": "Sąsaja {0}",
"identityProviderLinkBody": "Kažas pageidauja susieti Jūsų \"{1}\" paskyrą su \"{0}\" {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras\n\n{3}\n\nŠi nuoroda galioja {4} min.\n\nJei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.",
"identityProviderLinkBodyHtml": "<p>žas pageidauja susieti Jūsų <b>{1}</b> paskyrą su <b>{0}</b> {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras</p><p><a href=LT\"{3}\">{3}</a></p><p>Ši nuoroda galioja {4} min.</p><p>Jei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.</p>",
"passwordResetSubject": "Slaptažodžio atkūrimas",
"passwordResetBody": "Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.\n\n{0}\n\nŠi nuoroda ir kodas galioja {1} min.\n\nJei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.",
"passwordResetBodyHtml": "<p>Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda ir kodas galioja {1} min.</p><p>Jei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>",
"executeActionsSubject": "Atnaujinkite savo paskyrą",
"executeActionsBody": "Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.",
"executeActionsBodyHtml": "<p>Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>Jei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>",
"eventLoginErrorSubject": "Nesėkmingas bandymas prisijungti prie jūsų paskyros",
"eventLoginErrorBody": "Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi",
"eventLoginErrorBodyHtml": "<p>Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi</p>",
"eventRemoveTotpSubject": "OTP pašalinimas",
"eventRemoveTotpBody": "Kažkas pageidauja atsieti TOPT Jūsų {1} paskyroje su {0}. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi",
"eventRemoveTotpBodyHtml": "<p>Kažkas pageidauja atsieti TOPT Jūsų <b>{1}</b> paskyroje su <b>{0}</b>. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>",
"eventUpdatePasswordSubject": "Slaptažodžio atnaujinimas",
"eventUpdatePasswordBody": "{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi",
"eventUpdatePasswordBodyHtml": "<p>{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi</p>",
"eventUpdateTotpSubject": "OTP atnaujinimas",
"eventUpdateTotpBody": "OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi",
"eventUpdateTotpBodyHtml": "<p>OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>"
},
"nl": {
"emailVerificationSubject": "Bevestig e-mailadres",
"emailVerificationBody": "Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen \n\n{0}\n\nDeze koppeling zal binnen {3} vervallen.\n\nU kunt dit bericht negeren indien u dit account niet heeft aangemaakt.",
"emailVerificationBodyHtml": "<p>Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen</p><p><a href=\"{0}\">Koppeling naar e-mailadres bevestiging</a></p><p>Deze koppeling zal binnen {3} vervallen.</p<p>U kunt dit bericht negeren indien u dit account niet heeft aangemaakt.</p>",
"emailTestSubject": "[KEYCLOAK] - SMTP testbericht",
"emailTestBody": "Dit is een testbericht",
"emailTestBodyHtml": "<p>Dit is een testbericht</p>",
"identityProviderLinkSubject": "Koppel {0}",
"identityProviderLinkBody": "Iemand wil uw \"{1}\" account koppelen met \"{0}\" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen\n\n{3}\n\nDeze link zal over {5} vervallen.\n\nAls u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.",
"identityProviderLinkBodyHtml": "<p>Iemand wil uw \"{1}\" account koppelen met \"{0}\" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen</p><p><a href=\"{3}\">Link om accounts te koppelen</a></p><p>Deze link zal over {5} vervallen.</p><p>Als u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.</p>",
"passwordResetSubject": "Wijzig wachtwoord",
"passwordResetBody": "Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.\n\n{0}\n\nDe link en de code zullen binnen {3} vervallen.\n\nAls u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.",
"passwordResetBodyHtml": "<p>Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.</p><p><a href=\"{0}\">Wijzig aanmeldgegevens</a></p><p>De link en de code zullen binnen {3} vervallen.</p><p>Als u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.</p>",
"executeActionsSubject": "Wijzig uw account",
"executeActionsBody": "Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten. \n\n{0}\n\nDeze link zal over {4} vervallen. \n\nAls u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.",
"executeActionsBodyHtml": "<p>Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten.</p><p><a href=\"{0}\">Link naar account wijziging</a></p><p>Deze link zal over {4} vervallen.</p><p>Als u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.</p>",
"eventLoginErrorSubject": "Inlogfout",
"eventLoginErrorBody": "Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.",
"eventLoginErrorBodyHtml": "<p>Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.</p>",
"eventRemoveTotpSubject": "OTP verwijderd",
"eventRemoveTotpBody": "OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.",
"eventRemoveTotpBodyHtml": "<p>OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>",
"eventUpdatePasswordSubject": "Wachtwoord gewijzigd",
"eventUpdatePasswordBody": "Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.",
"eventUpdatePasswordBodyHtml": "<p>Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>",
"eventUpdateTotpSubject": "OTP gewijzigd",
"eventUpdateTotpBody": "OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.",
"eventUpdateTotpBodyHtml": "<p>OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>",
"linkExpirationFormatter.timePeriodUnit.seconds": "seconden",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "seconde",
"linkExpirationFormatter.timePeriodUnit.minutes": "minuten",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "minuut",
"linkExpirationFormatter.timePeriodUnit.hours": "uur",
"linkExpirationFormatter.timePeriodUnit.hours.1": "uur",
"linkExpirationFormatter.timePeriodUnit.days": "dagen",
"linkExpirationFormatter.timePeriodUnit.days.1": "dag"
},
"no": {
"emailVerificationSubject": "Bekreft e-postadresse",
"emailVerificationBody": "Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk på lenken nedenfor for å bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.",
"emailVerificationBodyHtml": "<p>Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk på lenken nedenfor for å bekrefte e-postadressen din</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.</p>",
"identityProviderLinkSubject": "Lenke {0}",
"identityProviderLinkBody": "Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk på lenken nedenfor for å koble kontoene\n\n{3}\n\nDenne lenken vil utløpe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.",
"identityProviderLinkBodyHtml": "<p>Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk på lenken nedenfor for å koble kontoene.</p><p><a href=\"{3}\">{3}</a></p><p>Denne lenken vil utløpe om {4} minutter.</p><p>Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.</p>",
"passwordResetSubject": "Tilbakestill passord",
"passwordResetBody": "Noen har bedt om å endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk på lenken nedenfor for å tilbakestille dem.\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.",
"passwordResetBodyHtml": "<p>Noen har bedt om å endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk på lenken nedenfor for å tilbakestille dem.</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.</p>",
"executeActionsSubject": "Oppdater kontoen din",
"executeActionsBody": "Administrator har anmodet at du oppdaterer din {2} konto. Klikk på lenken nedenfor for å starte denne prosessen\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret.",
"executeActionsBodyHtml": "<p>Administrator har anmodet at du oppdaterer din {2} konto. Klikk på linken nedenfor for å starte denne prosessen.</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret. </p>",
"eventLoginErrorSubject": "Innlogging feilet",
"eventLoginErrorBody": "Et mislykket innloggingsforsøk ble oppdaget på din konto på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.",
"eventLoginErrorBodyHtml": "<p>Et mislykket innloggingsforsøk ble oppdaget på din konto på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>",
"eventRemoveTotpSubject": "Fjern engangskode",
"eventRemoveTotpBody": "Engangskode ble fjernet fra kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.",
"eventRemoveTotpBodyHtml": "<p>Engangskode ble fjernet fra kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>",
"eventUpdatePasswordSubject": "Oppdater passord",
"eventUpdatePasswordBody": "Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.",
"eventUpdatePasswordBodyHtml": "<p>Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>",
"eventUpdateTotpSubject": "Oppdater engangskode",
"eventUpdateTotpBody": "Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.",
"eventUpdateTotpBodyHtml": "<p>Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>"
},
"pl": {
"emailVerificationSubject": "Zweryfikuj email",
"emailVerificationBody": "Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij poniższy link, aby zweryfikować swój adres e-mail \n\n{0}\n\nLink ten wygaśnie w ciągu {3}.\n\nJeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.",
"emailVerificationBodyHtml": "<p>Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij <a href=\"{0}\">ten link</a> aby zweryfikować swój adres e-mail</p><p>Link ten wygaśnie w ciągu {3}</p><p>Jeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.</p>",
"emailTestSubject": "[KEYCLOAK] - wiadomość testowa SMTP",
"emailTestBody": "To jest wiadomość testowa",
"emailTestBodyHtml": "<p>To jest wiadomość testowa</p>",
"identityProviderLinkSubject": "Link {0}",
"identityProviderLinkBody": "Ktoś chce połączyć Twoje konto \"{1}\" z kontem \"{0}\" użytkownika {2}. Jeśli to Ty, kliknij poniższy link by połączyć konta\n\n{3}\n\nTen link wygaśnie w ciągu {5}.\n\nJeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.",
"identityProviderLinkBodyHtml": "<p>Ktoś chce połączyć Twoje konto <b>{1}</b> z kontem <b>{0}</b> użytkownika {2}. Jeśli to Ty, kliknij <a href=\"{3}\">ten link</a> by połączyć konta.</p><p>Ten link wygaśnie w ciągu {5}.</p><p>Jeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.</p>",
"passwordResetSubject": "Zresetuj hasło",
"passwordResetBody": "Ktoś właśnie poprosił o zmianę danych logowania Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.\n\n{0}\n\nTen link i kod stracą ważność w ciągu {3}.\n\nJeśli nie chcesz zresetować swoich danych logowania, po prostu zignoruj tę wiadomość i nic się nie zmieni.",
"passwordResetBodyHtml": "<p>Ktoś właśnie poprosił o zmianę poświadczeń Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.</p><p><a href=\"{0}\">Link do resetowania poświadczeń</a></p><p>Ten link wygaśnie w ciągu {3}.</p><p>Jeśli nie chcesz resetować swoich poświadczeń, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>",
"executeActionsSubject": "Zaktualizuj swoje konto",
"executeActionsBody": "Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij poniższy link, aby rozpocząć ten proces.\n\n{0}\n\nTen link wygaśnie w ciągu {4}.\n\nJeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.",
"executeActionsBodyHtml": "<p>Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij <a href=\"{0}\">ten link</a>, aby rozpocząć proces.</p><p>Link ten wygaśnie w ciągu {4}.</p><p>Jeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>",
"eventLoginErrorSubject": "Błąd logowania",
"eventLoginErrorBody": "Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.",
"eventLoginErrorBodyHtml": "<p>Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>",
"eventRemoveTotpSubject": "Usuń hasło jednorazowe (OTP)",
"eventRemoveTotpBody": "Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.",
"eventRemoveTotpBodyHtml": "<p>Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>",
"eventUpdatePasswordSubject": "Aktualizuj hasło",
"eventUpdatePasswordBody": "Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.",
"eventUpdatePasswordBodyHtml": "<p>Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>",
"eventUpdateTotpSubject": "Aktualizuj hasło jednorazowe (OTP)",
"eventUpdateTotpBody": "Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.",
"eventUpdateTotpBodyHtml": "<p>Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>",
"requiredAction.CONFIGURE_TOTP": "Konfiguracja hasła jednorazowego (OTP)",
"requiredAction.terms_and_conditions": "Regulamin",
"requiredAction.UPDATE_PASSWORD": "Aktualizacja hasła",
"requiredAction.UPDATE_PROFILE": "Aktualizacja profilu",
"requiredAction.VERIFY_EMAIL": "Weryfikacja adresu e-mail",
"linkExpirationFormatter.timePeriodUnit.seconds": "sekund",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "sekunda",
"linkExpirationFormatter.timePeriodUnit.seconds.2": "sekundy",
"linkExpirationFormatter.timePeriodUnit.seconds.3": "sekundy",
"linkExpirationFormatter.timePeriodUnit.seconds.4": "sekundy",
"linkExpirationFormatter.timePeriodUnit.minutes": "minut",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "minuta",
"linkExpirationFormatter.timePeriodUnit.minutes.2": "minuty",
"linkExpirationFormatter.timePeriodUnit.minutes.3": "minuty",
"linkExpirationFormatter.timePeriodUnit.minutes.4": "minuty",
"linkExpirationFormatter.timePeriodUnit.hours": "godzin",
"linkExpirationFormatter.timePeriodUnit.hours.1": "godzina",
"linkExpirationFormatter.timePeriodUnit.hours.2": "godziny",
"linkExpirationFormatter.timePeriodUnit.hours.3": "godziny",
"linkExpirationFormatter.timePeriodUnit.hours.4": "godziny",
"linkExpirationFormatter.timePeriodUnit.days": "dni",
"linkExpirationFormatter.timePeriodUnit.days.1": "dzień",
"emailVerificationBodyCode": "Potwierdź swój adres e-mail wprowadzając następujący kod.\n\n{0}\n\n.",
"emailVerificationBodyCodeHtml": "<p>Potwierdź swój adres e-mail, wprowadzając następujący kod.</p><p><b>{0}</b></p>"
},
"pt-BR": {
"emailVerificationSubject": "Verificação de e-mail",
"emailVerificationBody": "Alguém criou uma conta {2} com este endereço de e-mail. Se foi você, clique no link abaixo para verificar o seu endereço de email\n\n{0}\n\nEste link irá expirar dentro de {3}.\n\nSe não foi você que criou esta conta, basta ignorar esta mensagem.",
"emailVerificationBodyHtml": "<p>Alguém criou uma conta {2} com este endereço de e-mail. Se foi você, clique no link abaixo para verificar o seu endereço de email</p><p><a href=\"{0}\">{0}</a></p><p>Este link irá expirar dentro de {3}.</p><p>Se não foi você que criou esta conta, basta ignorar esta mensagem.</p>",
"emailTestSubject": "[KEYCLOAK] - SMTP mensagem de teste",
"emailTestBody": "Esta é uma mensagem de teste",
"emailTestBodyHtml": "<p>Esta é uma mensagem de teste</p>",
"identityProviderLinkSubject": "Vincular {0}",
"identityProviderLinkBody": "Alguém quer vincular sua conta \"{1}\" com a conta \"{0}\" do usuário {2} . Se foi você, clique no link abaixo para vincular as contas.\n\n{3}\n\nEste link irá expirar em {5}.\n\nSe você não quer vincular a conta, apenas ignore esta mensagem. Se você vincular as contas, você será capaz de logar em {1} atrávés de {0}.",
"identityProviderLinkBodyHtml": "<p>Alguém quer vincular sua conta <b>{1}</b> com a conta <b>{0}</b> do usuário {2} . Se foi você, clique no link abaixo para vincular as contas.</p><p><a href=\"{3}\">{3}</a></p><p>Este link irá expirar em {5}.</p><p>Se você não quer vincular a conta, apenas ignore esta mensagem. Se você vincular as contas, você será capaz de logar em {1} atrávés de {0}.</p>",
"passwordResetSubject": "Redefinição de senha",
"passwordResetBody": "Alguém solicitou uma alteração de senha da sua conta {2}. Se foi você, clique no link abaixo para redefini-la.\n\n{0}\n\nEste link e código expiram em {3}.\n\nSe você não deseja redefinir sua senha, apenas ignore esta mensagem e nada será alterado.",
"passwordResetBodyHtml": "<p>Alguém solicitou uma alteração de senha da sua conta {2}. Se foi você, clique no link abaixo para redefini-la.</p><p><a href=\"{0}\">Link para redefinir a senha</a></p><p>Este link irá expirar em {3}.</p><p>Se você não deseja redefinir sua senha, apenas ignore esta mensagem e nada será alterado.</p>",
"executeActionsSubject": "Atualização de conta",
"executeActionsBody": "O administrador solicitou que você atualize sua conta {2} executando a(s) seguinte(s) ação(ões): {3}. Clique no link abaixo para iniciar o processo.\n\n{0}\n\nEste link irá expirar em {4}.\n\nSe você não tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada será alterado.",
"executeActionsBodyHtml": "<p>O administrador solicitou que você atualize sua conta {2} executando a(s) seguinte(s) ação(ões): {3}. Clique no link abaixo para iniciar o processo.</p><p><a href=\"{0}\">Link to account update</a></p><p>Este link irá expirar em {4}.</p><p>Se você não tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada será alterado.</p>",
"eventLoginErrorSubject": "Erro de login",
"eventLoginErrorBody": "Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.",
"eventLoginErrorBodyHtml": "<p>Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>",
"eventRemoveTotpSubject": "Remover OTP",
"eventRemoveTotpBody": "OTP foi removido da sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.",
"eventRemoveTotpBodyHtml": "<p>OTP foi removido da sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>",
"eventUpdatePasswordSubject": "Atualização de senha",
"eventUpdatePasswordBody": "Sua senha foi alterada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.",
"eventUpdatePasswordBodyHtml": "<p>Sua senha foi alterada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>",
"eventUpdateTotpSubject": "Atualização OTP",
"eventUpdateTotpBody": "OTP foi atualizado para a sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.",
"eventUpdateTotpBodyHtml": "<p>OTP foi atualizado para a sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>",
"requiredAction.CONFIGURE_TOTP": "Configurar OTP",
"requiredAction.terms_and_conditions": "Termos e Condições",
"requiredAction.UPDATE_PASSWORD": "Atualizar Senha",
"requiredAction.UPDATE_PROFILE": "Atualizar Perfil",
"requiredAction.VERIFY_EMAIL": "Verificar E-mail",
"linkExpirationFormatter.timePeriodUnit.seconds": "segundos",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "segundo",
"linkExpirationFormatter.timePeriodUnit.minutes": "minutos",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "minuto",
"linkExpirationFormatter.timePeriodUnit.hours": "horas",
"linkExpirationFormatter.timePeriodUnit.hours.1": "hora",
"linkExpirationFormatter.timePeriodUnit.days": "dias",
"linkExpirationFormatter.timePeriodUnit.days.1": "dia",
"emailVerificationBodyCode": "Verifique seu endereço de e-mail digitando o seguinte código.\n\n{0}\n\n.",
"emailVerificationBodyCodeHtml": "<p>Verifique seu endereço de e-mail digitando o seguinte código.</p><p><b>{0}</b></p>"
},
"ru": {
"emailVerificationSubject": "Подтверждение E-mail",
"emailVerificationBody": "Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо.",
"emailVerificationBodyHtml": "<p>Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не создавали учетную запись, просто проигнорируйте это письмо.</p>",
"identityProviderLinkSubject": "Ссылка {0}",
"identityProviderLinkBody": "Кто-то хочет связать вашу учетную запись \"{1}\" с \"{0}\" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\n\n{3}\n\nЭта ссылка устареет через {4} минут.\n\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.",
"identityProviderLinkBodyHtml": "<p>Кто-то хочет связать вашу учетную запись <b>{1}</b> с <b>{0}</b> учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи</p><p><a href=\"{3}\">{3}</a></p><p>Эта ссылка устареет через {4} минут.</p><p>Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.</p>",
"passwordResetSubject": "Сброс пароля",
"passwordResetBody": "Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо.",
"passwordResetBodyHtml": "<p>Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.</p>",
"executeActionsSubject": "Обновление Вашей учетной записи",
"executeActionsBody": "Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.",
"executeActionsBodyHtml": "<p>Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.</p>",
"eventLoginErrorSubject": "Ошибка входа",
"eventLoginErrorBody": "Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.",
"eventLoginErrorBodyHtml": "<p>Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>",
"eventRemoveTotpSubject": "Удалить OTP",
"eventRemoveTotpBody": "OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.",
"eventRemoveTotpBodyHtml": "<p>OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>",
"eventUpdatePasswordSubject": "Обновление пароля",
"eventUpdatePasswordBody": "Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.",
"eventUpdatePasswordBodyHtml": "<p>Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>",
"eventUpdateTotpSubject": "Обновление OTP",
"eventUpdateTotpBody": "OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.",
"eventUpdateTotpBodyHtml": "<p>OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>"
},
"sk": {
"emailVerificationSubject": "Overenie e-mailu",
"emailVerificationBody": "Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz a overte svoju e-mailovú adresu \n\n{0}\n\nTento odkaz uplynie do {1} minút.\n\nAk ste tento účet nevytvorili, ignorujte túto správu.",
"emailVerificationBodyHtml": "<p>Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz na overenie svojej e-mailovej adresy.</p><p><a href=\"{0}\"> Odkaz na overenie e-mailovej adresy </a></p><p>Platnosť odkazu vyprší za {1} minút.</p><p> Ak ste tento účet nevytvorili, ignorujte túto správu.</p>",
"emailTestSubject": "[KEYCLOAK] - Testovacia správa SMTP",
"emailTestBody": "Toto je skúšobná správa",
"emailTestBodyHtml": "<p>Toto je skúšobná správa</p>",
"identityProviderLinkSubject": "Odkaz {0}",
"identityProviderLinkBody": "Niekto chce prepojiť váš účet \"{1}\" s účtom {0}\"používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty. \n\n{3}\n\nTento odkaz uplynie do {4} minút.\n\nAk nechcete prepojiť účet, jednoducho ignorujte túto správu , Ak prepájate účty, budete sa môcť prihlásiť do {1} až {0}.",
"identityProviderLinkBodyHtml": "<p>Niekto chce prepojiť váš účet <b>{1}</b> s účtom <b>{0}</b> používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty</p><p><a href=\"{3}\">Odkaz na potvrdenie prepojenia účtu </a></p><p> Platnosť tohto odkazu vyprší v rámci {4} minút.</p><p>Ak nechcete prepojiť účet, ignorujte túto správu. Ak prepojujete účty, budete sa môcť prihlásiť do {1} až {0}.</p>",
"passwordResetSubject": "Obnovenie hesla",
"passwordResetBody": "Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknite na odkaz uvedený nižšie, aby ste ich vynulovali.\n\n{0}\n\nTento odkaz a kód uplynie do {1} minút.\n\nAk nechcete obnoviť svoje poverenia , ignorujte túto správu a nič sa nezmení.",
"passwordResetBodyHtml": "<p>Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknutím na odkaz nižšie ich resetujte.</p><p><a href=\"{0}\">Odkaz na obnovenie poverení </a></p><p>Platnosť tohto odkazu vyprší v priebehu {1} minút.</p><p>Ak nechcete obnoviť svoje poverenia, ignorujte túto správu a nič sa nezmení.</p>",
"executeActionsSubject": "Aktualizujte svoj účet",
"executeActionsBody": "Váš administrátor práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.\n\n{0}\n\nTento odkaz vyprší za {1} minúty.\n\nAk si nie ste vedomý, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič bude zmenené.",
"executeActionsBodyHtml": "<p>Váš správca práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.</p><p><a href=\"{0}\"> Odkaz na aktualizáciu účtu </a></p><p> Platnosť tohto odkazu uplynie do {1} minúty.</p><p> Ak si nie ste vedomí, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič sa nezmení.</p>",
"eventLoginErrorSubject": "Chyba prihlásenia",
"eventLoginErrorBody": "Bol zistený neúspešný pokus o prihlásenie do vášho účtu v {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.",
"eventLoginErrorBodyHtml": "<p>Bol zistený neúspešný pokus o prihlásenie vášho účtu na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>",
"eventRemoveTotpSubject": "Odstrániť TOTP",
"eventRemoveTotpBody": "OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.",
"eventRemoveTotpBodyHtml": "<p>OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>",
"eventUpdatePasswordSubject": "Aktualizovať heslo",
"eventUpdatePasswordBody": "Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.",
"eventUpdatePasswordBodyHtml": "<p>Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>",
"eventUpdateTotpSubject": "Aktualizácia TOTP",
"eventUpdateTotpBody": "TOTP bol aktualizovaný pre váš účet na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.",
"eventUpdateTotpBodyHtml": "<p>TOTP bol aktualizovaný pre váš účet dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>",
"requiredAction.CONFIGURE_TOTP": "Konfigurácia OTP",
"requiredAction.terms_and_conditions": "Zmluvné podmienky",
"requiredAction.UPDATE_PASSWORD": "Aktualizovať heslo",
"requiredAction.UPDATE_PROFILE": "Aktualizovať profil",
"requiredAction.VERIFY_EMAIL": "Overiť e-mail",
"linkExpirationFormatter.timePeriodUnit.seconds": "sekundy",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "sekunda",
"linkExpirationFormatter.timePeriodUnit.minutes": "minuty",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "minúta",
"linkExpirationFormatter.timePeriodUnit.hours": "hodiny",
"linkExpirationFormatter.timePeriodUnit.hours.1": "hodina",
"linkExpirationFormatter.timePeriodUnit.days": "dni",
"linkExpirationFormatter.timePeriodUnit.days.1": "deň "
},
"sv": {
"emailVerificationSubject": "Verifiera e-post",
"emailVerificationBody": "Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.",
"emailVerificationBodyHtml": "<p>Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.</p>",
"identityProviderLinkSubject": "Länk {0}",
"identityProviderLinkBody": "Någon vill länka ditt \"{1}\" konto med \"{0}\" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\n\n{3}\n\nDen här länken kommer att upphöra inom {4} minuter.\n\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.",
"identityProviderLinkBodyHtml": "<p>Någon vill länka ditt <b>{1}</b> konto med <b>{0}</b> kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona</p><p><a href=\"{3}\">{3}</a></p><p>Den här länken kommer att upphöra inom {4} minuter.</p><p>Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.</p>",
"passwordResetSubject": "Återställ lösenord",
"passwordResetBody": "Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.\n\n{0}\n\nDen här länken och koden kommer att upphöra inom {1} minuter.\n\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.",
"passwordResetBodyHtml": "<p>Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken och koden kommer att upphöra inom {1} minuter.</p><p>Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>",
"executeActionsSubject": "Uppdatera ditt konto",
"executeActionsBody": "Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.",
"executeActionsBodyHtml": "<p>Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>",
"eventLoginErrorSubject": "Inloggningsfel",
"eventLoginErrorBody": "Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.",
"eventLoginErrorBodyHtml": "<p>Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>",
"eventRemoveTotpSubject": "Ta bort OTP",
"eventRemoveTotpBody": "OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.",
"eventRemoveTotpBodyHtml": "<p>OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>",
"eventUpdatePasswordSubject": "Uppdatera lösenord",
"eventUpdatePasswordBody": "Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.",
"eventUpdatePasswordBodyHtml": "<p>Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>",
"eventUpdateTotpSubject": "Uppdatera OTP",
"eventUpdateTotpBody": "OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.",
"eventUpdateTotpBodyHtml": "<p>OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>"
},
"tr": {
"emailVerificationSubject": "E-postayı doğrula",
"emailVerificationBody": "Birisi bu e-posta adresiyle bir {2} hesap oluşturdu. Bu sizseniz, e-posta adresinizi doğrulamak için aşağıdaki bağlantıya tıklayın\n\n{0}\n\nBu bağlantı {3} içinde sona erecek.\n\nBu hesabı oluşturmadıysanız, sadece bu iletiyi yoksayınız.",
"emailVerificationBodyHtml": "<p>Birisi bu e-posta adresiyle bir {2} hesap oluşturdu. Bu sizseniz, e-posta adresinizi doğrulamak için aşağıdaki bağlantıyı tıklayın.</p><p><a href=\"{0}\">E-posta adresi doğrulama adresi</a></p><p>Bu bağlantının süresi {3} içerisinde sona erecek.</p><p>Bu hesabı siz oluşturmadıysanız, bu mesajı göz ardı edin.</p>",
"emailTestSubject": "[KEYCLOAK] - SMTP test mesajı",
"emailTestBody": "Bu bir test mesajı",
"emailTestBodyHtml": "<p>Bu bir test mesajı</p>",
"identityProviderLinkSubject": "Link {0}",
"identityProviderLinkBody": "Birisi \"{1}\" hesabınızı \"{0}\" kullanıcı hesabı {2} ile bağlamak istiyor. Bu sizseniz, hesapları bağlamak için aşağıdaki bağlantıyı tıklayın:\n\n{3}\n\nBu bağlantı {5} içinde sona erecek.\n\nHesabınızı bağlamak istemiyorsanız bu mesajı göz ardı edin. Hesapları bağlarsanız, {1} ile {0} arasında oturum açabilirsiniz.",
"identityProviderLinkBodyHtml": "<p>Birisi <b> {1} </ b> hesabınızı {2} kullanıcısı <b> {0} </ b> hesabına bağlamak istiyor. Bu sizseniz, bağlantı vermek için aşağıdaki bağlantıyı tıklayın</p><p><a href=\"{3}\">Hesap bağlantısını onaylamak için bağlantı</a></p><p>Bu bağlantının süresi {5} içerisinde sona erecek.</p><p>Hesabı bağlamak istemiyorsanız, bu mesajı göz ardı edin. Hesapları bağlarsanız, {1} ile {0} arasında oturum açabilirsiniz.</p>",
"passwordResetSubject": "Şifreyi sıfırla",
"passwordResetBody": "Birisi, {2} hesabınızın kimlik bilgilerini değiştirmeyi istedi.Bu sizseniz, sıfırlamak için aşağıdaki bağlantıyı tıklayın.\n\n{0}\n\nBu bağlantı ve kod {3} içinde sona erecek.\n\nFakat bilgilerinizi sıfırlamak istemiyorsanız, Sadece bu mesajı görmezden gelin ve hiçbir şey değişmeyecek.",
"passwordResetBodyHtml": "<p>Birisi, {2} hesabınızın kimlik bilgilerini değiştirmeyi istedi. Sizseniz, sıfırlamak için aşağıdaki linke tıklayınız.</p><p><a href=\"{0}\">Kimlik bilgilerini sıfırlamak için bağlantı</a></p><p>Bu bağlantının süresi {3} içerisinde sona erecek.</p><p>Kimlik bilgilerinizi sıfırlamak istemiyorsanız, bu mesajı göz ardı edin.</p>",
"executeActionsSubject": "Hesabınızı Güncelleyin",
"executeActionsBody": "Yöneticiniz aşağıdaki işlemleri gerçekleştirerek {2} hesabınızı güncelledi: {3}. Bu işlemi başlatmak için aşağıdaki linke tıklayın.\n\n{0}\n\nBu bağlantının süresi {4} içerisinde sona erecek.\n\nYöneticinizin bunu istediğinden habersizseniz, bu mesajı göz ardı edin ve hiçbir şey değişmez.",
"executeActionsBodyHtml": "<p>Yöneticiniz aşağıdaki işlemleri gerçekleştirerek {2} hesabınızı güncelledi: {3}. Bu işlemi başlatmak için aşağıdaki linke tıklayın.</p><p><a href=\"{0}\">Hesap güncelleme bağlantısı</a></p><p>Bu bağlantının süresi {4} içerisinde sona erecek.</p><p>Yöneticinizin bunu istediğinden habersizseniz, bu mesajı göz ardı edin ve hiçbir şey değişmez.</p>",
"eventLoginErrorSubject": "Giriş hatası",
"eventLoginErrorBody": "{1} 'den {0} tarihinde başarısız bir giriş denemesi yapıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.",
"eventLoginErrorBodyHtml": "<p>{1} 'den {0} tarihinde başarısız bir giriş denemesi yapıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>",
"eventRemoveTotpSubject": "OTP'yi kaldır",
"eventRemoveTotpBody": "OTP, {0} tarihinden {1} tarihinde hesabınızdan kaldırıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.",
"eventRemoveTotpBodyHtml": "<p>OTP, {0} tarihinden {1} tarihinde hesabınızdan kaldırıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>",
"eventUpdatePasswordSubject": "Şifreyi güncelle",
"eventUpdatePasswordBody": "Şifreniz {0} tarihinde {0} tarihinde değiştirildi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.",
"eventUpdatePasswordBodyHtml": "<p>Şifreniz {0} tarihinde {0} tarihinde değiştirildi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>",
"eventUpdateTotpSubject": "OTP'yi Güncelle",
"eventUpdateTotpBody": "OTP, {0} tarihinden {1} tarihinde hesabınız için güncellendi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.",
"eventUpdateTotpBodyHtml": "<p>OTP, {0} tarihinden {1} tarihinde hesabınız için güncellendi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>",
"requiredAction.CONFIGURE_TOTP": "OTP'yi yapılandır",
"requiredAction.terms_and_conditions": "Şartlar ve Koşullar",
"requiredAction.UPDATE_PASSWORD": "Şifre Güncelleme",
"requiredAction.UPDATE_PROFILE": "Profilleri güncelle",
"requiredAction.VERIFY_EMAIL": "E-mail doğrula",
"linkExpirationFormatter.timePeriodUnit.seconds": "saniye",
"linkExpirationFormatter.timePeriodUnit.seconds.1": "saniye",
"linkExpirationFormatter.timePeriodUnit.minutes": "dakika",
"linkExpirationFormatter.timePeriodUnit.minutes.1": "dakika",
"linkExpirationFormatter.timePeriodUnit.hours": "saat",
"linkExpirationFormatter.timePeriodUnit.hours.1": "saat",
"linkExpirationFormatter.timePeriodUnit.days": "gün",
"linkExpirationFormatter.timePeriodUnit.days.1": "gün",
"emailVerificationBodyCode": "Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.\n\n{0}\n\n.",
"emailVerificationBodyCodeHtml": "<p>Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.</p><p><b>{0}</b></p>"
},
"zh-CN": {
"emailVerificationSubject": "验证电子邮件",
"emailVerificationBody": "用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您没有注册用户请忽略这条消息。",
"emailVerificationBodyHtml": "<p>用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后过期.</p><p>如果您没有注册用户,请忽略这条消息。</p>",
"identityProviderLinkSubject": "链接 {0}",
"identityProviderLinkBody": "有用户想要将账户 \"{1}\" 与用户{2}的账户\"{0}\" 做链接 . 如果是本人操作,请点击以下链接完成链接请求\n\n{3}\n\n这个链接会在 {4} 分钟后过期.\n\n如非本人操作请忽略这条消息。如果您链接账户您将可以通过{0}登录账户 {1}.",
"identityProviderLinkBodyHtml": "<p>有用户想要将账户 <b>{1}</b> 与用户{2} 的账户<b>{0}</b> 做链接 . 如果是本人操作,请点击以下链接完成链接请求</p><p><a href=\"{3}\">{3}</a></p><p>这个链接会在 {4} 分钟后过期。</p><p>如非本人操作,请忽略这条消息。如果您链接账户,您将可以通过{0}登录账户 {1}.</p>",
"passwordResetSubject": "重置密码",
"passwordResetBody": "有用户要求修改账户 {2} 的密码.如是本人操作,请点击下面链接进行重置.\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您不想重置您的密码请忽略这条消息密码不会改变。",
"passwordResetBodyHtml": "<p>有用户要求修改账户 {2} 的密码如是本人操作,请点击下面链接进行重置.</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后过期</p><p>如果您不想重置您的密码,请忽略这条消息,密码不会改变。</p>",
"executeActionsSubject": "更新您的账户",
"executeActionsBody": "您的管理员要求您更新账户 {2}. 点击以下链接开始更新\n\n{0}\n\n这个链接会在 {1} 分钟后失效.\n\n如果您不知道管理员要求更新账户信息请忽略这条消息。账户信息不会修改。",
"executeActionsBodyHtml": "<p>您的管理员要求您更新账户{2}. 点击以下链接开始更新.</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后失效.</p><p>如果您不知道管理员要求更新账户信息,请忽略这条消息。账户信息不会修改。</p>",
"eventLoginErrorSubject": "登录错误",
"eventLoginErrorBody": "在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.",
"eventLoginErrorBodyHtml": "<p>在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.</p>",
"eventRemoveTotpSubject": "删除 OTP",
"eventRemoveTotpBody": "OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员",
"eventRemoveTotpBodyHtml": "<p>OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员。</p>",
"eventUpdatePasswordSubject": "更新密码",
"eventUpdatePasswordBody": "您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员",
"eventUpdatePasswordBodyHtml": "<p>您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员</p>",
"eventUpdateTotpSubject": "更新 OTP",
"eventUpdateTotpBody": "您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。",
"eventUpdateTotpBodyHtml": "<p>您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。</p>"
}
};
/* spell-checker: enable */
//# sourceMappingURL=email.js.map

Some files were not shown because too many files have changed in this diff Show More