@andreyyolkin/keycloakify-vue 0.1.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/LICENSE +21 -0
- package/README.md +109 -0
- package/keycloakify-vue/account/DefaultPage.vue +55 -0
- package/keycloakify-vue/account/DefaultPage.vue.d.ts +14 -0
- package/keycloakify-vue/account/KcContext/index.d.ts +1 -0
- package/keycloakify-vue/account/KcContext/index.js +0 -0
- package/keycloakify-vue/account/Template.useInitialize.d.ts +13 -0
- package/keycloakify-vue/account/Template.useInitialize.js +20 -0
- package/keycloakify-vue/account/Template.vue +178 -0
- package/keycloakify-vue/account/Template.vue.d.ts +17 -0
- package/keycloakify-vue/account/TemplateProps.d.ts +9 -0
- package/keycloakify-vue/account/TemplateProps.js +0 -0
- package/keycloakify-vue/account/i18n/i18n.d.ts +11 -0
- package/keycloakify-vue/account/i18n/i18n.js +0 -0
- package/keycloakify-vue/account/i18n/i18nBuilder.d.ts +18 -0
- package/keycloakify-vue/account/i18n/i18nBuilder.js +29 -0
- package/keycloakify-vue/account/i18n/index.d.ts +1 -0
- package/keycloakify-vue/account/i18n/index.js +1 -0
- package/keycloakify-vue/account/i18n/useI18n.d.ts +28 -0
- package/keycloakify-vue/account/i18n/useI18n.js +67 -0
- package/keycloakify-vue/account/index.d.ts +4 -0
- package/keycloakify-vue/account/index.js +8 -0
- package/keycloakify-vue/account/pages/Account.vue +182 -0
- package/keycloakify-vue/account/pages/Account.vue.d.ts +9 -0
- package/keycloakify-vue/account/pages/Applications.vue +192 -0
- package/keycloakify-vue/account/pages/Applications.vue.d.ts +9 -0
- package/keycloakify-vue/account/pages/FederatedIdentity.vue +123 -0
- package/keycloakify-vue/account/pages/FederatedIdentity.vue.d.ts +9 -0
- package/keycloakify-vue/account/pages/Log.vue +64 -0
- package/keycloakify-vue/account/pages/Log.vue.d.ts +9 -0
- package/keycloakify-vue/account/pages/NotImplemented.vue +24 -0
- package/keycloakify-vue/account/pages/NotImplemented.vue.d.ts +6 -0
- package/keycloakify-vue/account/pages/PageProps.d.ts +9 -0
- package/keycloakify-vue/account/pages/PageProps.js +0 -0
- package/keycloakify-vue/account/pages/Password.vue +247 -0
- package/keycloakify-vue/account/pages/Password.vue.d.ts +9 -0
- package/keycloakify-vue/account/pages/Sessions.vue +84 -0
- package/keycloakify-vue/account/pages/Sessions.vue.d.ts +9 -0
- package/keycloakify-vue/account/pages/Totp.vue +308 -0
- package/keycloakify-vue/account/pages/Totp.vue.d.ts +9 -0
- package/keycloakify-vue/bin/index.js +14 -0
- package/keycloakify-vue/bin/initialize-account-theme/boilerplate/KcContext.js +0 -0
- package/keycloakify-vue/bin/initialize-account-theme/boilerplate/KcPage.vue +23 -0
- package/keycloakify-vue/bin/initialize-account-theme/boilerplate/KcPageStory.js +18 -0
- package/keycloakify-vue/bin/initialize-account-theme/boilerplate/KcPageStory.vue +13 -0
- package/keycloakify-vue/bin/initialize-account-theme/boilerplate/i18n.js +5 -0
- package/keycloakify-vue/login/DefaultPage.vue +167 -0
- package/keycloakify-vue/login/DefaultPage.vue.d.ts +20 -0
- package/keycloakify-vue/login/Template.useInitialize.d.ts +18 -0
- package/keycloakify-vue/login/Template.useInitialize.js +49 -0
- package/keycloakify-vue/login/Template.vue +239 -0
- package/keycloakify-vue/login/Template.vue.d.ts +26 -0
- package/keycloakify-vue/login/TemplateProps.d.ts +14 -0
- package/keycloakify-vue/login/TemplateProps.js +0 -0
- package/keycloakify-vue/login/components/AddRemoveButtonsMultiValuedAttribute.vue +59 -0
- package/keycloakify-vue/login/components/AddRemoveButtonsMultiValuedAttribute.vue.d.ts +15 -0
- package/keycloakify-vue/login/components/FieldErrors.vue +35 -0
- package/keycloakify-vue/login/components/FieldErrors.vue.d.ts +14 -0
- package/keycloakify-vue/login/components/GroupLabel.vue +68 -0
- package/keycloakify-vue/login/components/GroupLabel.vue.d.ts +14 -0
- package/keycloakify-vue/login/components/InputFieldByType.vue +94 -0
- package/keycloakify-vue/login/components/InputFieldByType.vue.d.ts +4 -0
- package/keycloakify-vue/login/components/InputFieldByTypeProps.d.ts +12 -0
- package/keycloakify-vue/login/components/InputFieldByTypeProps.js +0 -0
- package/keycloakify-vue/login/components/InputTag.vue +105 -0
- package/keycloakify-vue/login/components/InputTag.vue.d.ts +7 -0
- package/keycloakify-vue/login/components/InputTagSelects.vue +108 -0
- package/keycloakify-vue/login/components/InputTagSelects.vue.d.ts +4 -0
- package/keycloakify-vue/login/components/LogoutOtherSessions.vue +27 -0
- package/keycloakify-vue/login/components/LogoutOtherSessions.vue.d.ts +9 -0
- package/keycloakify-vue/login/components/PasswordWrapper.vue +42 -0
- package/keycloakify-vue/login/components/PasswordWrapper.vue.d.ts +20 -0
- package/keycloakify-vue/login/components/SelectTag.vue +74 -0
- package/keycloakify-vue/login/components/SelectTag.vue.d.ts +4 -0
- package/keycloakify-vue/login/components/TermsAcceptance.vue +59 -0
- package/keycloakify-vue/login/components/TermsAcceptance.vue.d.ts +13 -0
- package/keycloakify-vue/login/components/TextareaTag.vue +47 -0
- package/keycloakify-vue/login/components/TextareaTag.vue.d.ts +4 -0
- package/keycloakify-vue/login/components/UserProfileFormFields.vue +119 -0
- package/keycloakify-vue/login/components/UserProfileFormFields.vue.d.ts +33 -0
- package/keycloakify-vue/login/components/UserProfileFormFieldsProps.d.ts +22 -0
- package/keycloakify-vue/login/components/UserProfileFormFieldsProps.js +0 -0
- package/keycloakify-vue/login/components/inputLabel.d.ts +4 -0
- package/keycloakify-vue/login/components/inputLabel.js +15 -0
- package/keycloakify-vue/login/i18n/i18n.d.ts +11 -0
- package/keycloakify-vue/login/i18n/i18n.js +0 -0
- package/keycloakify-vue/login/i18n/i18nBuilder.d.ts +18 -0
- package/keycloakify-vue/login/i18n/i18nBuilder.js +29 -0
- package/keycloakify-vue/login/i18n/index.d.ts +1 -0
- package/keycloakify-vue/login/i18n/index.js +1 -0
- package/keycloakify-vue/login/i18n/useI18n.d.ts +28 -0
- package/keycloakify-vue/login/i18n/useI18n.js +67 -0
- package/keycloakify-vue/login/index.d.ts +5 -0
- package/keycloakify-vue/login/index.js +10 -0
- package/keycloakify-vue/login/lib/useUserProfileForm.d.ts +53 -0
- package/keycloakify-vue/login/lib/useUserProfileForm.js +50 -0
- package/keycloakify-vue/login/pages/Code.vue +54 -0
- package/keycloakify-vue/login/pages/Code.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/DeleteAccountConfirm.vue +69 -0
- package/keycloakify-vue/login/pages/DeleteAccountConfirm.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/DeleteCredential.vue +56 -0
- package/keycloakify-vue/login/pages/DeleteCredential.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/Error.vue +41 -0
- package/keycloakify-vue/login/pages/Error.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/FrontchannelLogout.vue +67 -0
- package/keycloakify-vue/login/pages/FrontchannelLogout.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/IdpReviewUserProfile.vue +77 -0
- package/keycloakify-vue/login/pages/IdpReviewUserProfile.vue.d.ts +14 -0
- package/keycloakify-vue/login/pages/Info.vue +61 -0
- package/keycloakify-vue/login/pages/Info.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LinkIdpAction.vue +66 -0
- package/keycloakify-vue/login/pages/LinkIdpAction.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/Login.vue +230 -0
- package/keycloakify-vue/login/pages/Login.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginConfigTotp.vue +233 -0
- package/keycloakify-vue/login/pages/LoginConfigTotp.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginIdpLinkConfirm.vue +57 -0
- package/keycloakify-vue/login/pages/LoginIdpLinkConfirm.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginIdpLinkConfirmOverride.vue +56 -0
- package/keycloakify-vue/login/pages/LoginIdpLinkConfirmOverride.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginIdpLinkEmail.vue +52 -0
- package/keycloakify-vue/login/pages/LoginIdpLinkEmail.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginOauth2DeviceVerifyUserCode.vue +82 -0
- package/keycloakify-vue/login/pages/LoginOauth2DeviceVerifyUserCode.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginOauthGrant.vue +131 -0
- package/keycloakify-vue/login/pages/LoginOauthGrant.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginOtp.vue +135 -0
- package/keycloakify-vue/login/pages/LoginOtp.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginPageExpired.vue +44 -0
- package/keycloakify-vue/login/pages/LoginPageExpired.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginPasskeysConditionalAuthenticate.useScript.d.ts +21 -0
- package/keycloakify-vue/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js +74 -0
- package/keycloakify-vue/login/pages/LoginPasskeysConditionalAuthenticate.vue +255 -0
- package/keycloakify-vue/login/pages/LoginPasskeysConditionalAuthenticate.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginPassword.useScript.d.ts +23 -0
- package/keycloakify-vue/login/pages/LoginPassword.useScript.js +64 -0
- package/keycloakify-vue/login/pages/LoginPassword.vue +191 -0
- package/keycloakify-vue/login/pages/LoginPassword.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeConfig.useScript.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js +139 -0
- package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeConfig.vue +183 -0
- package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeConfig.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeInput.vue +90 -0
- package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeInput.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginResetOtp.vue +88 -0
- package/keycloakify-vue/login/pages/LoginResetOtp.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginResetPassword.vue +114 -0
- package/keycloakify-vue/login/pages/LoginResetPassword.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginUpdatePassword.vue +145 -0
- package/keycloakify-vue/login/pages/LoginUpdatePassword.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginUpdateProfile.vue +94 -0
- package/keycloakify-vue/login/pages/LoginUpdateProfile.vue.d.ts +14 -0
- package/keycloakify-vue/login/pages/LoginUsername.useScript.d.ts +23 -0
- package/keycloakify-vue/login/pages/LoginUsername.useScript.js +64 -0
- package/keycloakify-vue/login/pages/LoginUsername.vue +263 -0
- package/keycloakify-vue/login/pages/LoginUsername.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginVerifyEmail.vue +39 -0
- package/keycloakify-vue/login/pages/LoginVerifyEmail.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LoginX509Info.vue +120 -0
- package/keycloakify-vue/login/pages/LoginX509Info.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/LogoutConfirm.vue +73 -0
- package/keycloakify-vue/login/pages/LogoutConfirm.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/NotImplemented.vue +12 -0
- package/keycloakify-vue/login/pages/NotImplemented.vue.d.ts +6 -0
- package/keycloakify-vue/login/pages/PageProps.d.ts +9 -0
- package/keycloakify-vue/login/pages/PageProps.js +0 -0
- package/keycloakify-vue/login/pages/Register.vue +158 -0
- package/keycloakify-vue/login/pages/Register.vue.d.ts +14 -0
- package/keycloakify-vue/login/pages/SamlPostForm.vue +75 -0
- package/keycloakify-vue/login/pages/SamlPostForm.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/SelectAuthenticator.vue +65 -0
- package/keycloakify-vue/login/pages/SelectAuthenticator.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/SelectOrganization.vue +89 -0
- package/keycloakify-vue/login/pages/SelectOrganization.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/Terms.vue +56 -0
- package/keycloakify-vue/login/pages/Terms.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/UpdateEmail.vue +100 -0
- package/keycloakify-vue/login/pages/UpdateEmail.vue.d.ts +14 -0
- package/keycloakify-vue/login/pages/WebauthnAuthenticate.useScript.d.ts +22 -0
- package/keycloakify-vue/login/pages/WebauthnAuthenticate.useScript.js +53 -0
- package/keycloakify-vue/login/pages/WebauthnAuthenticate.vue +186 -0
- package/keycloakify-vue/login/pages/WebauthnAuthenticate.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/WebauthnError.vue +84 -0
- package/keycloakify-vue/login/pages/WebauthnError.vue.d.ts +9 -0
- package/keycloakify-vue/login/pages/WebauthnRegister.useScript.d.ts +28 -0
- package/keycloakify-vue/login/pages/WebauthnRegister.useScript.js +75 -0
- package/keycloakify-vue/login/pages/WebauthnRegister.vue +105 -0
- package/keycloakify-vue/login/pages/WebauthnRegister.vue.d.ts +9 -0
- package/keycloakify-vue/tools/useInsertLinkTags.d.ts +12 -0
- package/keycloakify-vue/tools/useInsertLinkTags.js +47 -0
- package/keycloakify-vue/tools/useInsertScriptTags.d.ts +19 -0
- package/keycloakify-vue/tools/useInsertScriptTags.js +56 -0
- package/keycloakify-vue/tools/useSetClassName.d.ts +4 -0
- package/keycloakify-vue/tools/useSetClassName.js +16 -0
- package/package.json +553 -0
- package/src/account/DefaultPage.vue +55 -0
- package/src/account/KcContext/index.ts +1 -0
- package/src/account/Template.useInitialize.ts +34 -0
- package/src/account/Template.vue +178 -0
- package/src/account/TemplateProps.ts +11 -0
- package/src/account/i18n/i18n.ts +16 -0
- package/src/account/i18n/i18nBuilder.ts +100 -0
- package/src/account/i18n/index.ts +1 -0
- package/src/account/i18n/useI18n.ts +128 -0
- package/src/account/index.ts +4 -0
- package/src/account/pages/Account.vue +182 -0
- package/src/account/pages/Applications.vue +192 -0
- package/src/account/pages/FederatedIdentity.vue +123 -0
- package/src/account/pages/Log.vue +64 -0
- package/src/account/pages/NotImplemented.vue +24 -0
- package/src/account/pages/PageProps.ts +10 -0
- package/src/account/pages/Password.vue +247 -0
- package/src/account/pages/Sessions.vue +84 -0
- package/src/account/pages/Totp.vue +308 -0
- package/src/bin/initialize-account-theme/boilerplate/KcContext.ts +11 -0
- package/src/bin/initialize-account-theme/boilerplate/KcPage.vue +23 -0
- package/src/bin/initialize-account-theme/boilerplate/KcPageStory.ts +22 -0
- package/src/bin/initialize-account-theme/boilerplate/KcPageStory.vue +13 -0
- package/src/bin/initialize-account-theme/boilerplate/i18n.ts +8 -0
- package/src/login/DefaultPage.vue +167 -0
- package/src/login/Template.useInitialize.ts +71 -0
- package/src/login/Template.vue +239 -0
- package/src/login/TemplateProps.ts +17 -0
- package/src/login/components/AddRemoveButtonsMultiValuedAttribute.vue +59 -0
- package/src/login/components/FieldErrors.vue +35 -0
- package/src/login/components/GroupLabel.vue +68 -0
- package/src/login/components/InputFieldByType.vue +94 -0
- package/src/login/components/InputFieldByTypeProps.ts +13 -0
- package/src/login/components/InputTag.vue +105 -0
- package/src/login/components/InputTagSelects.vue +108 -0
- package/src/login/components/LogoutOtherSessions.vue +27 -0
- package/src/login/components/PasswordWrapper.vue +42 -0
- package/src/login/components/SelectTag.vue +74 -0
- package/src/login/components/TermsAcceptance.vue +59 -0
- package/src/login/components/TextareaTag.vue +47 -0
- package/src/login/components/UserProfileFormFields.vue +119 -0
- package/src/login/components/UserProfileFormFieldsProps.ts +22 -0
- package/src/login/components/inputLabel.ts +18 -0
- package/src/login/i18n/i18n.ts +16 -0
- package/src/login/i18n/i18nBuilder.ts +100 -0
- package/src/login/i18n/index.ts +1 -0
- package/src/login/i18n/useI18n.ts +128 -0
- package/src/login/index.ts +5 -0
- package/src/login/lib/useUserProfileForm.ts +121 -0
- package/src/login/pages/Code.vue +54 -0
- package/src/login/pages/DeleteAccountConfirm.vue +69 -0
- package/src/login/pages/DeleteCredential.vue +56 -0
- package/src/login/pages/Error.vue +41 -0
- package/src/login/pages/FrontchannelLogout.vue +67 -0
- package/src/login/pages/IdpReviewUserProfile.vue +77 -0
- package/src/login/pages/Info.vue +61 -0
- package/src/login/pages/LinkIdpAction.vue +66 -0
- package/src/login/pages/Login.vue +230 -0
- package/src/login/pages/LoginConfigTotp.vue +233 -0
- package/src/login/pages/LoginIdpLinkConfirm.vue +57 -0
- package/src/login/pages/LoginIdpLinkConfirmOverride.vue +56 -0
- package/src/login/pages/LoginIdpLinkEmail.vue +52 -0
- package/src/login/pages/LoginOauth2DeviceVerifyUserCode.vue +82 -0
- package/src/login/pages/LoginOauthGrant.vue +131 -0
- package/src/login/pages/LoginOtp.vue +135 -0
- package/src/login/pages/LoginPageExpired.vue +44 -0
- package/src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.ts +96 -0
- package/src/login/pages/LoginPasskeysConditionalAuthenticate.vue +255 -0
- package/src/login/pages/LoginPassword.useScript.ts +88 -0
- package/src/login/pages/LoginPassword.vue +191 -0
- package/src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.ts +152 -0
- package/src/login/pages/LoginRecoveryAuthnCodeConfig.vue +183 -0
- package/src/login/pages/LoginRecoveryAuthnCodeInput.vue +90 -0
- package/src/login/pages/LoginResetOtp.vue +88 -0
- package/src/login/pages/LoginResetPassword.vue +114 -0
- package/src/login/pages/LoginUpdatePassword.vue +145 -0
- package/src/login/pages/LoginUpdateProfile.vue +94 -0
- package/src/login/pages/LoginUsername.useScript.ts +88 -0
- package/src/login/pages/LoginUsername.vue +263 -0
- package/src/login/pages/LoginVerifyEmail.vue +39 -0
- package/src/login/pages/LoginX509Info.vue +120 -0
- package/src/login/pages/LogoutConfirm.vue +73 -0
- package/src/login/pages/NotImplemented.vue +12 -0
- package/src/login/pages/PageProps.ts +10 -0
- package/src/login/pages/Register.vue +158 -0
- package/src/login/pages/SamlPostForm.vue +75 -0
- package/src/login/pages/SelectAuthenticator.vue +65 -0
- package/src/login/pages/SelectOrganization.vue +89 -0
- package/src/login/pages/Terms.vue +56 -0
- package/src/login/pages/UpdateEmail.vue +100 -0
- package/src/login/pages/WebauthnAuthenticate.useScript.ts +75 -0
- package/src/login/pages/WebauthnAuthenticate.vue +186 -0
- package/src/login/pages/WebauthnError.vue +84 -0
- package/src/login/pages/WebauthnRegister.useScript.ts +109 -0
- package/src/login/pages/WebauthnRegister.vue +105 -0
- package/src/tools/useInsertLinkTags.ts +62 -0
- package/src/tools/useInsertScriptTags.ts +75 -0
- package/src/tools/useSetClassName.ts +15 -0
- package/stories/account/KcContext.ts +13 -0
- package/stories/account/KcContextMock.ts +26 -0
- package/stories/account/KcPage.vue +26 -0
- package/stories/account/KcPageStory.vue +13 -0
- package/stories/account/i18n.ts +7 -0
- package/stories/account/pages/Account.stories.ts +22 -0
- package/stories/account/pages/Applications.stories.ts +70 -0
- package/stories/account/pages/FederatedIdentity.stories.ts +64 -0
- package/stories/account/pages/Log.stories.ts +42 -0
- package/stories/account/pages/Password.stories.ts +22 -0
- package/stories/account/pages/Sessions.stories.ts +41 -0
- package/stories/account/pages/Totp.stories.ts +33 -0
- package/stories/kc.gen.ts +17 -0
- package/stories/login/KcContext.ts +13 -0
- package/stories/login/KcContextMock.ts +26 -0
- package/stories/login/KcPage.vue +28 -0
- package/stories/login/KcPageStory.vue +13 -0
- package/stories/login/i18n.ts +7 -0
- package/stories/login/pages/Code.stories.ts +50 -0
- package/stories/login/pages/DeleteAccountConfirm.stories.ts +32 -0
- package/stories/login/pages/DeleteCredential.stories.ts +23 -0
- package/stories/login/pages/Error.stories.ts +53 -0
- package/stories/login/pages/FrontchannelLogout.stories.ts +24 -0
- package/stories/login/pages/IdpReviewUserProfile.stories.ts +56 -0
- package/stories/login/pages/Info.stories.ts +52 -0
- package/stories/login/pages/LinkIdpAction.stories.ts +30 -0
- package/stories/login/pages/Login.stories.ts +76 -0
- package/stories/login/pages/LoginConfigTotp.stories.ts +53 -0
- package/stories/login/pages/LoginIdpLinkConfirm.stories.ts +34 -0
- package/stories/login/pages/LoginIdpLinkConfirmOverride.stories.ts +14 -0
- package/stories/login/pages/LoginIdpLinkEmail.stories.ts +60 -0
- package/stories/login/pages/LoginOauth2DeviceVerifyUserCode.stories.ts +42 -0
- package/stories/login/pages/LoginOauthGrant.stories.ts +95 -0
- package/stories/login/pages/LoginOtp.stories.ts +92 -0
- package/stories/login/pages/LoginPageExpired.stories.ts +29 -0
- package/stories/login/pages/LoginPasskeysConditionalAuthenticate.stories.ts +14 -0
- package/stories/login/pages/LoginPassword.stories.ts +49 -0
- package/stories/login/pages/LoginRecoveryAuthnCodeConfig.stories.ts +28 -0
- package/stories/login/pages/LoginRecoveryAuthnCodeInput.stories.ts +14 -0
- package/stories/login/pages/LoginResetOtp.stories.ts +69 -0
- package/stories/login/pages/LoginResetPassword.stories.ts +48 -0
- package/stories/login/pages/LoginUpdatePassword.stories.ts +52 -0
- package/stories/login/pages/LoginUpdateProfile.stories.ts +29 -0
- package/stories/login/pages/LoginUsername.stories.ts +25 -0
- package/stories/login/pages/LoginVerifyEmail.stories.ts +63 -0
- package/stories/login/pages/LoginX509Info.stories.ts +29 -0
- package/stories/login/pages/LogoutConfirm.stories.ts +35 -0
- package/stories/login/pages/Register.stories.ts +76 -0
- package/stories/login/pages/SamlPostForm.stories.ts +14 -0
- package/stories/login/pages/SelectAuthenticator.stories.ts +89 -0
- package/stories/login/pages/SelectOrganization.stories.ts +63 -0
- package/stories/login/pages/Terms.stories.ts +78 -0
- package/stories/login/pages/UpdateEmail.stories.ts +28 -0
- package/stories/login/pages/WebauthnAuthenticate.stories.ts +147 -0
- package/stories/login/pages/WebauthnError.stories.ts +77 -0
- package/stories/login/pages/WebauthnRegister.stories.ts +54 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-password.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-password.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithPasswordError: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
realm: {
|
|
20
|
+
resetPasswordAllowed: true,
|
|
21
|
+
},
|
|
22
|
+
url: {
|
|
23
|
+
loginAction: '/mock-login',
|
|
24
|
+
loginResetCredentialsUrl: '/mock-reset-password',
|
|
25
|
+
},
|
|
26
|
+
messagesPerField: {
|
|
27
|
+
existsError: (field: string, ...otherFields: string[]) => [field, ...otherFields].includes('password'),
|
|
28
|
+
get: (field: string) => (field === 'password' ? 'Invalid password' : ''),
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const WithoutResetPasswordOption: Story = {
|
|
35
|
+
args: {
|
|
36
|
+
kcContext: {
|
|
37
|
+
realm: {
|
|
38
|
+
resetPasswordAllowed: false,
|
|
39
|
+
},
|
|
40
|
+
url: {
|
|
41
|
+
loginAction: '/mock-login',
|
|
42
|
+
loginResetCredentialsUrl: '/mock-reset-password',
|
|
43
|
+
},
|
|
44
|
+
messagesPerField: {
|
|
45
|
+
existsError: () => false,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-recovery-authn-code-config.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-recovery-authn-code-config.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithErrorDuringCodeGeneration: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
url: {
|
|
20
|
+
loginAction: '/mock-login-action',
|
|
21
|
+
},
|
|
22
|
+
message: {
|
|
23
|
+
summary: 'An error occurred during recovery code generation. Please try again.',
|
|
24
|
+
type: 'error',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-recovery-authn-code-input.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-recovery-authn-code-input.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-reset-otp.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-reset-otp.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithoutOtpCredentials: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
url: {
|
|
20
|
+
loginAction: '/mock-login',
|
|
21
|
+
},
|
|
22
|
+
configuredOtpCredentials: {
|
|
23
|
+
userOtpCredentials: [],
|
|
24
|
+
selectedCredentialId: undefined,
|
|
25
|
+
},
|
|
26
|
+
messagesPerField: {
|
|
27
|
+
existsError: () => false,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const WithOtpError: Story = {
|
|
34
|
+
args: {
|
|
35
|
+
kcContext: {
|
|
36
|
+
url: {
|
|
37
|
+
loginAction: '/mock-login',
|
|
38
|
+
},
|
|
39
|
+
configuredOtpCredentials: {
|
|
40
|
+
userOtpCredentials: [
|
|
41
|
+
{ id: 'otp1', userLabel: 'Device 1' },
|
|
42
|
+
{ id: 'otp2', userLabel: 'Device 2' },
|
|
43
|
+
],
|
|
44
|
+
selectedCredentialId: 'otp1',
|
|
45
|
+
},
|
|
46
|
+
messagesPerField: {
|
|
47
|
+
existsError: (field: string) => field === 'totp',
|
|
48
|
+
get: () => 'Invalid OTP selection',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const WithOnlyOneOtpCredential: Story = {
|
|
55
|
+
args: {
|
|
56
|
+
kcContext: {
|
|
57
|
+
url: {
|
|
58
|
+
loginAction: '/mock-login',
|
|
59
|
+
},
|
|
60
|
+
configuredOtpCredentials: {
|
|
61
|
+
userOtpCredentials: [{ id: 'otp1', userLabel: 'Device 1' }],
|
|
62
|
+
selectedCredentialId: 'otp1',
|
|
63
|
+
},
|
|
64
|
+
messagesPerField: {
|
|
65
|
+
existsError: () => false,
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-reset-password.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-reset-password.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithEmailAsUsername: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
realm: {
|
|
20
|
+
loginWithEmailAllowed: true,
|
|
21
|
+
registrationEmailAsUsername: true,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const WithUsernameError: Story = {
|
|
28
|
+
args: {
|
|
29
|
+
kcContext: {
|
|
30
|
+
realm: {
|
|
31
|
+
loginWithEmailAllowed: false,
|
|
32
|
+
registrationEmailAsUsername: false,
|
|
33
|
+
duplicateEmailsAllowed: false,
|
|
34
|
+
},
|
|
35
|
+
url: {
|
|
36
|
+
loginAction: '/mock-login-action',
|
|
37
|
+
loginUrl: '/mock-login-url',
|
|
38
|
+
},
|
|
39
|
+
messagesPerField: {
|
|
40
|
+
existsError: (field: string, ...otherFields: string[]) => [field, ...otherFields].includes('username'),
|
|
41
|
+
get: (field: string) => (field === 'username' ? 'Invalid username' : ''),
|
|
42
|
+
},
|
|
43
|
+
auth: {
|
|
44
|
+
attemptedUsername: 'invalid_user',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-update-password.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-update-password.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithPasswordError: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
url: {
|
|
20
|
+
loginAction: '/mock-login-action',
|
|
21
|
+
},
|
|
22
|
+
messagesPerField: {
|
|
23
|
+
existsError: (field: string, ...otherFields: string[]) => [field, ...otherFields].includes('password'),
|
|
24
|
+
get: (field: string) => (field === 'password' ? 'Password must be at least 8 characters long.' : ''),
|
|
25
|
+
},
|
|
26
|
+
isAppInitiatedAction: false,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const WithPasswordConfirmError: Story = {
|
|
32
|
+
args: {
|
|
33
|
+
kcContext: {
|
|
34
|
+
url: {
|
|
35
|
+
loginAction: '/mock-login-action',
|
|
36
|
+
},
|
|
37
|
+
messagesPerField: {
|
|
38
|
+
existsError: (field: string, ...otherFields: string[]) => [field, ...otherFields].includes('password-confirm'),
|
|
39
|
+
get: (field: string) => (field === 'password-confirm' ? 'Passwords do not match.' : ''),
|
|
40
|
+
},
|
|
41
|
+
isAppInitiatedAction: false,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export const WithAppInitiatedAction: Story = {
|
|
47
|
+
args: {
|
|
48
|
+
kcContext: {
|
|
49
|
+
isAppInitiatedAction: true,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-update-profile.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-update-profile.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const Demo: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
url: {
|
|
20
|
+
loginAction: '/mock-login-action',
|
|
21
|
+
},
|
|
22
|
+
messagesPerField: {
|
|
23
|
+
existsError: (field: string) => field === 'email',
|
|
24
|
+
get: () => 'Invalid email format',
|
|
25
|
+
},
|
|
26
|
+
isAppInitiatedAction: false,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-username.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-username.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithEmailAsUsername: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
realm: {
|
|
20
|
+
loginWithEmailAllowed: true,
|
|
21
|
+
registrationEmailAsUsername: true,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-verify-email.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-verify-email.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {
|
|
15
|
+
args: {
|
|
16
|
+
kcContext: {
|
|
17
|
+
message: {
|
|
18
|
+
summary: 'You need to verify your email to activate your account.',
|
|
19
|
+
type: 'warning',
|
|
20
|
+
},
|
|
21
|
+
user: { email: 'john.doe@gmail.com' },
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const WithSuccessMessage: Story = {
|
|
27
|
+
args: {
|
|
28
|
+
kcContext: {
|
|
29
|
+
message: {
|
|
30
|
+
summary: 'Your email has been successfully verified.',
|
|
31
|
+
type: 'success',
|
|
32
|
+
},
|
|
33
|
+
user: { email: 'john.doe@gmail.com' },
|
|
34
|
+
url: { loginAction: '/mock-login-action' },
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const WithErrorMessage: Story = {
|
|
40
|
+
args: {
|
|
41
|
+
kcContext: {
|
|
42
|
+
message: {
|
|
43
|
+
summary: 'There was an error verifying your email. Please try again.',
|
|
44
|
+
type: 'error',
|
|
45
|
+
},
|
|
46
|
+
user: { email: 'john.doe@gmail.com' },
|
|
47
|
+
url: { loginAction: '/mock-login-action' },
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export const WithInfoMessage: Story = {
|
|
53
|
+
args: {
|
|
54
|
+
kcContext: {
|
|
55
|
+
message: {
|
|
56
|
+
summary: 'Please verify your email to continue using our services.',
|
|
57
|
+
type: 'info',
|
|
58
|
+
},
|
|
59
|
+
user: { email: 'john.doe@gmail.com' },
|
|
60
|
+
url: { loginAction: '/mock-login-action' },
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/login-x509-info.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'login-x509-info.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithoutUserEnabled: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
url: { loginAction: '/mock-login-action' },
|
|
20
|
+
x509: {
|
|
21
|
+
formData: {
|
|
22
|
+
subjectDN: 'CN=John Doe, OU=Example Org, O=Example Inc, C=US',
|
|
23
|
+
username: 'johndoe',
|
|
24
|
+
isUserEnabled: false,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/logout-confirm.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'logout-confirm.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithCustomLogoutMessage: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
url: {
|
|
20
|
+
logoutConfirmAction: '/mock-logout-action',
|
|
21
|
+
},
|
|
22
|
+
client: {
|
|
23
|
+
baseUrl: '/mock-client-url',
|
|
24
|
+
},
|
|
25
|
+
logoutConfirm: {
|
|
26
|
+
code: 'mock-session-code',
|
|
27
|
+
skipLink: false,
|
|
28
|
+
},
|
|
29
|
+
message: {
|
|
30
|
+
summary: 'Are you sure you want to log out from all sessions?',
|
|
31
|
+
type: 'warning',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/register.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'register.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithoutPasswordField: Story = {
|
|
17
|
+
args: { kcContext: { passwordRequired: false } },
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const WithEmailAlreadyExists: Story = {
|
|
21
|
+
args: {
|
|
22
|
+
kcContext: {
|
|
23
|
+
profile: {
|
|
24
|
+
attributesByName: {
|
|
25
|
+
email: {
|
|
26
|
+
value: 'max.mustermann@mail.com',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
messagesPerField: {
|
|
31
|
+
existsError: (fieldName: string) => fieldName === 'email',
|
|
32
|
+
get: (fieldName: string) => (fieldName === 'email' ? 'Email already exists.' : ''),
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const WithRecaptcha: Story = {
|
|
39
|
+
args: {
|
|
40
|
+
kcContext: {
|
|
41
|
+
recaptchaRequired: true,
|
|
42
|
+
recaptchaVisible: true,
|
|
43
|
+
recaptchaSiteKey: '6LfQHvApAAAAAA',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const WithTermsAcceptance: Story = {
|
|
49
|
+
args: {
|
|
50
|
+
kcContext: {
|
|
51
|
+
termsAcceptanceRequired: true,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export const WithRestrictedToMITStudents: Story = {
|
|
57
|
+
args: {
|
|
58
|
+
kcContext: {
|
|
59
|
+
profile: {
|
|
60
|
+
attributesByName: {
|
|
61
|
+
email: {
|
|
62
|
+
validators: {
|
|
63
|
+
pattern: {
|
|
64
|
+
pattern: '^[^@]+@([^.]+\\.)*((mit\\.edu)|(berkeley\\.edu))$',
|
|
65
|
+
'error-message': '${profile.attributes.email.pattern.error}',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
annotations: {
|
|
69
|
+
inputHelperTextBefore: 'Only students from the MIT or Berkeley are allowed to register',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/saml-post-form.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'saml-post-form.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/select-authenticator.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'select-authenticator.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithDifferentAuthenticationMethods: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
auth: {
|
|
20
|
+
authenticationSelections: [
|
|
21
|
+
{
|
|
22
|
+
authExecId: '25697c4e-0c80-4f2c-8eb7-2c16347e8e8d',
|
|
23
|
+
displayName: 'auth-username-password-form-display-name',
|
|
24
|
+
helpText: 'auth-username-password-form-help-text',
|
|
25
|
+
iconCssClass: 'kcAuthenticatorPasswordClass',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
authExecId: '4cb60872-ce0d-4c8f-a806-e651ed77994b',
|
|
29
|
+
displayName: 'webauthn-passwordless-display-name',
|
|
30
|
+
helpText: 'webauthn-passwordless-help-text',
|
|
31
|
+
iconCssClass: 'kcAuthenticatorWebAuthnPasswordlessClass',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const WithRealmTranslations: Story = {
|
|
40
|
+
args: {
|
|
41
|
+
kcContext: {
|
|
42
|
+
auth: {
|
|
43
|
+
authenticationSelections: [
|
|
44
|
+
{
|
|
45
|
+
authExecId: 'f0c22855-eda7-4092-8565-0c22f77d2ffb',
|
|
46
|
+
displayName: 'home-idp-discovery-display-name',
|
|
47
|
+
helpText: 'home-idp-discovery-help-text',
|
|
48
|
+
iconCssClass: 'kcAuthenticatorDefaultClass',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
authExecId: '20456f5a-8b2b-45f3-98e0-551dcb27e3e1',
|
|
52
|
+
displayName: 'identity-provider-redirctor-display-name',
|
|
53
|
+
helpText: 'identity-provider-redirctor-help-text',
|
|
54
|
+
iconCssClass: 'kcAuthenticatorDefaultClass',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
authExecId: 'eb435db9-474e-473a-8da7-c184fa510b96',
|
|
58
|
+
displayName: 'auth-username-password-form-display-name',
|
|
59
|
+
helpText: 'auth-username-password-help-text',
|
|
60
|
+
iconCssClass: 'kcAuthenticatorDefaultClass',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
'x-keycloakify': {
|
|
65
|
+
messages: {
|
|
66
|
+
'home-idp-discovery-display-name': 'Home identity provider',
|
|
67
|
+
'home-idp-discovery-help-text':
|
|
68
|
+
'Sign in via your home identity provider which will be automatically determined based on your provided email address.',
|
|
69
|
+
'identity-provider-redirctor-display-name': 'Identity Provider Redirector',
|
|
70
|
+
'identity-provider-redirctor-help-text': 'Sign in via your identity provider.',
|
|
71
|
+
'auth-username-password-help-text': 'Sign in via your username and password.',
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export const WithoutAuthenticationSelections: Story = {
|
|
79
|
+
args: {
|
|
80
|
+
kcContext: {
|
|
81
|
+
url: {
|
|
82
|
+
loginAction: '/mock-login-action',
|
|
83
|
+
},
|
|
84
|
+
auth: {
|
|
85
|
+
authenticationSelections: [],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import KcPageStory from '../KcPageStory.vue';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'login/select-organization.ftl',
|
|
6
|
+
component: KcPageStory,
|
|
7
|
+
args: { pageId: 'select-organization.ftl' },
|
|
8
|
+
} satisfies Meta<typeof KcPageStory>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {};
|
|
15
|
+
|
|
16
|
+
export const WithMultipleOrganizations: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
kcContext: {
|
|
19
|
+
user: {
|
|
20
|
+
organizations: [
|
|
21
|
+
{ alias: 'acme', name: 'Acme Corp' },
|
|
22
|
+
{ alias: 'globex', name: 'Globex Corporation' },
|
|
23
|
+
{ alias: 'initech', name: 'Initech' },
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const WithGridLayout: Story = {
|
|
31
|
+
args: {
|
|
32
|
+
kcContext: {
|
|
33
|
+
user: {
|
|
34
|
+
organizations: [
|
|
35
|
+
{ alias: 'acme', name: 'Acme Corp' },
|
|
36
|
+
{ alias: 'globex', name: 'Globex Corporation' },
|
|
37
|
+
{ alias: 'initech', name: 'Initech' },
|
|
38
|
+
{ alias: 'umbrella', name: 'Umbrella Corp' },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const WithAliasAsFallbackName: Story = {
|
|
46
|
+
args: {
|
|
47
|
+
kcContext: {
|
|
48
|
+
user: {
|
|
49
|
+
organizations: [{ alias: 'my-org' }, { alias: 'another-org', name: 'Another Org' }],
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const WithNoOrganizations: Story = {
|
|
56
|
+
args: {
|
|
57
|
+
kcContext: {
|
|
58
|
+
user: {
|
|
59
|
+
organizations: [],
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
};
|