keycloakify 9.6.7 → 10.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/account/Template.js +34 -14
- package/account/Template.js.map +1 -1
- package/account/i18n/baseMessages/de.d.ts +1 -1
- package/account/i18n/baseMessages/de.js +1 -1
- package/account/i18n/baseMessages/de.js.map +1 -1
- package/account/i18n/baseMessages/en.d.ts +2 -0
- package/account/i18n/baseMessages/en.js +2 -0
- package/account/i18n/baseMessages/en.js.map +1 -1
- package/account/i18n/baseMessages/es.d.ts +230 -0
- package/account/i18n/baseMessages/es.js +231 -1
- package/account/i18n/baseMessages/es.js.map +1 -1
- package/account/i18n/baseMessages/index.d.ts +353 -407
- package/account/i18n/baseMessages/index.js +1 -0
- package/account/i18n/baseMessages/index.js.map +1 -1
- package/account/i18n/baseMessages/pl.d.ts +115 -1
- package/account/i18n/baseMessages/pl.js +115 -1
- package/account/i18n/baseMessages/pl.js.map +1 -1
- package/account/i18n/baseMessages/tr.d.ts +1 -1
- package/account/i18n/baseMessages/tr.js +1 -1
- package/account/i18n/baseMessages/tr.js.map +1 -1
- package/account/i18n/baseMessages/uk.d.ts +337 -0
- package/account/i18n/baseMessages/uk.js +342 -0
- package/account/i18n/baseMessages/uk.js.map +1 -0
- package/account/i18n/baseMessages/zh-CN.d.ts +10 -0
- package/account/i18n/baseMessages/zh-CN.js +10 -0
- package/account/i18n/baseMessages/zh-CN.js.map +1 -1
- package/bin/constants.d.ts +0 -1
- package/bin/constants.js +1 -2
- package/bin/constants.js.map +1 -1
- package/bin/keycloakify/buildJars/buildJar.d.ts +14 -0
- package/bin/keycloakify/buildJars/buildJar.js +224 -0
- package/bin/keycloakify/buildJars/buildJar.js.map +1 -0
- package/bin/keycloakify/buildJars/buildJars.d.ts +10 -0
- package/bin/keycloakify/buildJars/buildJars.js +95 -0
- package/bin/keycloakify/buildJars/buildJars.js.map +1 -0
- package/bin/keycloakify/buildJars/extensionVersions.d.ts +12 -0
- package/bin/keycloakify/buildJars/extensionVersions.js +7 -0
- package/bin/keycloakify/buildJars/extensionVersions.js.map +1 -0
- package/bin/keycloakify/buildJars/generatePom.d.ts +13 -0
- package/bin/keycloakify/buildJars/generatePom.js +95 -0
- package/bin/keycloakify/buildJars/generatePom.js.map +1 -0
- package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.d.ts +6 -0
- package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js +35 -0
- package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js.map +1 -0
- package/bin/keycloakify/buildJars/index.d.ts +1 -0
- package/bin/keycloakify/buildJars/index.js +18 -0
- package/bin/keycloakify/buildJars/index.js.map +1 -0
- package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.d.ts +0 -8
- package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js +1 -3
- package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js.map +1 -1
- package/bin/keycloakify/buildOptions/buildOptions.d.ts +0 -2
- package/bin/keycloakify/buildOptions/buildOptions.js +3 -5
- package/bin/keycloakify/buildOptions/buildOptions.js.map +1 -1
- package/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +105 -234
- package/bin/keycloakify/generateFtl/generateFtl.js +17 -39
- package/bin/keycloakify/generateFtl/generateFtl.js.map +1 -1
- package/bin/keycloakify/generateFtl/pageId.d.ts +1 -1
- package/bin/keycloakify/generateFtl/pageId.js +11 -3
- package/bin/keycloakify/generateFtl/pageId.js.map +1 -1
- package/bin/keycloakify/generateStartKeycloakTestingContainer.d.ts +0 -1
- package/bin/keycloakify/generateStartKeycloakTestingContainer.js +3 -6
- package/bin/keycloakify/generateStartKeycloakTestingContainer.js.map +1 -1
- package/bin/keycloakify/generateTheme/bringInAccountV1.d.ts +1 -1
- package/bin/keycloakify/generateTheme/bringInAccountV1.js +5 -9
- package/bin/keycloakify/generateTheme/bringInAccountV1.js.map +1 -1
- package/bin/keycloakify/generateTheme/generateSrcMainResources.d.ts +21 -0
- package/bin/keycloakify/generateTheme/generateSrcMainResources.js +340 -0
- package/bin/keycloakify/generateTheme/generateSrcMainResources.js.map +1 -0
- package/bin/keycloakify/generateTheme/generateTheme.d.ts +5 -13
- package/bin/keycloakify/generateTheme/generateTheme.js +30 -293
- package/bin/keycloakify/generateTheme/generateTheme.js.map +1 -1
- package/bin/keycloakify/generateTheme/generateThemeVariants.d.ts +5 -0
- package/bin/keycloakify/generateTheme/generateThemeVariants.js +67 -0
- package/bin/keycloakify/generateTheme/generateThemeVariants.js.map +1 -0
- package/bin/keycloakify/generateTheme/readFieldNameUsage.js +53 -18
- package/bin/keycloakify/generateTheme/readFieldNameUsage.js.map +1 -1
- package/bin/keycloakify/keycloakify.js +28 -104
- package/bin/keycloakify/keycloakify.js.map +1 -1
- package/lib/useGetClassName.js +2 -2
- package/lib/useGetClassName.js.map +1 -1
- package/login/Fallback.d.ts +7 -1
- package/login/Fallback.js +32 -8
- package/login/Fallback.js.map +1 -1
- package/login/Template.js +76 -20
- package/login/Template.js.map +1 -1
- package/login/TemplateProps.d.ts +4 -2
- package/login/UserProfileFormFields.d.ts +22 -0
- package/login/UserProfileFormFields.js +327 -0
- package/login/UserProfileFormFields.js.map +1 -0
- package/login/i18n/baseMessages/ar.d.ts +3 -0
- package/login/i18n/baseMessages/ar.js +3 -0
- package/login/i18n/baseMessages/ar.js.map +1 -1
- package/login/i18n/baseMessages/ca.d.ts +1 -0
- package/login/i18n/baseMessages/ca.js +1 -0
- package/login/i18n/baseMessages/ca.js.map +1 -1
- package/login/i18n/baseMessages/cs.d.ts +3 -0
- package/login/i18n/baseMessages/cs.js +3 -0
- package/login/i18n/baseMessages/cs.js.map +1 -1
- package/login/i18n/baseMessages/da.d.ts +1 -0
- package/login/i18n/baseMessages/da.js +1 -0
- package/login/i18n/baseMessages/da.js.map +1 -1
- package/login/i18n/baseMessages/de.d.ts +1 -0
- package/login/i18n/baseMessages/de.js +1 -0
- package/login/i18n/baseMessages/de.js.map +1 -1
- package/login/i18n/baseMessages/el.d.ts +1 -0
- package/login/i18n/baseMessages/el.js +1 -0
- package/login/i18n/baseMessages/el.js.map +1 -1
- package/login/i18n/baseMessages/en.d.ts +7 -0
- package/login/i18n/baseMessages/en.js +23 -16
- package/login/i18n/baseMessages/en.js.map +1 -1
- package/login/i18n/baseMessages/es.d.ts +239 -0
- package/login/i18n/baseMessages/es.js +240 -1
- package/login/i18n/baseMessages/es.js.map +1 -1
- package/login/i18n/baseMessages/fa.d.ts +1 -0
- package/login/i18n/baseMessages/fa.js +1 -0
- package/login/i18n/baseMessages/fa.js.map +1 -1
- package/login/i18n/baseMessages/fi.d.ts +1 -0
- package/login/i18n/baseMessages/fi.js +1 -0
- package/login/i18n/baseMessages/fi.js.map +1 -1
- package/login/i18n/baseMessages/fr.d.ts +1 -0
- package/login/i18n/baseMessages/fr.js +2 -1
- package/login/i18n/baseMessages/fr.js.map +1 -1
- package/login/i18n/baseMessages/hu.d.ts +1 -0
- package/login/i18n/baseMessages/hu.js +1 -0
- package/login/i18n/baseMessages/hu.js.map +1 -1
- package/login/i18n/baseMessages/index.d.ts +211 -416
- package/login/i18n/baseMessages/index.js +1 -0
- package/login/i18n/baseMessages/index.js.map +1 -1
- package/login/i18n/baseMessages/it.d.ts +1 -0
- package/login/i18n/baseMessages/it.js +1 -0
- package/login/i18n/baseMessages/it.js.map +1 -1
- package/login/i18n/baseMessages/ja.d.ts +1 -0
- package/login/i18n/baseMessages/ja.js +1 -0
- package/login/i18n/baseMessages/ja.js.map +1 -1
- package/login/i18n/baseMessages/lt.d.ts +1 -0
- package/login/i18n/baseMessages/lt.js +1 -0
- package/login/i18n/baseMessages/lt.js.map +1 -1
- package/login/i18n/baseMessages/lv.d.ts +1 -0
- package/login/i18n/baseMessages/lv.js +1 -0
- package/login/i18n/baseMessages/lv.js.map +1 -1
- package/login/i18n/baseMessages/nl.d.ts +1 -0
- package/login/i18n/baseMessages/nl.js +1 -0
- package/login/i18n/baseMessages/nl.js.map +1 -1
- package/login/i18n/baseMessages/no.d.ts +1 -0
- package/login/i18n/baseMessages/no.js +1 -0
- package/login/i18n/baseMessages/no.js.map +1 -1
- package/login/i18n/baseMessages/pl.d.ts +1 -0
- package/login/i18n/baseMessages/pl.js +1 -0
- package/login/i18n/baseMessages/pl.js.map +1 -1
- package/login/i18n/baseMessages/pt-BR.d.ts +1 -0
- package/login/i18n/baseMessages/pt-BR.js +1 -0
- package/login/i18n/baseMessages/pt-BR.js.map +1 -1
- package/login/i18n/baseMessages/ru.d.ts +1 -0
- package/login/i18n/baseMessages/ru.js +1 -0
- package/login/i18n/baseMessages/ru.js.map +1 -1
- package/login/i18n/baseMessages/sk.d.ts +2 -0
- package/login/i18n/baseMessages/sk.js +3 -1
- package/login/i18n/baseMessages/sk.js.map +1 -1
- package/login/i18n/baseMessages/sv.d.ts +1 -0
- package/login/i18n/baseMessages/sv.js +1 -0
- package/login/i18n/baseMessages/sv.js.map +1 -1
- package/login/i18n/baseMessages/th.d.ts +1 -0
- package/login/i18n/baseMessages/th.js +1 -0
- package/login/i18n/baseMessages/th.js.map +1 -1
- package/login/i18n/baseMessages/tr.d.ts +1 -0
- package/login/i18n/baseMessages/tr.js +1 -0
- package/login/i18n/baseMessages/tr.js.map +1 -1
- package/login/i18n/baseMessages/uk.d.ts +433 -0
- package/login/i18n/baseMessages/uk.js +438 -0
- package/login/i18n/baseMessages/uk.js.map +1 -0
- package/login/i18n/baseMessages/zh-CN.d.ts +273 -3
- package/login/i18n/baseMessages/zh-CN.js +325 -55
- package/login/i18n/baseMessages/zh-CN.js.map +1 -1
- package/login/i18n/i18n.d.ts +4 -0
- package/login/i18n/i18n.js +6 -2
- package/login/i18n/i18n.js.map +1 -1
- package/login/kcContext/KcContext.d.ts +181 -105
- package/login/kcContext/KcContext.js +1 -1
- package/login/kcContext/KcContext.js.map +1 -1
- package/login/kcContext/createGetKcContext.js +3 -9
- package/login/kcContext/createGetKcContext.js.map +1 -1
- package/login/kcContext/kcContextMocks.d.ts +1 -1
- package/login/kcContext/kcContextMocks.js +92 -198
- package/login/kcContext/kcContextMocks.js.map +1 -1
- package/login/lib/useDownloadTerms.d.ts +4 -1
- package/login/lib/useDownloadTerms.js +9 -4
- package/login/lib/useDownloadTerms.js.map +1 -1
- package/login/lib/useGetClassName.js +112 -73
- package/login/lib/useGetClassName.js.map +1 -1
- package/login/lib/useUserProfileForm.d.ts +74 -0
- package/login/lib/useUserProfileForm.js +868 -0
- package/login/lib/useUserProfileForm.js.map +1 -0
- package/login/pages/{UpdateUserProfile.d.ts → Code.d.ts} +2 -2
- package/login/pages/Code.js +13 -0
- package/login/pages/Code.js.map +1 -0
- package/login/pages/DeleteAccountConfirm.d.ts +7 -0
- package/login/pages/DeleteAccountConfirm.js +14 -0
- package/login/pages/DeleteAccountConfirm.js.map +1 -0
- package/login/pages/{RegisterUserProfile.d.ts → DeleteCredential.d.ts} +2 -2
- package/login/pages/DeleteCredential.js +14 -0
- package/login/pages/DeleteCredential.js.map +1 -0
- package/login/pages/Error.js +2 -2
- package/login/pages/Error.js.map +1 -1
- package/login/pages/FrontchannelLogout.d.ts +7 -0
- package/login/pages/FrontchannelLogout.js +14 -0
- package/login/pages/FrontchannelLogout.js.map +1 -0
- package/login/pages/IdpReviewUserProfile.d.ts +8 -2
- package/login/pages/IdpReviewUserProfile.js +3 -4
- package/login/pages/IdpReviewUserProfile.js.map +1 -1
- package/login/pages/Info.js +14 -1
- package/login/pages/Info.js.map +1 -1
- package/login/pages/Login.js +24 -38
- package/login/pages/Login.js.map +1 -1
- package/login/pages/LoginConfigTotp.js +8 -1
- package/login/pages/LoginConfigTotp.js.map +1 -1
- package/login/pages/{LoginDeviceVerifyUserCode.d.ts → LoginOauth2DeviceVerifyUserCode.d.ts} +1 -1
- package/login/pages/{LoginDeviceVerifyUserCode.js → LoginOauth2DeviceVerifyUserCode.js} +2 -2
- package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -0
- package/login/pages/LoginOauthGrant.js +3 -2
- package/login/pages/LoginOauthGrant.js.map +1 -1
- package/login/pages/LoginOtp.js +4 -6
- package/login/pages/LoginOtp.js.map +1 -1
- package/login/pages/LoginPageExpired.js +1 -1
- package/login/pages/LoginPageExpired.js.map +1 -1
- package/login/pages/LoginPassword.d.ts +1 -1
- package/login/pages/LoginPassword.js +18 -11
- package/login/pages/LoginPassword.js.map +1 -1
- package/login/pages/LoginRecoveryAuthnCodeConfig.d.ts +7 -0
- package/login/pages/LoginRecoveryAuthnCodeConfig.js +147 -0
- package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -0
- package/login/pages/LoginRecoveryAuthnCodeInput.d.ts +7 -0
- package/login/pages/LoginRecoveryAuthnCodeInput.js +14 -0
- package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -0
- package/login/pages/LoginResetOtp.d.ts +7 -0
- package/login/pages/LoginResetOtp.js +15 -0
- package/login/pages/LoginResetOtp.js.map +1 -0
- package/login/pages/LoginResetPassword.js +4 -3
- package/login/pages/LoginResetPassword.js.map +1 -1
- package/login/pages/LoginUpdatePassword.js +21 -3
- package/login/pages/LoginUpdatePassword.js.map +1 -1
- package/login/pages/LoginUpdateProfile.d.ts +8 -2
- package/login/pages/LoginUpdateProfile.js +11 -5
- package/login/pages/LoginUpdateProfile.js.map +1 -1
- package/login/pages/LoginUsername.js +11 -35
- package/login/pages/LoginUsername.js.map +1 -1
- package/login/pages/LoginVerifyEmail.js +1 -1
- package/login/pages/LoginVerifyEmail.js.map +1 -1
- package/login/pages/LoginX509Info.d.ts +7 -0
- package/login/pages/LoginX509Info.js +14 -0
- package/login/pages/LoginX509Info.js.map +1 -0
- package/login/pages/LogoutConfirm.js +1 -1
- package/login/pages/LogoutConfirm.js.map +1 -1
- package/login/pages/Register.d.ts +8 -2
- package/login/pages/Register.js +26 -4
- package/login/pages/Register.js.map +1 -1
- package/login/pages/SamlPostForm.js +1 -1
- package/login/pages/SamlPostForm.js.map +1 -1
- package/login/pages/SelectAuthenticator.js +5 -21
- package/login/pages/SelectAuthenticator.js.map +1 -1
- package/login/pages/Terms.js +4 -6
- package/login/pages/Terms.js.map +1 -1
- package/login/pages/UpdateEmail.d.ts +8 -2
- package/login/pages/UpdateEmail.js +16 -5
- package/login/pages/UpdateEmail.js.map +1 -1
- package/login/pages/WebauthnAuthenticate.js +121 -83
- package/login/pages/WebauthnAuthenticate.js.map +1 -1
- package/login/pages/WebauthnError.d.ts +7 -0
- package/login/pages/WebauthnError.js +21 -0
- package/login/pages/WebauthnError.js.map +1 -0
- package/login/pages/WebauthnRegister.d.ts +7 -0
- package/login/pages/WebauthnRegister.js +193 -0
- package/login/pages/WebauthnRegister.js.map +1 -0
- package/package.json +138 -43
- package/src/account/Template.tsx +41 -14
- package/src/account/i18n/baseMessages/de.ts +1 -1
- package/src/account/i18n/baseMessages/en.ts +2 -0
- package/src/account/i18n/baseMessages/es.ts +231 -1
- package/src/account/i18n/baseMessages/index.ts +1 -0
- package/src/account/i18n/baseMessages/pl.ts +115 -1
- package/src/account/i18n/baseMessages/tr.ts +1 -1
- package/src/account/i18n/baseMessages/uk.ts +343 -0
- package/src/account/i18n/baseMessages/zh-CN.ts +10 -0
- package/src/bin/constants.ts +0 -1
- package/src/bin/keycloakify/buildJars/buildJar.ts +174 -0
- package/src/bin/keycloakify/buildJars/buildJars.ts +62 -0
- package/src/bin/keycloakify/buildJars/extensionVersions.ts +16 -0
- package/src/bin/keycloakify/buildJars/generatePom.ts +86 -0
- package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +37 -0
- package/src/bin/keycloakify/buildJars/index.ts +1 -0
- package/src/bin/keycloakify/buildOptions/UserProvidedBuildOptions.ts +1 -5
- package/src/bin/keycloakify/buildOptions/buildOptions.ts +1 -5
- package/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +105 -234
- package/src/bin/keycloakify/generateFtl/generateFtl.ts +15 -31
- package/src/bin/keycloakify/generateFtl/pageId.ts +11 -3
- package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +4 -8
- package/src/bin/keycloakify/generateTheme/bringInAccountV1.ts +5 -11
- package/src/bin/keycloakify/generateTheme/generateSrcMainResources.ts +267 -0
- package/src/bin/keycloakify/generateTheme/generateTheme.ts +22 -309
- package/src/bin/keycloakify/generateTheme/generateThemeVariants.ts +50 -0
- package/src/bin/keycloakify/generateTheme/readFieldNameUsage.ts +31 -8
- package/src/bin/keycloakify/keycloakify.ts +23 -56
- package/src/lib/useGetClassName.ts +2 -2
- package/src/login/Fallback.tsx +39 -9
- package/src/login/Template.tsx +160 -61
- package/src/login/TemplateProps.ts +113 -63
- package/src/login/UserProfileFormFields.tsx +750 -0
- package/src/login/i18n/baseMessages/ar.ts +3 -0
- package/src/login/i18n/baseMessages/ca.ts +1 -0
- package/src/login/i18n/baseMessages/cs.ts +3 -0
- package/src/login/i18n/baseMessages/da.ts +1 -0
- package/src/login/i18n/baseMessages/de.ts +1 -0
- package/src/login/i18n/baseMessages/el.ts +1 -0
- package/src/login/i18n/baseMessages/en.ts +23 -16
- package/src/login/i18n/baseMessages/es.ts +240 -1
- package/src/login/i18n/baseMessages/fa.ts +1 -0
- package/src/login/i18n/baseMessages/fi.ts +1 -0
- package/src/login/i18n/baseMessages/fr.ts +2 -1
- package/src/login/i18n/baseMessages/hu.ts +1 -0
- package/src/login/i18n/baseMessages/index.ts +1 -0
- package/src/login/i18n/baseMessages/it.ts +1 -0
- package/src/login/i18n/baseMessages/ja.ts +1 -0
- package/src/login/i18n/baseMessages/lt.ts +1 -0
- package/src/login/i18n/baseMessages/lv.ts +1 -0
- package/src/login/i18n/baseMessages/nl.ts +1 -0
- package/src/login/i18n/baseMessages/no.ts +1 -0
- package/src/login/i18n/baseMessages/pl.ts +1 -0
- package/src/login/i18n/baseMessages/pt-BR.ts +1 -0
- package/src/login/i18n/baseMessages/ru.ts +1 -0
- package/src/login/i18n/baseMessages/sk.ts +3 -1
- package/src/login/i18n/baseMessages/sv.ts +1 -0
- package/src/login/i18n/baseMessages/th.ts +1 -0
- package/src/login/i18n/baseMessages/tr.ts +1 -0
- package/src/login/i18n/baseMessages/uk.ts +439 -0
- package/src/login/i18n/baseMessages/zh-CN.ts +325 -55
- package/src/login/i18n/i18n.tsx +6 -2
- package/src/login/kcContext/KcContext.ts +216 -103
- package/src/login/kcContext/createGetKcContext.ts +11 -19
- package/src/login/kcContext/kcContextMocks.ts +165 -226
- package/src/login/lib/useDownloadTerms.ts +15 -7
- package/src/login/lib/useGetClassName.ts +112 -83
- package/src/login/lib/useUserProfileForm.tsx +1227 -0
- package/src/login/pages/Code.tsx +35 -0
- package/src/login/pages/DeleteAccountConfirm.tsx +53 -0
- package/src/login/pages/DeleteCredential.tsx +45 -0
- package/src/login/pages/Error.tsx +2 -2
- package/src/login/pages/FrontchannelLogout.tsx +41 -0
- package/src/login/pages/IdpReviewUserProfile.tsx +15 -5
- package/src/login/pages/Info.tsx +29 -19
- package/src/login/pages/Login.tsx +156 -117
- package/src/login/pages/LoginConfigTotp.tsx +26 -1
- package/src/login/pages/{LoginDeviceVerifyUserCode.tsx → LoginOauth2DeviceVerifyUserCode.tsx} +3 -1
- package/src/login/pages/LoginOauthGrant.tsx +38 -2
- package/src/login/pages/LoginOtp.tsx +73 -65
- package/src/login/pages/LoginPageExpired.tsx +1 -1
- package/src/login/pages/LoginPassword.tsx +77 -28
- package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +260 -0
- package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +73 -0
- package/src/login/pages/LoginResetOtp.tsx +70 -0
- package/src/login/pages/LoginResetPassword.tsx +11 -4
- package/src/login/pages/LoginUpdatePassword.tsx +120 -81
- package/src/login/pages/LoginUpdateProfile.tsx +41 -115
- package/src/login/pages/LoginUsername.tsx +93 -101
- package/src/login/pages/LoginVerifyEmail.tsx +14 -8
- package/src/login/pages/LoginX509Info.tsx +94 -0
- package/src/login/pages/LogoutConfirm.tsx +2 -2
- package/src/login/pages/Register.tsx +83 -131
- package/src/login/pages/SamlPostForm.tsx +1 -1
- package/src/login/pages/SelectAuthenticator.tsx +29 -52
- package/src/login/pages/Terms.tsx +4 -7
- package/src/login/pages/UpdateEmail.tsx +69 -54
- package/src/login/pages/WebauthnAuthenticate.tsx +205 -165
- package/src/login/pages/WebauthnError.tsx +66 -0
- package/src/login/pages/WebauthnRegister.tsx +285 -0
- package/src/tools/formatNumber.ts +48 -0
- package/src/tools/useInsertLinkTags.ts +82 -0
- package/src/tools/useInsertScriptTags.ts +106 -0
- package/src/tools/useSetClassName.ts +21 -0
- package/tools/formatNumber.d.ts +1 -0
- package/tools/formatNumber.js +37 -0
- package/tools/formatNumber.js.map +1 -0
- package/tools/useInsertLinkTags.d.ts +7 -0
- package/tools/useInsertLinkTags.js +57 -0
- package/tools/useInsertLinkTags.js.map +1 -0
- package/tools/useInsertScriptTags.d.ts +20 -0
- package/tools/useInsertScriptTags.js +75 -0
- package/tools/useInsertScriptTags.js.map +1 -0
- package/tools/useSetClassName.d.ts +4 -0
- package/tools/useSetClassName.js +16 -0
- package/tools/useSetClassName.js.map +1 -0
- package/vite-plugin/tsconfig.tsbuildinfo +1 -1
- package/bin/keycloakify/generatePom.d.ts +0 -12
- package/bin/keycloakify/generatePom.js +0 -59
- package/bin/keycloakify/generatePom.js.map +0 -1
- package/lib/usePrepareTemplate.d.ts +0 -11
- package/lib/usePrepareTemplate.js +0 -80
- package/lib/usePrepareTemplate.js.map +0 -1
- package/login/lib/useFormValidation.d.ts +0 -47
- package/login/lib/useFormValidation.js +0 -316
- package/login/lib/useFormValidation.js.map +0 -1
- package/login/pages/LoginDeviceVerifyUserCode.js.map +0 -1
- package/login/pages/RegisterUserProfile.js +0 -18
- package/login/pages/RegisterUserProfile.js.map +0 -1
- package/login/pages/UpdateUserProfile.js +0 -17
- package/login/pages/UpdateUserProfile.js.map +0 -1
- package/login/pages/shared/UserProfileFormFields.d.ts +0 -18
- package/login/pages/shared/UserProfileFormFields.js +0 -58
- package/login/pages/shared/UserProfileFormFields.js.map +0 -1
- package/src/bin/keycloakify/generatePom.ts +0 -70
- package/src/lib/usePrepareTemplate.ts +0 -113
- package/src/login/lib/useFormValidation.tsx +0 -474
- package/src/login/pages/RegisterUserProfile.tsx +0 -72
- package/src/login/pages/UpdateUserProfile.tsx +0 -82
- package/src/login/pages/shared/UserProfileFormFields.tsx +0 -177
- package/src/tools/headInsert.ts +0 -73
- package/tools/headInsert.d.ts +0 -12
- package/tools/headInsert.js +0 -50
- package/tools/headInsert.js.map +0 -1
@@ -0,0 +1,86 @@
|
|
1
|
+
import { assert } from "tsafe/assert";
|
2
|
+
import type { BuildOptions } from "../buildOptions";
|
3
|
+
import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
|
4
|
+
|
5
|
+
export type BuildOptionsLike = {
|
6
|
+
groupId: string;
|
7
|
+
artifactId: string;
|
8
|
+
themeVersion: string;
|
9
|
+
};
|
10
|
+
|
11
|
+
assert<BuildOptions extends BuildOptionsLike ? true : false>();
|
12
|
+
|
13
|
+
export function generatePom(params: {
|
14
|
+
keycloakAccountV1Version: KeycloakAccountV1Version;
|
15
|
+
keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
|
16
|
+
buildOptions: BuildOptionsLike;
|
17
|
+
}) {
|
18
|
+
const { keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, buildOptions } = params;
|
19
|
+
|
20
|
+
const { pomFileCode } = (function generatePomFileCode(): {
|
21
|
+
pomFileCode: string;
|
22
|
+
} {
|
23
|
+
const pomFileCode = [
|
24
|
+
`<?xml version="1.0"?>`,
|
25
|
+
`<project xmlns="http://maven.apache.org/POM/4.0.0"`,
|
26
|
+
` xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"`,
|
27
|
+
` xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">`,
|
28
|
+
` <modelVersion>4.0.0</modelVersion>`,
|
29
|
+
` <groupId>${buildOptions.groupId}</groupId>`,
|
30
|
+
` <artifactId>${buildOptions.artifactId}</artifactId>`,
|
31
|
+
` <version>${buildOptions.themeVersion}</version>`,
|
32
|
+
` <name>${buildOptions.artifactId}</name>`,
|
33
|
+
` <description />`,
|
34
|
+
` <packaging>jar</packaging>`,
|
35
|
+
` <properties>`,
|
36
|
+
` <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>`,
|
37
|
+
` </properties>`,
|
38
|
+
...(keycloakAccountV1Version !== null && keycloakThemeAdditionalInfoExtensionVersion !== null
|
39
|
+
? [
|
40
|
+
` <build>`,
|
41
|
+
` <plugins>`,
|
42
|
+
` <plugin>`,
|
43
|
+
` <groupId>org.apache.maven.plugins</groupId>`,
|
44
|
+
` <artifactId>maven-shade-plugin</artifactId>`,
|
45
|
+
` <version>3.5.1</version>`,
|
46
|
+
` <executions>`,
|
47
|
+
` <execution>`,
|
48
|
+
` <phase>package</phase>`,
|
49
|
+
` <goals>`,
|
50
|
+
` <goal>shade</goal>`,
|
51
|
+
` </goals>`,
|
52
|
+
` </execution>`,
|
53
|
+
` </executions>`,
|
54
|
+
` </plugin>`,
|
55
|
+
` </plugins>`,
|
56
|
+
` </build>`,
|
57
|
+
` <dependencies>`,
|
58
|
+
...(keycloakAccountV1Version !== null
|
59
|
+
? [
|
60
|
+
` <dependency>`,
|
61
|
+
` <groupId>io.phasetwo.keycloak</groupId>`,
|
62
|
+
` <artifactId>keycloak-account-v1</artifactId>`,
|
63
|
+
` <version>${keycloakAccountV1Version}</version>`,
|
64
|
+
` </dependency>`
|
65
|
+
]
|
66
|
+
: []),
|
67
|
+
...(keycloakThemeAdditionalInfoExtensionVersion !== null
|
68
|
+
? [
|
69
|
+
` <dependency>`,
|
70
|
+
` <groupId>dev.jcputney</groupId>`,
|
71
|
+
` <artifactId>keycloak-theme-additional-info-extension</artifactId>`,
|
72
|
+
` <version>${keycloakThemeAdditionalInfoExtensionVersion}</version>`,
|
73
|
+
` </dependency>`
|
74
|
+
]
|
75
|
+
: []),
|
76
|
+
` </dependencies>`
|
77
|
+
]
|
78
|
+
: []),
|
79
|
+
`</project>`
|
80
|
+
].join("\n");
|
81
|
+
|
82
|
+
return { pomFileCode };
|
83
|
+
})();
|
84
|
+
|
85
|
+
return { pomFileCode };
|
86
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import { assert, type Equals } from "tsafe/assert";
|
2
|
+
import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
|
3
|
+
|
4
|
+
export function getKeycloakVersionRangeForJar(params: {
|
5
|
+
doesImplementAccountTheme: boolean;
|
6
|
+
keycloakAccountV1Version: KeycloakAccountV1Version;
|
7
|
+
keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
|
8
|
+
}): string | undefined {
|
9
|
+
const { keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, doesImplementAccountTheme } = params;
|
10
|
+
|
11
|
+
switch (keycloakAccountV1Version) {
|
12
|
+
case null:
|
13
|
+
switch (keycloakThemeAdditionalInfoExtensionVersion) {
|
14
|
+
case null:
|
15
|
+
return doesImplementAccountTheme ? "21-and-below" : "21-and-below";
|
16
|
+
case "1.1.5":
|
17
|
+
return doesImplementAccountTheme ? undefined : "22-and-above";
|
18
|
+
}
|
19
|
+
assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
|
20
|
+
case "0.3":
|
21
|
+
switch (keycloakThemeAdditionalInfoExtensionVersion) {
|
22
|
+
case null:
|
23
|
+
return doesImplementAccountTheme ? undefined : undefined;
|
24
|
+
case "1.1.5":
|
25
|
+
return doesImplementAccountTheme ? "23" : undefined;
|
26
|
+
}
|
27
|
+
assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
|
28
|
+
case "0.4":
|
29
|
+
switch (keycloakThemeAdditionalInfoExtensionVersion) {
|
30
|
+
case null:
|
31
|
+
return doesImplementAccountTheme ? undefined : undefined;
|
32
|
+
case "1.1.5":
|
33
|
+
return doesImplementAccountTheme ? "24-and-above" : undefined;
|
34
|
+
}
|
35
|
+
assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
|
36
|
+
}
|
37
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from "./buildJars";
|
@@ -4,22 +4,18 @@ export type UserProvidedBuildOptions = {
|
|
4
4
|
extraThemeProperties?: string[];
|
5
5
|
artifactId?: string;
|
6
6
|
groupId?: string;
|
7
|
-
doCreateJar?: boolean;
|
8
7
|
loginThemeResourcesFromKeycloakVersion?: string;
|
9
8
|
reactAppBuildDirPath?: string;
|
10
9
|
keycloakifyBuildDirPath?: string;
|
11
10
|
themeName?: string | string[];
|
12
|
-
doBuildRetrocompatAccountTheme?: boolean;
|
13
11
|
};
|
14
12
|
|
15
13
|
export const zUserProvidedBuildOptions = z.object({
|
16
14
|
"extraThemeProperties": z.array(z.string()).optional(),
|
17
15
|
"artifactId": z.string().optional(),
|
18
16
|
"groupId": z.string().optional(),
|
19
|
-
"doCreateJar": z.boolean().optional(),
|
20
17
|
"loginThemeResourcesFromKeycloakVersion": z.string().optional(),
|
21
18
|
"reactAppBuildDirPath": z.string().optional(),
|
22
19
|
"keycloakifyBuildDirPath": z.string().optional(),
|
23
|
-
"themeName": z.union([z.string(), z.array(z.string())]).optional()
|
24
|
-
"doBuildRetrocompatAccountTheme": z.boolean().optional()
|
20
|
+
"themeName": z.union([z.string(), z.array(z.string())]).optional()
|
25
21
|
});
|
@@ -18,7 +18,6 @@ export type BuildOptions = {
|
|
18
18
|
extraThemeProperties: string[] | undefined;
|
19
19
|
groupId: string;
|
20
20
|
artifactId: string;
|
21
|
-
doCreateJar: boolean;
|
22
21
|
loginThemeResourcesFromKeycloakVersion: string;
|
23
22
|
reactAppRootDirPath: string;
|
24
23
|
reactAppBuildDirPath: string;
|
@@ -30,7 +29,6 @@ export type BuildOptions = {
|
|
30
29
|
* In this case the urlPathname will be "/my-app/" */
|
31
30
|
urlPathname: string | undefined;
|
32
31
|
assetsDirPath: string;
|
33
|
-
doBuildRetrocompatAccountTheme: boolean;
|
34
32
|
npmWorkspaceRootDirPath: string;
|
35
33
|
};
|
36
34
|
|
@@ -116,8 +114,7 @@ export function readBuildOptions(params: { processArgv: string[] }): BuildOption
|
|
116
114
|
);
|
117
115
|
})(),
|
118
116
|
"artifactId": process.env.KEYCLOAKIFY_ARTIFACT_ID ?? userProvidedBuildOptions.artifactId ?? `${themeNames[0]}-keycloak-theme`,
|
119
|
-
"
|
120
|
-
"loginThemeResourcesFromKeycloakVersion": userProvidedBuildOptions.loginThemeResourcesFromKeycloakVersion ?? "11.0.3",
|
117
|
+
"loginThemeResourcesFromKeycloakVersion": userProvidedBuildOptions.loginThemeResourcesFromKeycloakVersion ?? "24.0.4",
|
121
118
|
reactAppRootDirPath,
|
122
119
|
reactAppBuildDirPath,
|
123
120
|
"keycloakifyBuildDirPath": (() => {
|
@@ -187,7 +184,6 @@ export function readBuildOptions(params: { processArgv: string[] }): BuildOption
|
|
187
184
|
|
188
185
|
return pathJoin(reactAppBuildDirPath, resolvedViteConfig.assetsDir);
|
189
186
|
})(),
|
190
|
-
"doBuildRetrocompatAccountTheme": userProvidedBuildOptions.doBuildRetrocompatAccountTheme ?? true,
|
191
187
|
npmWorkspaceRootDirPath
|
192
188
|
};
|
193
189
|
}
|
@@ -30,30 +30,19 @@
|
|
30
30
|
<#list fieldNames as fieldName>
|
31
31
|
if(fieldName === "${fieldName}" ){
|
32
32
|
|
33
|
-
<#-- https://github.com/keycloakify/keycloakify/pull/
|
34
|
-
<#if
|
33
|
+
<#-- https://github.com/keycloakify/keycloakify/pull/218 -->
|
34
|
+
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
35
35
|
|
36
|
-
|
37
|
-
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
38
|
-
|
39
|
-
<#assign doExistMessageForUsernameOrPassword = "">
|
36
|
+
<#assign doExistErrorOnUsernameOrPassword = "">
|
40
37
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
<#if !doExistMessageForUsernameOrPassword>
|
48
|
-
<#attempt>
|
49
|
-
<#assign doExistMessageForUsernameOrPassword = messagesPerField.exists('password')>
|
50
|
-
<#recover>
|
51
|
-
<#assign doExistMessageForUsernameOrPassword = true>
|
52
|
-
</#attempt>
|
53
|
-
</#if>
|
54
|
-
|
55
|
-
return <#if doExistMessageForUsernameOrPassword>text<#else>undefined</#if>;
|
38
|
+
<#attempt>
|
39
|
+
<#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
|
40
|
+
<#recover>
|
41
|
+
<#assign doExistErrorOnUsernameOrPassword = true>
|
42
|
+
</#attempt>
|
56
43
|
|
44
|
+
<#if doExistErrorOnUsernameOrPassword>
|
45
|
+
return text;
|
57
46
|
<#else>
|
58
47
|
|
59
48
|
<#assign doExistMessageForField = "">
|
@@ -70,49 +59,19 @@
|
|
70
59
|
|
71
60
|
<#else>
|
72
61
|
|
73
|
-
|
74
|
-
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
75
|
-
|
76
|
-
<#assign doExistErrorOnUsernameOrPassword = "">
|
77
|
-
|
78
|
-
<#attempt>
|
79
|
-
<#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
|
80
|
-
<#recover>
|
81
|
-
<#assign doExistErrorOnUsernameOrPassword = true>
|
82
|
-
</#attempt>
|
83
|
-
|
84
|
-
<#if doExistErrorOnUsernameOrPassword>
|
85
|
-
return text;
|
86
|
-
<#else>
|
87
|
-
|
88
|
-
<#assign doExistMessageForField = "">
|
89
|
-
|
90
|
-
<#attempt>
|
91
|
-
<#assign doExistMessageForField = messagesPerField.exists('${fieldName}')>
|
92
|
-
<#recover>
|
93
|
-
<#assign doExistMessageForField = true>
|
94
|
-
</#attempt>
|
62
|
+
<#assign doExistMessageForField = "">
|
95
63
|
|
96
|
-
|
64
|
+
<#attempt>
|
65
|
+
<#assign doExistMessageForField = messagesPerField.exists('${fieldName}')>
|
66
|
+
<#recover>
|
67
|
+
<#assign doExistMessageForField = true>
|
68
|
+
</#attempt>
|
97
69
|
|
98
|
-
|
99
|
-
|
100
|
-
<#else>
|
101
|
-
|
102
|
-
<#assign doExistMessageForField = "">
|
103
|
-
|
104
|
-
<#attempt>
|
105
|
-
<#assign doExistMessageForField = messagesPerField.exists('${fieldName}')>
|
106
|
-
<#recover>
|
107
|
-
<#assign doExistMessageForField = true>
|
108
|
-
</#attempt>
|
109
|
-
|
110
|
-
return <#if doExistMessageForField>text<#else>undefined</#if>;
|
111
|
-
|
112
|
-
</#if>
|
70
|
+
return <#if doExistMessageForField>text<#else>undefined</#if>;
|
113
71
|
|
114
72
|
</#if>
|
115
73
|
|
74
|
+
|
116
75
|
}
|
117
76
|
</#list>
|
118
77
|
|
@@ -120,53 +79,15 @@
|
|
120
79
|
</#if>
|
121
80
|
|
122
81
|
},
|
123
|
-
"existsError": function (
|
82
|
+
"existsError": function (){
|
124
83
|
|
125
|
-
|
126
|
-
throw new Error("You're not supposed to use messagesPerField.printIfExists in this page");
|
127
|
-
<#else>
|
128
|
-
<#list fieldNames as fieldName>
|
129
|
-
if(fieldName === "${fieldName}" ){
|
84
|
+
function existsError_singleFieldName(fieldName) {
|
130
85
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
<#assign doExistMessageForUsernameOrPassword = "">
|
138
|
-
|
139
|
-
<#attempt>
|
140
|
-
<#assign doExistMessageForUsernameOrPassword = messagesPerField.exists('username')>
|
141
|
-
<#recover>
|
142
|
-
<#assign doExistMessageForUsernameOrPassword = true>
|
143
|
-
</#attempt>
|
144
|
-
|
145
|
-
<#if !doExistMessageForUsernameOrPassword>
|
146
|
-
<#attempt>
|
147
|
-
<#assign doExistMessageForUsernameOrPassword = messagesPerField.exists('password')>
|
148
|
-
<#recover>
|
149
|
-
<#assign doExistMessageForUsernameOrPassword = true>
|
150
|
-
</#attempt>
|
151
|
-
</#if>
|
152
|
-
|
153
|
-
return <#if doExistMessageForUsernameOrPassword>true<#else>false</#if>;
|
154
|
-
|
155
|
-
<#else>
|
156
|
-
|
157
|
-
<#assign doExistMessageForField = "">
|
158
|
-
|
159
|
-
<#attempt>
|
160
|
-
<#assign doExistMessageForField = messagesPerField.exists('${fieldName}')>
|
161
|
-
<#recover>
|
162
|
-
<#assign doExistMessageForField = true>
|
163
|
-
</#attempt>
|
164
|
-
|
165
|
-
return <#if doExistMessageForField>true<#else>false</#if>;
|
166
|
-
|
167
|
-
</#if>
|
168
|
-
|
169
|
-
<#else>
|
86
|
+
<#if !messagesPerField?? || !(messagesPerField?is_hash)>
|
87
|
+
throw new Error("You're not supposed to use messagesPerField.printIfExists in this page");
|
88
|
+
<#else>
|
89
|
+
<#list fieldNames as fieldName>
|
90
|
+
if(fieldName === "${fieldName}" ){
|
170
91
|
|
171
92
|
<#-- https://github.com/keycloakify/keycloakify/pull/218 -->
|
172
93
|
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
@@ -195,14 +116,24 @@
|
|
195
116
|
|
196
117
|
</#if>
|
197
118
|
|
198
|
-
|
119
|
+
}
|
120
|
+
</#list>
|
199
121
|
|
200
|
-
|
201
|
-
</#list>
|
122
|
+
throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
|
202
123
|
|
203
|
-
|
124
|
+
</#if>
|
204
125
|
|
205
|
-
|
126
|
+
}
|
127
|
+
|
128
|
+
for( let i = 0; i < arguments.length; i++ ){
|
129
|
+
|
130
|
+
if( existsError_singleFieldName(arguments[i]) ){
|
131
|
+
return true;
|
132
|
+
}
|
133
|
+
|
134
|
+
}
|
135
|
+
|
136
|
+
return false;
|
206
137
|
|
207
138
|
},
|
208
139
|
"get": function (fieldName) {
|
@@ -214,88 +145,42 @@
|
|
214
145
|
<#list fieldNames as fieldName>
|
215
146
|
if(fieldName === "${fieldName}" ){
|
216
147
|
|
217
|
-
<#-- https://github.com/keycloakify/keycloakify/pull/
|
218
|
-
<#if
|
148
|
+
<#-- https://github.com/keycloakify/keycloakify/pull/218 -->
|
149
|
+
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
219
150
|
|
220
|
-
|
221
|
-
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
151
|
+
<#assign doExistErrorOnUsernameOrPassword = "">
|
222
152
|
|
223
|
-
|
153
|
+
<#attempt>
|
154
|
+
<#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
|
155
|
+
<#recover>
|
156
|
+
<#assign doExistErrorOnUsernameOrPassword = true>
|
157
|
+
</#attempt>
|
158
|
+
|
159
|
+
<#if doExistErrorOnUsernameOrPassword>
|
224
160
|
|
225
161
|
<#attempt>
|
226
|
-
|
162
|
+
return "${kcSanitize(msg('invalidUserMessage'))?no_esc}";
|
227
163
|
<#recover>
|
228
|
-
|
164
|
+
return "Invalid username or password.";
|
229
165
|
</#attempt>
|
230
166
|
|
231
|
-
<#if !doExistMessageForUsernameOrPassword>
|
232
|
-
<#attempt>
|
233
|
-
<#assign doExistMessageForUsernameOrPassword = messagesPerField.exists('password')>
|
234
|
-
<#recover>
|
235
|
-
<#assign doExistMessageForUsernameOrPassword = true>
|
236
|
-
</#attempt>
|
237
|
-
</#if>
|
238
|
-
|
239
|
-
<#if !doExistMessageForUsernameOrPassword>
|
240
|
-
return "";
|
241
|
-
<#else>
|
242
|
-
<#attempt>
|
243
|
-
return "${kcSanitize(msg('invalidUserMessage'))?no_esc}";
|
244
|
-
<#recover>
|
245
|
-
return "Invalid username or password.";
|
246
|
-
</#attempt>
|
247
|
-
</#if>
|
248
|
-
|
249
167
|
<#else>
|
250
168
|
|
251
169
|
<#attempt>
|
252
170
|
return "${messagesPerField.get('${fieldName}')?no_esc}";
|
253
171
|
<#recover>
|
254
|
-
return "
|
172
|
+
return "";
|
255
173
|
</#attempt>
|
256
174
|
|
257
175
|
</#if>
|
258
176
|
|
259
177
|
<#else>
|
260
178
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
<#attempt>
|
267
|
-
<#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
|
268
|
-
<#recover>
|
269
|
-
<#assign doExistErrorOnUsernameOrPassword = true>
|
270
|
-
</#attempt>
|
271
|
-
|
272
|
-
<#if doExistErrorOnUsernameOrPassword>
|
273
|
-
|
274
|
-
<#attempt>
|
275
|
-
return "${kcSanitize(msg('invalidUserMessage'))?no_esc}";
|
276
|
-
<#recover>
|
277
|
-
return "Invalid username or password.";
|
278
|
-
</#attempt>
|
279
|
-
|
280
|
-
<#else>
|
281
|
-
|
282
|
-
<#attempt>
|
283
|
-
return "${messagesPerField.get('${fieldName}')?no_esc}";
|
284
|
-
<#recover>
|
285
|
-
return "";
|
286
|
-
</#attempt>
|
287
|
-
|
288
|
-
</#if>
|
289
|
-
|
290
|
-
<#else>
|
291
|
-
|
292
|
-
<#attempt>
|
293
|
-
return "${messagesPerField.get('${fieldName}')?no_esc}";
|
294
|
-
<#recover>
|
295
|
-
return "invalid field";
|
296
|
-
</#attempt>
|
297
|
-
|
298
|
-
</#if>
|
179
|
+
<#attempt>
|
180
|
+
return "${messagesPerField.get('${fieldName}')?no_esc}";
|
181
|
+
<#recover>
|
182
|
+
return "invalid field";
|
183
|
+
</#attempt>
|
299
184
|
|
300
185
|
</#if>
|
301
186
|
|
@@ -315,72 +200,30 @@
|
|
315
200
|
<#list fieldNames as fieldName>
|
316
201
|
if(fieldName === "${fieldName}" ){
|
317
202
|
|
318
|
-
<#-- https://github.com/keycloakify/keycloakify/pull/
|
319
|
-
<#if
|
320
|
-
|
321
|
-
<#-- https://github.com/keycloakify/keycloakify/pull/218 -->
|
322
|
-
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
323
|
-
|
324
|
-
<#assign doExistMessageForUsernameOrPassword = "">
|
325
|
-
|
326
|
-
<#attempt>
|
327
|
-
<#assign doExistMessageForUsernameOrPassword = messagesPerField.exists('username')>
|
328
|
-
<#recover>
|
329
|
-
<#assign doExistMessageForUsernameOrPassword = true>
|
330
|
-
</#attempt>
|
331
|
-
|
332
|
-
<#if !doExistMessageForUsernameOrPassword>
|
333
|
-
<#attempt>
|
334
|
-
<#assign doExistMessageForUsernameOrPassword = messagesPerField.exists('password')>
|
335
|
-
<#recover>
|
336
|
-
<#assign doExistMessageForUsernameOrPassword = true>
|
337
|
-
</#attempt>
|
338
|
-
</#if>
|
339
|
-
|
340
|
-
return <#if doExistMessageForUsernameOrPassword>true<#else>false</#if>;
|
341
|
-
|
342
|
-
<#else>
|
343
|
-
|
344
|
-
<#assign doExistMessageForField = "">
|
203
|
+
<#-- https://github.com/keycloakify/keycloakify/pull/218 -->
|
204
|
+
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
345
205
|
|
346
|
-
|
347
|
-
<#assign doExistMessageForField = messagesPerField.exists('${fieldName}')>
|
348
|
-
<#recover>
|
349
|
-
<#assign doExistMessageForField = true>
|
350
|
-
</#attempt>
|
206
|
+
<#assign doExistErrorOnUsernameOrPassword = "">
|
351
207
|
|
352
|
-
|
208
|
+
<#attempt>
|
209
|
+
<#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
|
210
|
+
<#recover>
|
211
|
+
<#assign doExistErrorOnUsernameOrPassword = true>
|
212
|
+
</#attempt>
|
353
213
|
|
354
|
-
</#if
|
214
|
+
return <#if doExistErrorOnUsernameOrPassword>true<#else>false</#if>;
|
355
215
|
|
356
216
|
<#else>
|
357
217
|
|
358
|
-
|
359
|
-
<#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
|
218
|
+
<#assign doExistErrorMessageForField = "">
|
360
219
|
|
361
|
-
|
220
|
+
<#attempt>
|
221
|
+
<#assign doExistErrorMessageForField = messagesPerField.exists('${fieldName}')>
|
222
|
+
<#recover>
|
223
|
+
<#assign doExistErrorMessageForField = true>
|
224
|
+
</#attempt>
|
362
225
|
|
363
|
-
|
364
|
-
<#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
|
365
|
-
<#recover>
|
366
|
-
<#assign doExistErrorOnUsernameOrPassword = true>
|
367
|
-
</#attempt>
|
368
|
-
|
369
|
-
return <#if doExistErrorOnUsernameOrPassword>true<#else>false</#if>;
|
370
|
-
|
371
|
-
<#else>
|
372
|
-
|
373
|
-
<#assign doExistErrorMessageForField = "">
|
374
|
-
|
375
|
-
<#attempt>
|
376
|
-
<#assign doExistErrorMessageForField = messagesPerField.exists('${fieldName}')>
|
377
|
-
<#recover>
|
378
|
-
<#assign doExistErrorMessageForField = true>
|
379
|
-
</#attempt>
|
380
|
-
|
381
|
-
return <#if doExistErrorMessageForField>true<#else>false</#if>;
|
382
|
-
|
383
|
-
</#if>
|
226
|
+
return <#if doExistErrorMessageForField>true<#else>false</#if>;
|
384
227
|
|
385
228
|
</#if>
|
386
229
|
|
@@ -390,6 +233,19 @@
|
|
390
233
|
throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
|
391
234
|
</#if>
|
392
235
|
|
236
|
+
},
|
237
|
+
"getFirstError": function () {
|
238
|
+
|
239
|
+
for( let i = 0; i < arguments.length; i++ ){
|
240
|
+
|
241
|
+
const fieldName = arguments[i];
|
242
|
+
|
243
|
+
if( out.messagesPerField.existsError(fieldName) ){
|
244
|
+
return out.messagesPerField.get(fieldName);
|
245
|
+
}
|
246
|
+
|
247
|
+
}
|
248
|
+
|
393
249
|
}
|
394
250
|
};
|
395
251
|
|
@@ -505,6 +361,10 @@
|
|
505
361
|
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
|
506
362
|
are_same_path(path, ["login"]) &&
|
507
363
|
key == "password"
|
364
|
+
) || (
|
365
|
+
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
|
366
|
+
are_same_path(path, []) &&
|
367
|
+
key == "realmAttributes"
|
508
368
|
)
|
509
369
|
>
|
510
370
|
<#local out_seq += ["/*If you need '" + path?join(".") + "." + key + "' on " + pageId + ", please submit an issue to the Keycloakify repo*/"]>
|
@@ -513,7 +373,7 @@
|
|
513
373
|
|
514
374
|
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
|
515
375
|
<#if (
|
516
|
-
["register.ftl", "info.ftl", "login.ftl", "login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(pageId) &&
|
376
|
+
["register.ftl", "register-user-profile.ftl", "info.ftl", "login.ftl", "login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(pageId) &&
|
517
377
|
key == "attemptedUsername" && are_same_path(path, ["auth"])
|
518
378
|
)>
|
519
379
|
<#attempt>
|
@@ -523,7 +383,7 @@
|
|
523
383
|
<#continue>
|
524
384
|
</#if>
|
525
385
|
<#recover>
|
526
|
-
<#local out_seq += ["/*
|
386
|
+
<#local out_seq += ["/*Accessing attemptedUsername throwed an exception */"]>
|
527
387
|
</#attempt>
|
528
388
|
</#if>
|
529
389
|
|
@@ -668,12 +528,23 @@
|
|
668
528
|
<#return '"' + object?datetime?iso_utc + '"'>
|
669
529
|
</#if>
|
670
530
|
|
531
|
+
<#local isNumber = "">
|
532
|
+
<#attempt>
|
533
|
+
<#local isNumber = object?is_number>
|
534
|
+
<#recover>
|
535
|
+
<#return "ABORT: Can't test if it's a number">
|
536
|
+
</#attempt>
|
537
|
+
|
538
|
+
<#if isNumber>
|
539
|
+
<#return object?c>
|
540
|
+
</#if>
|
541
|
+
|
671
542
|
<#attempt>
|
672
543
|
<#return '"' + object?js_string + '"'>;
|
673
544
|
<#recover>
|
674
545
|
</#attempt>
|
675
546
|
|
676
|
-
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non enumerable object">
|
547
|
+
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
|
677
548
|
|
678
549
|
</#function>
|
679
550
|
<#function is_subpath path searchedPath>
|