keycloakify 9.6.6 → 10.0.0-rc.0
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/README.md +1 -1
- 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/download-builtin-keycloak-theme.js +12 -2
- package/bin/download-builtin-keycloak-theme.js.map +1 -1
- package/bin/keycloakify/buildJars/buildJar.d.ts +14 -0
- package/bin/keycloakify/buildJars/buildJar.js +216 -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 +94 -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/buildOptions/getNpmWorkspaceRootDirPath.js +1 -1
- package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js.map +1 -1
- package/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +103 -232
- 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 +54 -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/download-builtin-keycloak-theme.ts +14 -1
- package/src/bin/keycloakify/buildJars/buildJar.ts +163 -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/buildOptions/getNpmWorkspaceRootDirPath.ts +1 -1
- package/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +103 -232
- 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 +33 -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
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UpdateEmail.js","sourceRoot":"","sources":["../../src/login/pages/UpdateEmail.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;
|
1
|
+
{"version":3,"file":"UpdateEmail.js","sourceRoot":"","sources":["../../src/login/pages/UpdateEmail.tsx"],"names":[],"mappings":"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"}
|
@@ -1,95 +1,133 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
-
import {
|
2
|
+
import { useEffect, Fragment } from "react";
|
3
3
|
import { clsx } from "../../tools/clsx";
|
4
|
-
import { base64url } from "rfc4648";
|
5
|
-
import { useConstCallback } from "../../tools/useConstCallback";
|
6
4
|
import { useGetClassName } from "../../login/lib/useGetClassName";
|
7
5
|
import { assert } from "tsafe/assert";
|
8
|
-
import {
|
9
|
-
|
6
|
+
import { createUseInsertScriptTags } from "../../tools/useInsertScriptTags";
|
7
|
+
const { useInsertScriptTags } = createUseInsertScriptTags();
|
10
8
|
export default function WebauthnAuthenticate(props) {
|
11
9
|
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
|
12
10
|
const { getClassName } = useGetClassName({ doUseDefaultCss, classes });
|
13
|
-
const { url } = kcContext;
|
11
|
+
const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout, messagesPerField, realm, registrationDisabled, authenticators, shouldDisplayAuthenticators } = kcContext;
|
14
12
|
const { msg, msgStr } = i18n;
|
15
|
-
const {
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
13
|
+
const { insertScriptTags } = useInsertScriptTags({
|
14
|
+
"scriptTags": [
|
15
|
+
{
|
16
|
+
"type": "text/javascript",
|
17
|
+
"src": `${url.resourcesCommonPath}/node_modules/jquery/dist/jquery.min.js`
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"type": "text/javascript",
|
21
|
+
"src": `${url.resourcesPath}/js/base64url.js`
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"type": "text/javascript",
|
25
|
+
"textContent": `
|
26
|
+
|
27
|
+
function webAuthnAuthenticate() {
|
28
|
+
let isUserIdentified = ${isUserIdentified};
|
29
|
+
if (!isUserIdentified) {
|
30
|
+
doAuthenticate([]);
|
31
|
+
return;
|
32
|
+
}
|
33
|
+
checkAllowCredentials();
|
34
|
+
}
|
35
|
+
|
36
|
+
function checkAllowCredentials() {
|
37
|
+
let allowCredentials = [];
|
38
|
+
let authn_use = document.forms['authn_select'].authn_use_chk;
|
39
|
+
|
40
|
+
if (authn_use !== undefined) {
|
41
|
+
if (authn_use.length === undefined) {
|
42
|
+
allowCredentials.push({
|
43
|
+
id: base64url.decode(authn_use.value, {loose: true}),
|
44
|
+
type: 'public-key',
|
45
|
+
});
|
46
|
+
} else {
|
47
|
+
for (let i = 0; i < authn_use.length; i++) {
|
48
|
+
allowCredentials.push({
|
49
|
+
id: base64url.decode(authn_use[i].value, {loose: true}),
|
50
|
+
type: 'public-key',
|
51
|
+
});
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
doAuthenticate(allowCredentials);
|
56
|
+
}
|
57
|
+
|
58
|
+
|
59
|
+
function doAuthenticate(allowCredentials) {
|
60
|
+
|
61
|
+
// Check if WebAuthn is supported by this browser
|
62
|
+
if (!window.PublicKeyCredential) {
|
63
|
+
$("#error").val("${msgStr("webauthn-unsupported-browser-text")}");
|
64
|
+
$("#webauth").submit();
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
|
68
|
+
let challenge = "${challenge}";
|
69
|
+
let userVerification = "${userVerification}";
|
70
|
+
let rpId = "${rpId}";
|
71
|
+
let publicKey = {
|
72
|
+
rpId : rpId,
|
73
|
+
challenge: base64url.decode(challenge, { loose: true })
|
74
|
+
};
|
75
|
+
|
76
|
+
let createTimeout = ${createTimeout};
|
77
|
+
if (createTimeout !== 0) publicKey.timeout = createTimeout * 1000;
|
78
|
+
|
79
|
+
if (allowCredentials.length) {
|
80
|
+
publicKey.allowCredentials = allowCredentials;
|
81
|
+
}
|
82
|
+
|
83
|
+
if (userVerification !== 'not specified') publicKey.userVerification = userVerification;
|
84
|
+
|
85
|
+
navigator.credentials.get({publicKey})
|
86
|
+
.then((result) => {
|
87
|
+
window.result = result;
|
88
|
+
|
89
|
+
let clientDataJSON = result.response.clientDataJSON;
|
90
|
+
let authenticatorData = result.response.authenticatorData;
|
91
|
+
let signature = result.response.signature;
|
92
|
+
|
93
|
+
$("#clientDataJSON").val(base64url.encode(new Uint8Array(clientDataJSON), { pad: false }));
|
94
|
+
$("#authenticatorData").val(base64url.encode(new Uint8Array(authenticatorData), { pad: false }));
|
95
|
+
$("#signature").val(base64url.encode(new Uint8Array(signature), { pad: false }));
|
96
|
+
$("#credentialId").val(result.id);
|
97
|
+
if(result.response.userHandle) {
|
98
|
+
$("#userHandle").val(base64url.encode(new Uint8Array(result.response.userHandle), { pad: false }));
|
99
|
+
}
|
100
|
+
$("#webauth").submit();
|
101
|
+
})
|
102
|
+
.catch((err) => {
|
103
|
+
$("#error").val(err);
|
104
|
+
$("#webauth").submit();
|
105
|
+
})
|
106
|
+
;
|
107
|
+
}
|
108
|
+
|
109
|
+
`
|
28
110
|
}
|
29
|
-
|
30
|
-
};
|
31
|
-
const allowCredentials = authenticators.authenticators.map(authenticator => ({
|
32
|
-
id: base64url.parse(authenticator.credentialId, { loose: true }),
|
33
|
-
type: "public-key"
|
34
|
-
}));
|
35
|
-
// Check if WebAuthn is supported by this browser
|
36
|
-
if (!window.PublicKeyCredential) {
|
37
|
-
setError(msgStr("webauthn-unsupported-browser-text"));
|
38
|
-
submitForm();
|
39
|
-
return;
|
40
|
-
}
|
41
|
-
const publicKey = {
|
42
|
-
rpId,
|
43
|
-
challenge: base64url.parse(challenge, { loose: true })
|
44
|
-
};
|
45
|
-
if (createTimeout !== 0) {
|
46
|
-
publicKey.timeout = createTimeout * 1000;
|
47
|
-
}
|
48
|
-
if (allowCredentials.length) {
|
49
|
-
publicKey.allowCredentials = allowCredentials;
|
50
|
-
}
|
51
|
-
if (userVerification !== "not specified") {
|
52
|
-
publicKey.userVerification = userVerification;
|
53
|
-
}
|
54
|
-
try {
|
55
|
-
const result = await navigator.credentials.get({ publicKey });
|
56
|
-
if (!result || result.type != "public-key") {
|
57
|
-
return;
|
58
|
-
}
|
59
|
-
assert(is(result));
|
60
|
-
if (!("authenticatorData" in result.response)) {
|
61
|
-
return;
|
62
|
-
}
|
63
|
-
const response = result.response;
|
64
|
-
const clientDataJSON = response.clientDataJSON;
|
65
|
-
assert(typeGuard(response, "signature" in response && response.authenticatorData instanceof ArrayBuffer), "response not an AuthenticatorAssertionResponse");
|
66
|
-
const authenticatorData = response.authenticatorData;
|
67
|
-
const signature = response.signature;
|
68
|
-
setClientDataJSON(base64url.stringify(new Uint8Array(clientDataJSON), { "pad": false }));
|
69
|
-
setAuthenticatorData(base64url.stringify(new Uint8Array(authenticatorData), { "pad": false }));
|
70
|
-
setSignature(base64url.stringify(new Uint8Array(signature), { "pad": false }));
|
71
|
-
setCredentialId(result.id);
|
72
|
-
setUserHandle(base64url.stringify(new Uint8Array(response.userHandle), { "pad": false }));
|
73
|
-
}
|
74
|
-
catch (err) {
|
75
|
-
setError(String(err));
|
76
|
-
}
|
77
|
-
submitForm();
|
111
|
+
]
|
78
112
|
});
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
113
|
+
useEffect(() => {
|
114
|
+
insertScriptTags();
|
115
|
+
}, []);
|
116
|
+
return (_jsx(Template, Object.assign({}, { kcContext, i18n, doUseDefaultCss, classes }, { displayMessage: !messagesPerField.existsError("username"), displayInfo: realm.password && realm.registrationAllowed && !registrationDisabled, infoNode: _jsx("div", Object.assign({ id: "kc-registration" }, { children: _jsxs("span", { children: [msg("noAccount"), " ", _jsx("a", Object.assign({ tabIndex: 6, href: url.registrationUrl }, { children: msg("doRegister") }))] }) })), headerNode: msg("webauthn-login-title") }, { children: _jsxs("div", Object.assign({ id: "kc-form-webauthn", className: getClassName("kcFormClass") }, { children: [_jsxs("form", Object.assign({ id: "webauth", action: url.loginAction, method: "post" }, { children: [_jsx("input", { type: "hidden", id: "clientDataJSON", name: "clientDataJSON" }), _jsx("input", { type: "hidden", id: "authenticatorData", name: "authenticatorData" }), _jsx("input", { type: "hidden", id: "signature", name: "signature" }), _jsx("input", { type: "hidden", id: "credentialId", name: "credentialId" }), _jsx("input", { type: "hidden", id: "userHandle", name: "userHandle" }), _jsx("input", { type: "hidden", id: "error", name: "error" })] })), _jsxs("div", Object.assign({ className: clsx(getClassName("kcFormGroupClass"), "no-bottom-margin") }, { children: [authenticators && (_jsxs(_Fragment, { children: [_jsx("form", Object.assign({ id: "authn_select", className: getClassName("kcFormClass") }, { children: authenticators.authenticators.map(authenticator => (_jsx("input", { type: "hidden", name: "authn_use_chk", value: authenticator.credentialId }))) })), shouldDisplayAuthenticators && (_jsxs(_Fragment, { children: [authenticators.authenticators.length > 1 && (_jsx("p", Object.assign({ className: getClassName("kcSelectAuthListItemTitle") }, { children: msg("webauthn-available-authenticators") }))), _jsx("div", Object.assign({ className: getClassName("kcFormOptionsClass") }, { children: authenticators.authenticators.map((authenticator, i) => {
|
117
|
+
var _a;
|
118
|
+
return (_jsxs("div", Object.assign({ id: "kc-webauthn-authenticator", className: getClassName("kcSelectAuthListItemClass") }, { children: [_jsx("div", Object.assign({ className: getClassName("kcSelectAuthListItemIconClass") }, { children: _jsx("i", { className: clsx((() => {
|
119
|
+
const className = getClassName(authenticator.transports.iconClass);
|
120
|
+
if (className === authenticator.transports.iconClass) {
|
121
|
+
return getClassName("kcWebAuthnDefaultIcon");
|
122
|
+
}
|
123
|
+
return className;
|
124
|
+
})(), getClassName("kcSelectAuthListItemIconPropertyClass")) }) })), _jsxs("div", Object.assign({ className: getClassName("kcSelectAuthListItemArrowIconClass") }, { children: [_jsx("div", Object.assign({ id: "kc-webauthn-authenticator-label", className: getClassName("kcSelectAuthListItemHeadingClass") }, { children: msg(authenticator.label) })), ((_a = authenticator.transports.displayNameProperties) === null || _a === void 0 ? void 0 : _a.length) && (_jsx("div", Object.assign({ id: "kc-webauthn-authenticator-transport", className: getClassName("kcSelectAuthListItemDescriptionClass") }, { children: authenticator.transports.displayNameProperties
|
125
|
+
.map((nameProperty, i, arr) => ({ nameProperty, "hasNext": i !== arr.length - 1 }))
|
126
|
+
.map(({ nameProperty, hasNext }) => (_jsxs(Fragment, { children: [_jsx("span", { children: msg(nameProperty) }), hasNext && _jsx("span", { children: ", " })] }, nameProperty))) }))), _jsxs("div", Object.assign({ className: getClassName("kcSelectAuthListItemDescriptionClass") }, { children: [_jsx("span", Object.assign({ id: "kc-webauthn-authenticator-created-label" }, { children: msg("webauthn-createdAt-label") })), _jsx("span", Object.assign({ id: "kc-webauthn-authenticator-created" }, { children: authenticator.createdAt }))] })), _jsx("div", { className: getClassName("kcSelectAuthListItemFillClass") })] }))] }), i));
|
127
|
+
}) }))] }))] })), _jsx("div", Object.assign({ id: "kc-form-buttons", className: getClassName("kcFormButtonsClass") }, { children: _jsx("input", { id: "authenticateWebAuthnButton", type: "button", onClick: () => {
|
128
|
+
assert("webAuthnAuthenticate" in window);
|
129
|
+
assert(typeof window.webAuthnAuthenticate === "function");
|
130
|
+
window.webAuthnAuthenticate();
|
131
|
+
}, autoFocus: true, value: msgStr("webauthn-doAuthenticate"), className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonBlockClass"), getClassName("kcButtonLargeClass")) }) }))] }))] })) })));
|
94
132
|
}
|
95
133
|
//# sourceMappingURL=WebauthnAuthenticate.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WebauthnAuthenticate.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnAuthenticate.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"WebauthnAuthenticate.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnAuthenticate.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import type { PageProps } from "../../login/pages/PageProps";
|
3
|
+
import type { KcContext } from "../kcContext";
|
4
|
+
import type { I18n } from "../i18n";
|
5
|
+
export default function WebauthnError(props: PageProps<Extract<KcContext, {
|
6
|
+
pageId: "webauthn-error.ftl";
|
7
|
+
}>, I18n>): JSX.Element;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { clsx } from "../../tools/clsx";
|
3
|
+
import { useGetClassName } from "../../login/lib/useGetClassName";
|
4
|
+
export default function WebauthnError(props) {
|
5
|
+
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
|
6
|
+
const { url, isAppInitiatedAction } = kcContext;
|
7
|
+
const { msg, msgStr } = i18n;
|
8
|
+
const { getClassName } = useGetClassName({
|
9
|
+
doUseDefaultCss,
|
10
|
+
classes
|
11
|
+
});
|
12
|
+
return (_jsxs(Template, Object.assign({}, { kcContext, i18n, doUseDefaultCss, classes }, { displayMessage: true, headerNode: msg("webauthn-error-title") }, { children: [_jsxs("form", Object.assign({ id: "kc-error-credential-form", className: getClassName("kcFormClass"), action: url.loginAction, method: "post" }, { children: [_jsx("input", { type: "hidden", id: "executionValue", name: "authenticationExecution" }), _jsx("input", { type: "hidden", id: "isSetRetry", name: "isSetRetry" })] })), _jsx("input", { tabIndex: 4, onClick: () => {
|
13
|
+
// @ts-expect-error: Trusted Keycloak's code
|
14
|
+
document.getElementById("isSetRetry").value = "retry";
|
15
|
+
// @ts-expect-error: Trusted Keycloak's code
|
16
|
+
document.getElementById("executionValue").value = "${execution}";
|
17
|
+
// @ts-expect-error: Trusted Keycloak's code
|
18
|
+
document.getElementById("kc-error-credential-form").submit();
|
19
|
+
}, type: "button", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonBlockClass"), getClassName("kcButtonLargeClass")), name: "try-again", id: "kc-try-again", value: msgStr("doTryAgain") }), isAppInitiatedAction && (_jsx("form", Object.assign({ action: url.loginAction, className: getClassName("kcFormClass"), id: "kc-webauthn-settings-form", method: "post" }, { children: _jsx("button", Object.assign({ type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonBlockClass"), getClassName("kcButtonLargeClass")), id: "cancelWebAuthnAIA", name: "cancel-aia", value: "true" }, { children: msgStr("doCancel") })) })))] })));
|
20
|
+
}
|
21
|
+
//# sourceMappingURL=WebauthnError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"WebauthnError.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnError.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAIxE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAA4E;IAC9G,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAEhD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;QACrC,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,OAAO,CACH,MAAC,QAAQ,oBAAK,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAE,cAAc,QAAC,UAAU,EAAE,GAAG,CAAC,sBAAsB,CAAC,iBAC/G,8BAAM,EAAE,EAAC,0BAA0B,EAAC,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBAC9G,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,gBAAgB,EAAC,IAAI,EAAC,yBAAyB,GAAG,EAC1E,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,YAAY,EAAC,IAAI,EAAC,YAAY,GAAG,KACtD,EACP,gBACI,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,GAAG,EAAE;oBACV,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;oBACtD,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;oBACjE,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC,MAAM,EAAE,CAAC;gBACjE,CAAC,EACD,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,IAAI,CACX,YAAY,CAAC,eAAe,CAAC,EAC7B,YAAY,CAAC,sBAAsB,CAAC,EACpC,YAAY,CAAC,oBAAoB,CAAC,EAClC,YAAY,CAAC,oBAAoB,CAAC,CACrC,EACD,IAAI,EAAC,WAAW,EAChB,EAAE,EAAC,cAAc,EACjB,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAC7B,EACD,oBAAoB,IAAI,CACrB,6BAAM,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,EAAE,EAAC,2BAA2B,EAAC,MAAM,EAAC,MAAM,gBAC/G,+BACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,IAAI,CACX,YAAY,CAAC,eAAe,CAAC,EAC7B,YAAY,CAAC,sBAAsB,CAAC,EACpC,YAAY,CAAC,oBAAoB,CAAC,EAClC,YAAY,CAAC,oBAAoB,CAAC,CACrC,EACD,EAAE,EAAC,mBAAmB,EACtB,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,MAAM,gBAEX,MAAM,CAAC,UAAU,CAAC,IACd,IACN,CACV,KACM,CACd,CAAC;AACN,CAAC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import type { PageProps } from "../../login/pages/PageProps";
|
3
|
+
import type { KcContext } from "../kcContext";
|
4
|
+
import type { I18n } from "../i18n";
|
5
|
+
export default function WebauthnRegister(props: PageProps<Extract<KcContext, {
|
6
|
+
pageId: "webauthn-register.ftl";
|
7
|
+
}>, I18n>): JSX.Element;
|
@@ -0,0 +1,193 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
+
import { useEffect } from "react";
|
3
|
+
import { clsx } from "../../tools/clsx";
|
4
|
+
import { useGetClassName } from "../../login/lib/useGetClassName";
|
5
|
+
import { assert } from "tsafe/assert";
|
6
|
+
import { createUseInsertScriptTags } from "../../tools/useInsertScriptTags";
|
7
|
+
const { useInsertScriptTags } = createUseInsertScriptTags();
|
8
|
+
export default function WebauthnRegister(props) {
|
9
|
+
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
|
10
|
+
const { getClassName } = useGetClassName({ doUseDefaultCss, classes });
|
11
|
+
const { url, challenge, userid, username, signatureAlgorithms, rpEntityName, rpId, attestationConveyancePreference, authenticatorAttachment, requireResidentKey, userVerificationRequirement, createTimeout, excludeCredentialIds, isSetRetry, isAppInitiatedAction } = kcContext;
|
12
|
+
const { msg, msgStr } = i18n;
|
13
|
+
const { insertScriptTags } = useInsertScriptTags({
|
14
|
+
"scriptTags": [
|
15
|
+
{
|
16
|
+
"type": "text/javascript",
|
17
|
+
"src": `${url.resourcesCommonPath}/node_modules/jquery/dist/jquery.min.js`
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"type": "text/javascript",
|
21
|
+
"src": `${url.resourcesPath}/js/base64url.js`
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"type": "text/javascript",
|
25
|
+
"textContent": `
|
26
|
+
function registerSecurityKey() {
|
27
|
+
|
28
|
+
// Check if WebAuthn is supported by this browser
|
29
|
+
if (!window.PublicKeyCredential) {
|
30
|
+
$("#error").val("${msgStr("webauthn-unsupported-browser-text")}");
|
31
|
+
$("#register").submit();
|
32
|
+
return;
|
33
|
+
}
|
34
|
+
|
35
|
+
// mandatory parameters
|
36
|
+
let challenge = "${challenge}";
|
37
|
+
let userid = "${userid}";
|
38
|
+
let username = "${username}";
|
39
|
+
|
40
|
+
let signatureAlgorithms =${JSON.stringify(signatureAlgorithms)};
|
41
|
+
let pubKeyCredParams = getPubKeyCredParams(signatureAlgorithms);
|
42
|
+
|
43
|
+
let rpEntityName = "${rpEntityName}";
|
44
|
+
let rp = {name: rpEntityName};
|
45
|
+
|
46
|
+
let publicKey = {
|
47
|
+
challenge: base64url.decode(challenge, {loose: true}),
|
48
|
+
rp: rp,
|
49
|
+
user: {
|
50
|
+
id: base64url.decode(userid, {loose: true}),
|
51
|
+
name: username,
|
52
|
+
displayName: username
|
53
|
+
},
|
54
|
+
pubKeyCredParams: pubKeyCredParams,
|
55
|
+
};
|
56
|
+
|
57
|
+
// optional parameters
|
58
|
+
let rpId = "${rpId}";
|
59
|
+
publicKey.rp.id = rpId;
|
60
|
+
|
61
|
+
let attestationConveyancePreference = "${attestationConveyancePreference}";
|
62
|
+
if (attestationConveyancePreference !== 'not specified') publicKey.attestation = attestationConveyancePreference;
|
63
|
+
|
64
|
+
let authenticatorSelection = {};
|
65
|
+
let isAuthenticatorSelectionSpecified = false;
|
66
|
+
|
67
|
+
let authenticatorAttachment = "${authenticatorAttachment}";
|
68
|
+
if (authenticatorAttachment !== 'not specified') {
|
69
|
+
authenticatorSelection.authenticatorAttachment = authenticatorAttachment;
|
70
|
+
isAuthenticatorSelectionSpecified = true;
|
71
|
+
}
|
72
|
+
|
73
|
+
let requireResidentKey = "${requireResidentKey}";
|
74
|
+
if (requireResidentKey !== 'not specified') {
|
75
|
+
if (requireResidentKey === 'Yes')
|
76
|
+
authenticatorSelection.requireResidentKey = true;
|
77
|
+
else
|
78
|
+
authenticatorSelection.requireResidentKey = false;
|
79
|
+
isAuthenticatorSelectionSpecified = true;
|
80
|
+
}
|
81
|
+
|
82
|
+
let userVerificationRequirement = "${userVerificationRequirement}";
|
83
|
+
if (userVerificationRequirement !== 'not specified') {
|
84
|
+
authenticatorSelection.userVerification = userVerificationRequirement;
|
85
|
+
isAuthenticatorSelectionSpecified = true;
|
86
|
+
}
|
87
|
+
|
88
|
+
if (isAuthenticatorSelectionSpecified) publicKey.authenticatorSelection = authenticatorSelection;
|
89
|
+
|
90
|
+
let createTimeout = ${createTimeout};
|
91
|
+
if (createTimeout !== 0) publicKey.timeout = createTimeout * 1000;
|
92
|
+
|
93
|
+
let excludeCredentialIds = "${excludeCredentialIds}";
|
94
|
+
let excludeCredentials = getExcludeCredentials(excludeCredentialIds);
|
95
|
+
if (excludeCredentials.length > 0) publicKey.excludeCredentials = excludeCredentials;
|
96
|
+
|
97
|
+
navigator.credentials.create({publicKey})
|
98
|
+
.then(function (result) {
|
99
|
+
window.result = result;
|
100
|
+
let clientDataJSON = result.response.clientDataJSON;
|
101
|
+
let attestationObject = result.response.attestationObject;
|
102
|
+
let publicKeyCredentialId = result.rawId;
|
103
|
+
|
104
|
+
$("#clientDataJSON").val(base64url.encode(new Uint8Array(clientDataJSON), {pad: false}));
|
105
|
+
$("#attestationObject").val(base64url.encode(new Uint8Array(attestationObject), {pad: false}));
|
106
|
+
$("#publicKeyCredentialId").val(base64url.encode(new Uint8Array(publicKeyCredentialId), {pad: false}));
|
107
|
+
|
108
|
+
if (typeof result.response.getTransports === "function") {
|
109
|
+
let transports = result.response.getTransports();
|
110
|
+
if (transports) {
|
111
|
+
$("#transports").val(getTransportsAsString(transports));
|
112
|
+
}
|
113
|
+
} else {
|
114
|
+
console.log("Your browser is not able to recognize supported transport media for the authenticator.");
|
115
|
+
}
|
116
|
+
|
117
|
+
let initLabel = "WebAuthn Authenticator (Default Label)";
|
118
|
+
let labelResult = window.prompt("Please input your registered authenticator's label", initLabel);
|
119
|
+
if (labelResult === null) labelResult = initLabel;
|
120
|
+
$("#authenticatorLabel").val(labelResult);
|
121
|
+
|
122
|
+
$("#register").submit();
|
123
|
+
|
124
|
+
})
|
125
|
+
.catch(function (err) {
|
126
|
+
$("#error").val(err);
|
127
|
+
$("#register").submit();
|
128
|
+
|
129
|
+
});
|
130
|
+
}
|
131
|
+
|
132
|
+
function getPubKeyCredParams(signatureAlgorithmsList) {
|
133
|
+
let pubKeyCredParams = [];
|
134
|
+
if (signatureAlgorithmsList === []) {
|
135
|
+
pubKeyCredParams.push({type: "public-key", alg: -7});
|
136
|
+
return pubKeyCredParams;
|
137
|
+
}
|
138
|
+
|
139
|
+
for (let i = 0; i < signatureAlgorithmsList.length; i++) {
|
140
|
+
pubKeyCredParams.push({
|
141
|
+
type: "public-key",
|
142
|
+
alg: signatureAlgorithmsList[i]
|
143
|
+
});
|
144
|
+
}
|
145
|
+
return pubKeyCredParams;
|
146
|
+
}
|
147
|
+
|
148
|
+
function getExcludeCredentials(excludeCredentialIds) {
|
149
|
+
let excludeCredentials = [];
|
150
|
+
if (excludeCredentialIds === "") return excludeCredentials;
|
151
|
+
|
152
|
+
let excludeCredentialIdsList = excludeCredentialIds.split(',');
|
153
|
+
|
154
|
+
for (let i = 0; i < excludeCredentialIdsList.length; i++) {
|
155
|
+
excludeCredentials.push({
|
156
|
+
type: "public-key",
|
157
|
+
id: base64url.decode(excludeCredentialIdsList[i],
|
158
|
+
{loose: true})
|
159
|
+
});
|
160
|
+
}
|
161
|
+
return excludeCredentials;
|
162
|
+
}
|
163
|
+
|
164
|
+
function getTransportsAsString(transportsList) {
|
165
|
+
if (transportsList === '' || transportsList.constructor !== Array) return "";
|
166
|
+
|
167
|
+
let transportsString = "";
|
168
|
+
|
169
|
+
for (let i = 0; i < transportsList.length; i++) {
|
170
|
+
transportsString += transportsList[i] + ",";
|
171
|
+
}
|
172
|
+
|
173
|
+
return transportsString.slice(0, -1);
|
174
|
+
}
|
175
|
+
`
|
176
|
+
}
|
177
|
+
]
|
178
|
+
});
|
179
|
+
useEffect(() => {
|
180
|
+
insertScriptTags();
|
181
|
+
}, []);
|
182
|
+
return (_jsxs(Template, Object.assign({}, { kcContext, i18n, doUseDefaultCss, classes }, { headerNode: _jsxs(_Fragment, { children: [_jsx("span", { className: getClassName("kcWebAuthnKeyIcon") }), msg("webauthn-registration-title")] }) }, { children: [_jsx("form", Object.assign({ id: "register", className: getClassName("kcFormClass"), action: url.loginAction, method: "post" }, { children: _jsxs("div", Object.assign({ className: getClassName("kcFormGroupClass") }, { children: [_jsx("input", { type: "hidden", id: "clientDataJSON", name: "clientDataJSON" }), _jsx("input", { type: "hidden", id: "attestationObject", name: "attestationObject" }), _jsx("input", { type: "hidden", id: "publicKeyCredentialId", name: "publicKeyCredentialId" }), _jsx("input", { type: "hidden", id: "authenticatorLabel", name: "authenticatorLabel" }), _jsx("input", { type: "hidden", id: "transports", name: "transports" }), _jsx("input", { type: "hidden", id: "error", name: "error" }), _jsx(LogoutOtherSessions, Object.assign({}, { i18n, getClassName }))] })) })), _jsx("input", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonBlockClass"), getClassName("kcButtonLargeClass")), id: "registerWebAuthn", value: msgStr("doRegisterSecurityKey"), onClick: () => {
|
183
|
+
assert("registerSecurityKey" in window);
|
184
|
+
assert(typeof window.registerSecurityKey === "function");
|
185
|
+
window.registerSecurityKey();
|
186
|
+
} }), !isSetRetry && isAppInitiatedAction && (_jsx("form", Object.assign({ action: url.loginAction, className: getClassName("kcFormClass"), id: "kc-webauthn-settings-form", method: "post" }, { children: _jsx("button", Object.assign({ type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonBlockClass"), getClassName("kcButtonLargeClass")), id: "cancelWebAuthnAIA", name: "cancel-aia", value: "true" }, { children: msg("doCancel") })) })))] })));
|
187
|
+
}
|
188
|
+
function LogoutOtherSessions(props) {
|
189
|
+
const { getClassName, i18n } = props;
|
190
|
+
const { msg } = i18n;
|
191
|
+
return (_jsx("div", Object.assign({ id: "kc-form-options", className: getClassName("kcFormOptionsClass") }, { children: _jsx("div", Object.assign({ className: getClassName("kcFormOptionsWrapperClass") }, { children: _jsx("div", Object.assign({ className: "checkbox" }, { children: _jsxs("label", { children: [_jsx("input", { type: "checkbox", id: "logout-sessions", name: "logout-sessions", value: "on", checked: true }), msg("logoutOtherSessions")] }) })) })) })));
|
192
|
+
}
|
193
|
+
//# sourceMappingURL=WebauthnRegister.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"WebauthnRegister.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnRegister.tsx"],"names":[],"mappings":"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"}
|