@keycloakify/angular 0.0.1-rc.3 → 0.0.1-rc.4
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/lib/tokens/use-default-css.token.d.ts +2 -0
- package/lib/tokens/use-default-css.token.js +3 -0
- package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.d.ts +3 -1
- package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js +106 -0
- package/login/components/field-errors/field-errors.component.d.ts +2 -2
- package/login/components/field-errors/{field-errors.component.mjs → field-errors.component.js} +4 -3
- package/login/components/group-label/group-label.component.d.ts +3 -1
- package/login/components/group-label/group-label.component.js +43 -0
- package/login/components/input-field-by-type/{input-field-by-type.component.mjs → input-field-by-type.component.js} +4 -3
- package/login/components/input-tag/input-tag.component.d.ts +4 -2
- package/login/components/input-tag/input-tag.component.js +90 -0
- package/login/components/input-tag-selects/input-tag-selects.component.d.ts +4 -2
- package/login/components/input-tag-selects/input-tag-selects.component.js +117 -0
- package/login/components/logout-other-sessions/logout-other-sessions.component.d.ts +3 -1
- package/login/components/logout-other-sessions/logout-other-sessions.component.js +32 -0
- package/login/components/password-wrapper/password-wrapper.component.d.ts +3 -1
- package/login/components/password-wrapper/password-wrapper.component.js +46 -0
- package/login/components/select-tag/select-tag.component.d.ts +4 -2
- package/login/components/select-tag/select-tag.component.js +82 -0
- package/login/components/textarea-tag/textarea-tag.component.js +49 -0
- package/login/components/user-profile-form-fields/user-profile-form-fields.component.d.ts +4 -2
- package/login/components/user-profile-form-fields/user-profile-form-fields.component.js +59 -0
- package/login/containers/template.component.js +72 -0
- package/login/pages/code/code.component.d.ts +4 -2
- package/login/pages/code/code.component.js +35 -0
- package/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +4 -2
- package/login/pages/delete-account-confirm/delete-account-confirm.component.js +35 -0
- package/login/pages/delete-credential/delete-credential.component.d.ts +4 -2
- package/login/pages/delete-credential/delete-credential.component.js +40 -0
- package/login/pages/error/error.component.d.ts +4 -2
- package/login/pages/error/error.component.js +35 -0
- package/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +4 -2
- package/login/pages/frontchannel-logout/frontchannel-logout.component.js +44 -0
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +4 -2
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js +45 -0
- package/login/pages/info/info.component.d.ts +4 -8
- package/login/pages/info/info.component.js +49 -0
- package/login/pages/login/login.component.d.ts +4 -2
- package/login/pages/login/login.component.js +44 -0
- package/login/pages/login-config-totp/login-config-totp.component.d.ts +4 -2
- package/login/pages/login-config-totp/login-config-totp.component.js +42 -0
- package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +4 -2
- package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js +40 -0
- package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +4 -2
- package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js +40 -0
- package/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +4 -2
- package/login/pages/login-idp-link-email/login-idp-link-email.component.js +40 -0
- package/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +4 -2
- package/login/pages/login-oauth-grant/login-oauth-grant.component.js +40 -0
- package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +4 -2
- package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js +40 -0
- package/login/pages/login-otp/login-otp.component.d.ts +4 -2
- package/login/pages/login-otp/login-otp.component.js +41 -0
- package/login/pages/login-page-expired/login-page-expired.component.d.ts +4 -2
- package/login/pages/login-page-expired/login-page-expired.component.js +39 -0
- package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +5 -5
- package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js +84 -0
- package/login/pages/login-password/login-password.component.d.ts +4 -2
- package/login/pages/login-password/login-password.component.js +43 -0
- package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +4 -2
- package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js +43 -0
- package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +4 -2
- package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js +41 -0
- package/login/pages/login-reset-otp/login-reset-otp.component.d.ts +4 -2
- package/login/pages/login-reset-otp/login-reset-otp.component.js +40 -0
- package/login/pages/login-reset-password/login-reset-password.component.d.ts +4 -2
- package/login/pages/login-reset-password/login-reset-password.component.js +41 -0
- package/login/pages/login-update-password/login-update-password.component.d.ts +4 -2
- package/login/pages/login-update-password/login-update-password.component.js +43 -0
- package/login/pages/login-update-profile/login-update-profile.component.d.ts +4 -2
- package/login/pages/login-update-profile/login-update-profile.component.js +42 -0
- package/login/pages/login-username/login-username.component.d.ts +4 -2
- package/login/pages/login-username/login-username.component.js +43 -0
- package/login/pages/login-verify-email/login-verify-email.component.d.ts +4 -2
- package/login/pages/login-verify-email/login-verify-email.component.js +40 -0
- package/login/pages/login-x509-info/login-x509-info.component.d.ts +4 -2
- package/login/pages/login-x509-info/login-x509-info.component.js +40 -0
- package/login/pages/logout-confirm/logout-confirm.component.d.ts +4 -2
- package/login/pages/logout-confirm/logout-confirm.component.js +40 -0
- package/login/pages/register/register.component.d.ts +4 -2
- package/login/pages/register/register.component.js +48 -0
- package/login/pages/saml-post-form/saml-post-form.component.d.ts +4 -2
- package/login/pages/saml-post-form/saml-post-form.component.js +52 -0
- package/login/pages/select-authenticator/select-authenticator.component.d.ts +4 -2
- package/login/pages/select-authenticator/select-authenticator.component.js +41 -0
- package/login/pages/terms/terms.component.d.ts +4 -2
- package/login/pages/terms/terms.component.js +40 -0
- package/login/pages/update-email/update-email.component.d.ts +4 -2
- package/login/pages/update-email/update-email.component.js +43 -0
- package/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +5 -5
- package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js +80 -0
- package/login/pages/webauthn-error/webauthn-error.component.d.ts +4 -2
- package/login/pages/webauthn-error/webauthn-error.component.js +49 -0
- package/login/pages/webauthn-register/webauthn-register.component.d.ts +5 -5
- package/login/pages/webauthn-register/webauthn-register.component.js +76 -0
- package/login/pipes/kc-sanitize.pipe.d.ts +3 -4
- package/login/pipes/kc-sanitize.pipe.js +29 -0
- package/login/pipes/{to-array.pipe.mjs → to-array.pipe.js} +1 -2
- package/login/providers/keycloakify-angular.providers.d.ts +16 -0
- package/login/providers/keycloakify-angular.providers.js +53 -0
- package/login/services/i18n.service.d.ts +6 -0
- package/{lib/services/i18n.service.mjs → login/services/i18n.service.js} +1 -1
- package/login/services/login-resource-injector.service.d.ts +1 -1
- package/login/services/login-resource-injector.service.js +68 -0
- package/login/services/user-profile-form.service.js +1019 -0
- package/{lib/providers/keycloakify-angular.providers.d.ts → login/tokens/classes.token.d.ts} +1 -24
- package/login/tokens/classes.token.js +3 -0
- package/login/tokens/i18n.token.d.ts +2 -0
- package/login/tokens/i18n.token.js +3 -0
- package/login/tokens/kc-context.token.d.ts +3 -0
- package/login/tokens/kc-context.token.js +3 -0
- package/login/tokens/make-user-confirm-password.token.d.ts +2 -0
- package/login/tokens/make-user-confirm-password.token.js +3 -0
- package/package.json +85 -104
- package/src/lib/tokens/use-default-css.token.ts +3 -0
- package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +2 -2
- package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +6 -4
- package/src/login/components/field-errors/field-errors.component.ts +5 -4
- package/src/login/components/group-label/group-label.component.html +2 -2
- package/src/login/components/group-label/group-label.component.ts +9 -6
- package/src/login/components/input-field-by-type/input-field-by-type.component.ts +3 -2
- package/src/login/components/input-tag/input-tag.component.html +1 -1
- package/src/login/components/input-tag/input-tag.component.ts +11 -9
- package/src/login/components/input-tag-selects/input-tag-selects.component.html +1 -1
- package/src/login/components/input-tag-selects/input-tag-selects.component.ts +9 -6
- package/src/login/components/logout-other-sessions/logout-other-sessions.component.html +1 -1
- package/src/login/components/logout-other-sessions/logout-other-sessions.component.ts +8 -5
- package/src/login/components/password-wrapper/password-wrapper.component.html +1 -1
- package/src/login/components/password-wrapper/password-wrapper.component.ts +8 -5
- package/src/login/components/select-tag/select-tag.component.html +2 -2
- package/src/login/components/select-tag/select-tag.component.ts +9 -6
- package/src/login/components/textarea-tag/textarea-tag.component.ts +3 -2
- package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.html +3 -3
- package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +14 -9
- package/src/login/containers/template.component.html +6 -6
- package/src/login/containers/template.component.ts +9 -7
- package/src/login/pages/code/code.component.html +4 -4
- package/src/login/pages/code/code.component.ts +11 -7
- package/src/login/pages/delete-account-confirm/delete-account-confirm.component.html +8 -8
- package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +12 -8
- package/src/login/pages/delete-credential/delete-credential.component.html +4 -4
- package/src/login/pages/delete-credential/delete-credential.component.ts +11 -7
- package/src/login/pages/error/error.component.html +2 -2
- package/src/login/pages/error/error.component.ts +11 -7
- package/src/login/pages/frontchannel-logout/frontchannel-logout.component.html +4 -4
- package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +11 -7
- package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +2 -2
- package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +11 -7
- package/src/login/pages/info/info.component.html +4 -4
- package/src/login/pages/info/info.component.ts +12 -17
- package/src/login/pages/login/login.component.html +13 -13
- package/src/login/pages/login/login.component.ts +11 -7
- package/src/login/pages/login-config-totp/login-config-totp.component.html +24 -24
- package/src/login/pages/login-config-totp/login-config-totp.component.ts +11 -9
- package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +3 -3
- package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +11 -7
- package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +4 -4
- package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +11 -7
- package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +8 -8
- package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +11 -7
- package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +9 -9
- package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +11 -8
- package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +3 -3
- package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +11 -7
- package/src/login/pages/login-otp/login-otp.component.html +3 -3
- package/src/login/pages/login-otp/login-otp.component.ts +11 -7
- package/src/login/pages/login-page-expired/login-page-expired.component.html +5 -5
- package/src/login/pages/login-page-expired/login-page-expired.component.ts +11 -7
- package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +9 -9
- package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +15 -15
- package/src/login/pages/login-password/login-password.component.html +5 -5
- package/src/login/pages/login-password/login-password.component.ts +11 -7
- package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +11 -11
- package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +12 -8
- package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +3 -3
- package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +12 -8
- package/src/login/pages/login-reset-otp/login-reset-otp.component.html +3 -3
- package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +12 -8
- package/src/login/pages/login-reset-password/login-reset-password.component.html +8 -8
- package/src/login/pages/login-reset-password/login-reset-password.component.ts +12 -8
- package/src/login/pages/login-update-password/login-update-password.component.html +5 -5
- package/src/login/pages/login-update-password/login-update-password.component.ts +12 -8
- package/src/login/pages/login-update-profile/login-update-profile.component.html +3 -3
- package/src/login/pages/login-update-profile/login-update-profile.component.ts +12 -8
- package/src/login/pages/login-username/login-username.component.html +10 -10
- package/src/login/pages/login-username/login-username.component.ts +11 -7
- package/src/login/pages/login-verify-email/login-verify-email.component.html +5 -5
- package/src/login/pages/login-verify-email/login-verify-email.component.ts +12 -8
- package/src/login/pages/login-x509-info/login-x509-info.component.html +6 -6
- package/src/login/pages/login-x509-info/login-x509-info.component.ts +12 -8
- package/src/login/pages/logout-confirm/logout-confirm.component.html +4 -4
- package/src/login/pages/logout-confirm/logout-confirm.component.ts +12 -8
- package/src/login/pages/register/register.component.html +7 -7
- package/src/login/pages/register/register.component.ts +11 -17
- package/src/login/pages/saml-post-form/saml-post-form.component.html +4 -4
- package/src/login/pages/saml-post-form/saml-post-form.component.ts +11 -7
- package/src/login/pages/select-authenticator/select-authenticator.component.html +3 -3
- package/src/login/pages/select-authenticator/select-authenticator.component.ts +12 -9
- package/src/login/pages/terms/terms.component.html +4 -4
- package/src/login/pages/terms/terms.component.ts +12 -8
- package/src/login/pages/update-email/update-email.component.html +3 -3
- package/src/login/pages/update-email/update-email.component.ts +12 -8
- package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +8 -8
- package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +15 -15
- package/src/login/pages/webauthn-error/webauthn-error.component.html +3 -3
- package/src/login/pages/webauthn-error/webauthn-error.component.ts +12 -8
- package/src/login/pages/webauthn-register/webauthn-register.component.html +3 -3
- package/src/login/pages/webauthn-register/webauthn-register.component.ts +17 -15
- package/src/login/pipes/kc-sanitize.pipe.ts +9 -11
- package/src/login/pipes/to-array.pipe.ts +0 -1
- package/src/login/providers/keycloakify-angular.providers.ts +68 -0
- package/src/{lib → login}/services/i18n.service.ts +3 -2
- package/src/login/services/login-resource-injector.service.ts +4 -3
- package/src/login/services/user-profile-form.service.ts +5 -7
- package/src/login/tokens/classes.token.ts +6 -0
- package/src/login/tokens/i18n.token.ts +3 -0
- package/src/login/tokens/kc-context.token.ts +4 -0
- package/src/login/tokens/make-user-confirm-password.token.ts +5 -0
- package/src/tsconfig.json +6 -0
- package/lib/i18n.d.ts +0 -4
- package/lib/i18n.mjs +0 -6
- package/lib/models/index.d.ts +0 -1
- package/lib/models/index.mjs +0 -2
- package/lib/providers/keycloakify-angular.providers.mjs +0 -54
- package/lib/public-api.d.ts +0 -10
- package/lib/public-api.mjs +0 -4
- package/lib/services/i18n.service.d.ts +0 -6
- package/lib/services/index.d.ts +0 -2
- package/lib/services/index.mjs +0 -3
- package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +0 -105
- package/login/components/group-label/group-label.component.mjs +0 -41
- package/login/components/hello-world/hello-world.component.d.ts +0 -5
- package/login/components/hello-world/hello-world.component.mjs +0 -11
- package/login/components/index.d.ts +0 -11
- package/login/components/index.mjs +0 -12
- package/login/components/input-tag/input-tag.component.mjs +0 -89
- package/login/components/input-tag-selects/input-tag-selects.component.mjs +0 -115
- package/login/components/logout-other-sessions/logout-other-sessions.component.mjs +0 -30
- package/login/components/password-wrapper/password-wrapper.component.mjs +0 -44
- package/login/components/select-tag/select-tag.component.mjs +0 -80
- package/login/components/textarea-tag/textarea-tag.component.mjs +0 -48
- package/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +0 -55
- package/login/containers/template.component.mjs +0 -70
- package/login/directives/index.d.ts +0 -2
- package/login/directives/index.mjs +0 -3
- package/login/pages/code/code.component.mjs +0 -32
- package/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +0 -32
- package/login/pages/delete-credential/delete-credential.component.mjs +0 -37
- package/login/pages/error/error.component.mjs +0 -32
- package/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +0 -41
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +0 -42
- package/login/pages/info/info.component.mjs +0 -58
- package/login/pages/login/login.component.mjs +0 -41
- package/login/pages/login-config-totp/login-config-totp.component.mjs +0 -40
- package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +0 -37
- package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +0 -37
- package/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +0 -37
- package/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +0 -38
- package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +0 -37
- package/login/pages/login-otp/login-otp.component.mjs +0 -38
- package/login/pages/login-page-expired/login-page-expired.component.mjs +0 -36
- package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +0 -85
- package/login/pages/login-password/login-password.component.mjs +0 -40
- package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +0 -40
- package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +0 -38
- package/login/pages/login-reset-otp/login-reset-otp.component.mjs +0 -37
- package/login/pages/login-reset-password/login-reset-password.component.mjs +0 -38
- package/login/pages/login-update-password/login-update-password.component.mjs +0 -40
- package/login/pages/login-update-profile/login-update-profile.component.mjs +0 -39
- package/login/pages/login-username/login-username.component.mjs +0 -40
- package/login/pages/login-verify-email/login-verify-email.component.mjs +0 -37
- package/login/pages/login-x509-info/login-x509-info.component.mjs +0 -37
- package/login/pages/logout-confirm/logout-confirm.component.mjs +0 -37
- package/login/pages/register/register.component.mjs +0 -55
- package/login/pages/saml-post-form/saml-post-form.component.mjs +0 -49
- package/login/pages/select-authenticator/select-authenticator.component.mjs +0 -39
- package/login/pages/terms/terms.component.mjs +0 -37
- package/login/pages/update-email/update-email.component.mjs +0 -40
- package/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +0 -81
- package/login/pages/webauthn-error/webauthn-error.component.mjs +0 -46
- package/login/pages/webauthn-register/webauthn-register.component.mjs +0 -76
- package/login/pipes/advanced-msg-str.pipe.d.ts +0 -8
- package/login/pipes/advanced-msg-str.pipe.mjs +0 -19
- package/login/pipes/index.d.ts +0 -6
- package/login/pipes/index.mjs +0 -7
- package/login/pipes/kc-sanitize.pipe.mjs +0 -34
- package/login/pipes/msg-str.pipe.d.ts +0 -9
- package/login/pipes/msg-str.pipe.mjs +0 -19
- package/login/services/index.d.ts +0 -2
- package/login/services/index.mjs +0 -3
- package/login/services/login-resource-injector.service.mjs +0 -68
- package/login/services/user-profile-form.service.mjs +0 -1017
- package/src/lib/i18n.ts +0 -9
- package/src/lib/models/index.ts +0 -1
- package/src/lib/providers/keycloakify-angular.providers.ts +0 -92
- package/src/lib/public-api.ts +0 -12
- package/src/lib/services/index.ts +0 -2
- package/src/login/components/hello-world/hello-world.component.css +0 -0
- package/src/login/components/hello-world/hello-world.component.html +0 -1
- package/src/login/components/hello-world/hello-world.component.ts +0 -10
- package/src/login/components/index.ts +0 -11
- package/src/login/directives/index.ts +0 -2
- package/src/login/pipes/advanced-msg-str.pipe.ts +0 -13
- package/src/login/pipes/index.ts +0 -6
- package/src/login/pipes/msg-str.pipe.ts +0 -14
- package/src/login/services/index.ts +0 -2
- /package/lib/models/{script.model.mjs → script.model.js} +0 -0
- /package/lib/services/{resource-injector.service.mjs → resource-injector.service.js} +0 -0
- /package/login/{DefaultPage.mjs → DefaultPage.js} +0 -0
- /package/login/{KcContext.mjs → KcContext.js} +0 -0
- /package/login/classes/{component-reference.class.mjs → component-reference.class.js} +0 -0
- /package/login/directives/{attributes.directive.mjs → attributes.directive.js} +0 -0
- /package/login/directives/{kc-class.directive.mjs → kc-class.directive.js} +0 -0
- /package/login/{i18n.mjs → i18n.js} +0 -0
- /package/login/pipes/{input-type.pipe.mjs → input-type.pipe.js} +0 -0
- /package/login/pipes/{to-number.pipe.mjs → to-number.pipe.js} +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject } from '@angular/core';
|
|
2
|
+
import { USE_DEFAULT_CSS } from '../../../lib/tokens/use-default-css.token';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
5
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
6
|
+
import { LoginResourceInjectorService } from '../../../login/services/login-resource-injector.service';
|
|
7
|
+
import { LOGIN_CLASSES } from '../../../login/tokens/classes.token';
|
|
8
|
+
import { LOGIN_I18N } from '../../../login/tokens/i18n.token';
|
|
9
|
+
import { KC_LOGIN_CONTEXT } from '../../../login/tokens/kc-context.token';
|
|
10
|
+
import { getKcClsx } from 'keycloakify/login/lib/kcClsx';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class LoginPasskeysConditionalAuthenticateComponent extends ComponentReference {
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
this.kcContext = inject(KC_LOGIN_CONTEXT);
|
|
16
|
+
this.loginResourceInjectorService = inject(LoginResourceInjectorService);
|
|
17
|
+
this.i18n = inject(LOGIN_I18N);
|
|
18
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
19
|
+
this.classes = inject(LOGIN_CLASSES);
|
|
20
|
+
this.displayInfo = true;
|
|
21
|
+
this.authButtonId = 'authenticateWebAuthnButton';
|
|
22
|
+
const { url, challenge, rpId, userVerification, isUserIdentified, createTimeout } = this.kcContext;
|
|
23
|
+
const scripts = [
|
|
24
|
+
{
|
|
25
|
+
type: 'module',
|
|
26
|
+
id: 'LoginRecoveryAuthnCodeConfig',
|
|
27
|
+
textContent: `
|
|
28
|
+
import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
|
|
29
|
+
import { initAuthenticate } from "${url.resourcesPath}/js/passkeysConditionalAuth.js";
|
|
30
|
+
|
|
31
|
+
const authButton = document.getElementById("${this.authButtonId}");
|
|
32
|
+
const input = {
|
|
33
|
+
isUserIdentified : ${isUserIdentified},
|
|
34
|
+
challenge : ${JSON.stringify(challenge)},
|
|
35
|
+
userVerification : ${JSON.stringify(userVerification)},
|
|
36
|
+
rpId : ${JSON.stringify(rpId)},
|
|
37
|
+
createTimeout : ${createTimeout}
|
|
38
|
+
};
|
|
39
|
+
authButton.addEventListener("click", () => {
|
|
40
|
+
authenticateByWebAuthn({
|
|
41
|
+
...input,
|
|
42
|
+
errmsg : ${JSON.stringify(this.i18n.msgStr('webauthn-unsupported-browser-text'))}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
initAuthenticate({
|
|
47
|
+
...input,
|
|
48
|
+
errmsg : ${JSON.stringify(this.i18n.msgStr('passkey-unsupported-browser-text'))}
|
|
49
|
+
});
|
|
50
|
+
`
|
|
51
|
+
}
|
|
52
|
+
];
|
|
53
|
+
this.loginResourceInjectorService.insertAdditionalScripts(scripts);
|
|
54
|
+
}
|
|
55
|
+
selectAuthListItemIconClass(iconClass) {
|
|
56
|
+
const kcClsx = getKcClsx({
|
|
57
|
+
doUseDefaultCss: this.doUseDefaultCss ?? true,
|
|
58
|
+
classes: this.classes
|
|
59
|
+
}).kcClsx;
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
|
+
const className = kcClsx(iconClass);
|
|
62
|
+
if (className === iconClass) {
|
|
63
|
+
return kcClsx('kcWebAuthnDefaultIcon');
|
|
64
|
+
}
|
|
65
|
+
return className;
|
|
66
|
+
}
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginPasskeysConditionalAuthenticateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LoginPasskeysConditionalAuthenticateComponent, isStandalone: true, selector: "kc-root", providers: [
|
|
69
|
+
{
|
|
70
|
+
provide: ComponentReference,
|
|
71
|
+
useExisting: forwardRef(() => LoginPasskeysConditionalAuthenticateComponent)
|
|
72
|
+
}
|
|
73
|
+
], usesInheritance: true, ngImport: i0, template: "@let authenticators = kcContext.authenticators;\n@let realm = kcContext.realm;\n@let url = kcContext.url;\n@let shouldDisplayAuthenticators = kcContext.shouldDisplayAuthenticators;\n@let login = kcContext.login;\n@let messagesPerField = kcContext.messagesPerField;\n@let usernameHidden = kcContext.usernameHidden;\n@let registrationDisabled = kcContext.registrationDisabled;\n<kc-login-template [displayInfo]=\"displayInfo\">\n <ng-container headerNode>\n {{ i18n.msgStr('passkey-login-title') }}\n </ng-container>\n <ng-container infoNode>\n @if (realm.registrationAllowed && !registrationDisabled) {\n <div id=\"kc-registration\">\n <span>\n {{ i18n.msgStr('noAccount') }}\n <a\n tabIndex=\"6\"\n [href]=\"url.registrationUrl\"\n >\n {{ i18n.msgStr('doRegister') }}\n </a>\n </span>\n </div>\n }\n </ng-container>\n\n <ng-container content>\n <form\n id=\"webauth\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorData\"\n name=\"authenticatorData\"\n />\n <input\n type=\"hidden\"\n id=\"signature\"\n name=\"signature\"\n />\n <input\n type=\"hidden\"\n id=\"credentialId\"\n name=\"credentialId\"\n />\n <input\n type=\"hidden\"\n id=\"userHandle\"\n name=\"userHandle\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n </form>\n <div\n [kcClass]=\"'kcFormGroupClass'\"\n no-bottom-margin=\"true\"\n style=\"margin-bottom: 0\"\n >\n @if (authenticators !== undefined && authenticators.authenticators.length !== 0) {\n <form\n id=\"authn_select\"\n [kcClass]=\"'kcFormClass'\"\n >\n @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {\n <input\n type=\"hidden\"\n name=\"authn_use_chk\"\n readOnly\n [value]=\"authenticator.credentialId\"\n />\n }\n </form>\n\n @if (shouldDisplayAuthenticators) {\n @if (authenticators.authenticators.length > 1) {\n <p [kcClass]=\"'kcSelectAuthListItemTitle'\">\n {{ i18n.msgStr('passkey-available-authenticators') }}\n </p>\n }\n\n <div [kcClass]=\"'kcFormClass'\">\n @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {\n <div\n id=\"'kc-webauthn-authenticator-item-' + i\"\n [kcClass]=\"'kcSelectAuthListItemClass'\"\n >\n <i\n [ngClass]=\"selectAuthListItemIconClass(authenticator.transports.iconClass)\"\n [kcClass]=\"'kcCommonLogoIdP'\"\n aria-hidden=\"true\"\n ></i>\n <div [kcClass]=\"'kcSelectAuthListItemBodyClass'\">\n <div\n [id]=\"'kc-webauthn-authenticator-label-' + i\"\n [kcClass]=\"'kcSelectAuthListItemHeadingClass'\"\n >\n {{ i18n.advancedMsgStr(authenticator.label) }}\n </div>\n @if (\n authenticator.transports !== undefined &&\n authenticator.transports.displayNameProperties !== undefined &&\n authenticator.transports.displayNameProperties.length !== 0\n ) {\n <div\n [id]=\"'kc-webauthn-authenticator-transport-' + i\"\n [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\"\n >\n @for (\n nameProperty of authenticator.transports.displayNameProperties;\n track nameProperty;\n let i = $index\n ) {\n <span>\n {{ i18n.advancedMsgStr(nameProperty) }}\n </span>\n @if (i !== authenticator.transports.displayNameProperties.length - 1) {\n <span>, </span>\n }\n }\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\">\n <span [id]=\"'kc-webauthn-authenticator-createdlabel-' + i\">\n {{ i18n.msgStr('passkey-createdAt-label') }}\n </span>\n <span [id]=\"'kc-webauthn-authenticator-created-' + i\">\n {{ authenticator.createdAt }}\n </span>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemFillClass'\"></div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n <div id=\"kc-form-wrapper\">\n @if (realm.password) {\n <form\n id=\"kc-form-passkey\"\n [action]=\"url.loginAction\"\n method=\"post\"\n style=\"display: none\"\n >\n @if (!usernameHidden) {\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"username\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('passkey-autofill-select') }}\n </label>\n <input\n tabIndex=\"1\"\n id=\"username\"\n [attr.aria-invalid]=\"messagesPerField.existsError('username')\"\n [kcClass]=\"'kcInputClass'\"\n name=\"username\"\n [value]=\"login.username ?? ''\"\n type=\"text\"\n autoFocus\n autoComplete=\"off\"\n />\n @if (messagesPerField.existsError('username')) {\n <span\n id=\"input-error-username\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n >\n {{ messagesPerField.get('username') }}\n </span>\n }\n </div>\n }\n </form>\n <div\n id=\"kc-form-passkey-button\"\n [kcClass]=\"'kcFormButtonsClass'\"\n style=\"display: none\"\n >\n <input\n id=\"authButtonId\"\n type=\"button\"\n autoFocus\n [value]=\"i18n.msgStr('passkey-doAuthenticate')\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n />\n </div>\n }\n </div>\n </div>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginPasskeysConditionalAuthenticateComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
78
|
+
{
|
|
79
|
+
provide: ComponentReference,
|
|
80
|
+
useExisting: forwardRef(() => LoginPasskeysConditionalAuthenticateComponent)
|
|
81
|
+
}
|
|
82
|
+
], template: "@let authenticators = kcContext.authenticators;\n@let realm = kcContext.realm;\n@let url = kcContext.url;\n@let shouldDisplayAuthenticators = kcContext.shouldDisplayAuthenticators;\n@let login = kcContext.login;\n@let messagesPerField = kcContext.messagesPerField;\n@let usernameHidden = kcContext.usernameHidden;\n@let registrationDisabled = kcContext.registrationDisabled;\n<kc-login-template [displayInfo]=\"displayInfo\">\n <ng-container headerNode>\n {{ i18n.msgStr('passkey-login-title') }}\n </ng-container>\n <ng-container infoNode>\n @if (realm.registrationAllowed && !registrationDisabled) {\n <div id=\"kc-registration\">\n <span>\n {{ i18n.msgStr('noAccount') }}\n <a\n tabIndex=\"6\"\n [href]=\"url.registrationUrl\"\n >\n {{ i18n.msgStr('doRegister') }}\n </a>\n </span>\n </div>\n }\n </ng-container>\n\n <ng-container content>\n <form\n id=\"webauth\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorData\"\n name=\"authenticatorData\"\n />\n <input\n type=\"hidden\"\n id=\"signature\"\n name=\"signature\"\n />\n <input\n type=\"hidden\"\n id=\"credentialId\"\n name=\"credentialId\"\n />\n <input\n type=\"hidden\"\n id=\"userHandle\"\n name=\"userHandle\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n </form>\n <div\n [kcClass]=\"'kcFormGroupClass'\"\n no-bottom-margin=\"true\"\n style=\"margin-bottom: 0\"\n >\n @if (authenticators !== undefined && authenticators.authenticators.length !== 0) {\n <form\n id=\"authn_select\"\n [kcClass]=\"'kcFormClass'\"\n >\n @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {\n <input\n type=\"hidden\"\n name=\"authn_use_chk\"\n readOnly\n [value]=\"authenticator.credentialId\"\n />\n }\n </form>\n\n @if (shouldDisplayAuthenticators) {\n @if (authenticators.authenticators.length > 1) {\n <p [kcClass]=\"'kcSelectAuthListItemTitle'\">\n {{ i18n.msgStr('passkey-available-authenticators') }}\n </p>\n }\n\n <div [kcClass]=\"'kcFormClass'\">\n @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {\n <div\n id=\"'kc-webauthn-authenticator-item-' + i\"\n [kcClass]=\"'kcSelectAuthListItemClass'\"\n >\n <i\n [ngClass]=\"selectAuthListItemIconClass(authenticator.transports.iconClass)\"\n [kcClass]=\"'kcCommonLogoIdP'\"\n aria-hidden=\"true\"\n ></i>\n <div [kcClass]=\"'kcSelectAuthListItemBodyClass'\">\n <div\n [id]=\"'kc-webauthn-authenticator-label-' + i\"\n [kcClass]=\"'kcSelectAuthListItemHeadingClass'\"\n >\n {{ i18n.advancedMsgStr(authenticator.label) }}\n </div>\n @if (\n authenticator.transports !== undefined &&\n authenticator.transports.displayNameProperties !== undefined &&\n authenticator.transports.displayNameProperties.length !== 0\n ) {\n <div\n [id]=\"'kc-webauthn-authenticator-transport-' + i\"\n [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\"\n >\n @for (\n nameProperty of authenticator.transports.displayNameProperties;\n track nameProperty;\n let i = $index\n ) {\n <span>\n {{ i18n.advancedMsgStr(nameProperty) }}\n </span>\n @if (i !== authenticator.transports.displayNameProperties.length - 1) {\n <span>, </span>\n }\n }\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\">\n <span [id]=\"'kc-webauthn-authenticator-createdlabel-' + i\">\n {{ i18n.msgStr('passkey-createdAt-label') }}\n </span>\n <span [id]=\"'kc-webauthn-authenticator-created-' + i\">\n {{ authenticator.createdAt }}\n </span>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemFillClass'\"></div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n <div id=\"kc-form-wrapper\">\n @if (realm.password) {\n <form\n id=\"kc-form-passkey\"\n [action]=\"url.loginAction\"\n method=\"post\"\n style=\"display: none\"\n >\n @if (!usernameHidden) {\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"username\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('passkey-autofill-select') }}\n </label>\n <input\n tabIndex=\"1\"\n id=\"username\"\n [attr.aria-invalid]=\"messagesPerField.existsError('username')\"\n [kcClass]=\"'kcInputClass'\"\n name=\"username\"\n [value]=\"login.username ?? ''\"\n type=\"text\"\n autoFocus\n autoComplete=\"off\"\n />\n @if (messagesPerField.existsError('username')) {\n <span\n id=\"input-error-username\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n >\n {{ messagesPerField.get('username') }}\n </span>\n }\n </div>\n }\n </form>\n <div\n id=\"kc-form-passkey-button\"\n [kcClass]=\"'kcFormButtonsClass'\"\n style=\"display: none\"\n >\n <input\n id=\"authButtonId\"\n type=\"button\"\n autoFocus\n [value]=\"i18n.msgStr('passkey-doAuthenticate')\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n />\n </div>\n }\n </div>\n </div>\n </ng-container>\n</kc-login-template>\n" }]
|
|
83
|
+
}], ctorParameters: () => [] });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcGFzc2tleXMtY29uZGl0aW9uYWwtYXV0aGVudGljYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3BhZ2VzL2xvZ2luLXBhc3NrZXlzLWNvbmRpdGlvbmFsLWF1dGhlbnRpY2F0ZS9sb2dpbi1wYXNza2V5cy1jb25kaXRpb25hbC1hdXRoZW50aWNhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tcGFzc2tleXMtY29uZGl0aW9uYWwtYXV0aGVudGljYXRlL2xvZ2luLXBhc3NrZXlzLWNvbmRpdGlvbmFsLWF1dGhlbnRpY2F0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDdEYsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQWlCbkUsTUFBTSxPQUFPLDZDQUE4QyxTQUFRLGtCQUFrQjtJQVVqRjtRQUNJLEtBQUssRUFBRSxDQUFDO1FBVlosY0FBUyxHQUFHLE1BQU0sQ0FBZ0YsZ0JBQWdCLENBQUMsQ0FBQztRQUNwSCxpQ0FBNEIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNwRSxTQUFJLEdBQUcsTUFBTSxDQUFPLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQUcsTUFBTSxDQUFVLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQW9DLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBRTVCLGlCQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFJeEMsTUFBTSxFQUNGLEdBQUcsRUFDSCxTQUFTLEVBQ1QsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFFaEIsYUFBYSxFQUNoQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbkIsTUFBTSxPQUFPLEdBQWE7WUFDdEI7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsRUFBRSxFQUFFLDhCQUE4QjtnQkFDbEMsV0FBVyxFQUFFOzhEQUNpQyxHQUFHLENBQUMsYUFBYTt3REFDdkIsR0FBRyxDQUFDLGFBQWE7O2tFQUVQLElBQUksQ0FBQyxZQUFZOzs2Q0FFdEMsZ0JBQWdCO3NDQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQzs2Q0FDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztpQ0FDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7MENBQ1gsYUFBYTs7Ozs7dUNBS2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQzs7Ozs7O21DQU16RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7O1dBRTVGO2FBQ0U7U0FDSixDQUFDO1FBQ0YsSUFBSSxDQUFDLDRCQUE0QixDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxTQUFpQjtRQUN6QyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDckIsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSTtZQUM3QyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDeEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNWLDhEQUE4RDtRQUM5RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBZ0IsQ0FBQyxDQUFDO1FBQzNDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7OEdBakVRLDZDQUE2QztrR0FBN0MsNkNBQTZDLHNEQVAzQztZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNkNBQTZDLENBQUM7YUFDL0U7U0FDSixpREN6QkwsKzZTQTZNQSw0Q0Q3TGMsaUJBQWlCLG9LQUFFLGdCQUFnQjs7MkZBV3BDLDZDQUE2QztrQkFiekQsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxZQUNwQyxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsOENBQThDLENBQUM7eUJBQy9FO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY3JpcHQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvbW9kZWxzL3NjcmlwdC5tb2RlbCc7XG5pbXBvcnQgeyBVU0VfREVGQVVMVF9DU1MgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvdG9rZW5zL3VzZS1kZWZhdWx0LWNzcy50b2tlbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3NlcnZpY2VzL2xvZ2luLXJlc291cmNlLWluamVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTE9HSU5fQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9jbGFzc2VzLnRva2VuJztcbmltcG9ydCB7IExPR0lOX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvaTE4bi50b2tlbic7XG5pbXBvcnQgeyBLQ19MT0dJTl9DT05URVhUIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2tjLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgQ2xhc3NLZXksIGdldEtjQ2xzeCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAnLi4vLi4vS2NDb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGVtcGxhdGVDb21wb25lbnQsIEtjQ2xhc3NEaXJlY3RpdmVdLFxuICAgIHNlbGVjdG9yOiAna2Mtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICdsb2dpbi1wYXNza2V5cy1jb25kaXRpb25hbC1hdXRoZW50aWNhdGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMb2dpblBhc3NrZXlzQ29uZGl0aW9uYWxBdXRoZW50aWNhdGVDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luUGFzc2tleXNDb25kaXRpb25hbEF1dGhlbnRpY2F0ZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFJlZmVyZW5jZSB7XG4gICAga2NDb250ZXh0ID0gaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2xvZ2luLXBhc3NrZXlzLWNvbmRpdGlvbmFsLWF1dGhlbnRpY2F0ZS5mdGwnIH0+PihLQ19MT0dJTl9DT05URVhUKTtcbiAgICBsb2dpblJlc291cmNlSW5qZWN0b3JTZXJ2aWNlID0gaW5qZWN0KExvZ2luUmVzb3VyY2VJbmplY3RvclNlcnZpY2UpO1xuICAgIGkxOG4gPSBpbmplY3Q8STE4bj4oTE9HSU5fSTE4Tik7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KExPR0lOX0NMQVNTRVMpO1xuICAgIGRpc3BsYXlJbmZvOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGF1dGhCdXR0b25JZCA9ICdhdXRoZW50aWNhdGVXZWJBdXRobkJ1dHRvbic7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgY2hhbGxlbmdlLFxuICAgICAgICAgICAgcnBJZCxcbiAgICAgICAgICAgIHVzZXJWZXJpZmljYXRpb24sXG4gICAgICAgICAgICBpc1VzZXJJZGVudGlmaWVkLFxuXG4gICAgICAgICAgICBjcmVhdGVUaW1lb3V0XG4gICAgICAgIH0gPSB0aGlzLmtjQ29udGV4dDtcbiAgICAgICAgY29uc3Qgc2NyaXB0czogU2NyaXB0W10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21vZHVsZScsXG4gICAgICAgICAgICAgICAgaWQ6ICdMb2dpblJlY292ZXJ5QXV0aG5Db2RlQ29uZmlnJyxcbiAgICAgICAgICAgICAgICB0ZXh0Q29udGVudDogYFxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQgeyBhdXRoZW50aWNhdGVCeVdlYkF1dGhuIH0gZnJvbSBcIiR7dXJsLnJlc291cmNlc1BhdGh9L2pzL3dlYmF1dGhuQXV0aGVudGljYXRlLmpzXCI7XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCB7IGluaXRBdXRoZW50aWNhdGUgfSBmcm9tIFwiJHt1cmwucmVzb3VyY2VzUGF0aH0vanMvcGFzc2tleXNDb25kaXRpb25hbEF1dGguanNcIjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRoQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIke3RoaXMuYXV0aEJ1dHRvbklkfVwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1VzZXJJZGVudGlmaWVkIDogJHtpc1VzZXJJZGVudGlmaWVkfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSA6ICR7SlNPTi5zdHJpbmdpZnkoY2hhbGxlbmdlKX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyVmVyaWZpY2F0aW9uIDogJHtKU09OLnN0cmluZ2lmeSh1c2VyVmVyaWZpY2F0aW9uKX0sXG4gICAgICAgICAgICAgICAgICAgICAgICBycElkIDogJHtKU09OLnN0cmluZ2lmeShycElkKX0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUaW1lb3V0IDogJHtjcmVhdGVUaW1lb3V0fVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBhdXRoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVCeVdlYkF1dGhuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuaTE4bi5tc2dTdHIoJ3dlYmF1dGhuLXVuc3VwcG9ydGVkLWJyb3dzZXItdGV4dCcpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpbml0QXV0aGVudGljYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnIDogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmkxOG4ubXNnU3RyKCdwYXNza2V5LXVuc3VwcG9ydGVkLWJyb3dzZXItdGV4dCcpKX1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgYFxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmxvZ2luUmVzb3VyY2VJbmplY3RvclNlcnZpY2UuaW5zZXJ0QWRkaXRpb25hbFNjcmlwdHMoc2NyaXB0cyk7XG4gICAgfVxuXG4gICAgc2VsZWN0QXV0aExpc3RJdGVtSWNvbkNsYXNzKGljb25DbGFzczogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGtjQ2xzeCA9IGdldEtjQ2xzeCh7XG4gICAgICAgICAgICBkb1VzZURlZmF1bHRDc3M6IHRoaXMuZG9Vc2VEZWZhdWx0Q3NzID8/IHRydWUsXG4gICAgICAgICAgICBjbGFzc2VzOiB0aGlzLmNsYXNzZXNcbiAgICAgICAgfSkua2NDbHN4O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBrY0Nsc3goaWNvbkNsYXNzIGFzIGFueSk7XG4gICAgICAgIGlmIChjbGFzc05hbWUgPT09IGljb25DbGFzcykge1xuICAgICAgICAgICAgcmV0dXJuIGtjQ2xzeCgna2NXZWJBdXRobkRlZmF1bHRJY29uJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgICB9XG59XG4iLCJAbGV0IGF1dGhlbnRpY2F0b3JzID0ga2NDb250ZXh0LmF1dGhlbnRpY2F0b3JzO1xuQGxldCByZWFsbSA9IGtjQ29udGV4dC5yZWFsbTtcbkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgc2hvdWxkRGlzcGxheUF1dGhlbnRpY2F0b3JzID0ga2NDb250ZXh0LnNob3VsZERpc3BsYXlBdXRoZW50aWNhdG9ycztcbkBsZXQgbG9naW4gPSBrY0NvbnRleHQubG9naW47XG5AbGV0IG1lc3NhZ2VzUGVyRmllbGQgPSBrY0NvbnRleHQubWVzc2FnZXNQZXJGaWVsZDtcbkBsZXQgdXNlcm5hbWVIaWRkZW4gPSBrY0NvbnRleHQudXNlcm5hbWVIaWRkZW47XG5AbGV0IHJlZ2lzdHJhdGlvbkRpc2FibGVkID0ga2NDb250ZXh0LnJlZ2lzdHJhdGlvbkRpc2FibGVkO1xuPGtjLWxvZ2luLXRlbXBsYXRlIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiPlxuICAgIDxuZy1jb250YWluZXIgaGVhZGVyTm9kZT5cbiAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3Bhc3NrZXktbG9naW4tdGl0bGUnKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgaW5mb05vZGU+XG4gICAgICAgIEBpZiAocmVhbG0ucmVnaXN0cmF0aW9uQWxsb3dlZCAmJiAhcmVnaXN0cmF0aW9uRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJrYy1yZWdpc3RyYXRpb25cIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ25vQWNjb3VudCcpIH19XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwidXJsLnJlZ2lzdHJhdGlvblVybFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdkb1JlZ2lzdGVyJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNvbnRlbnQ+XG4gICAgICAgIDxmb3JtXG4gICAgICAgICAgICBpZD1cIndlYmF1dGhcIlxuICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgIGlkPVwiY2xpZW50RGF0YUpTT05cIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJjbGllbnREYXRhSlNPTlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJhdXRoZW50aWNhdG9yRGF0YVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImF1dGhlbnRpY2F0b3JEYXRhXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBpZD1cInNpZ25hdHVyZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInNpZ25hdHVyZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJjcmVkZW50aWFsSWRcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJjcmVkZW50aWFsSWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgIGlkPVwidXNlckhhbmRsZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInVzZXJIYW5kbGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgIGlkPVwiZXJyb3JcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJlcnJvclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiXG4gICAgICAgICAgICBuby1ib3R0b20tbWFyZ2luPVwidHJ1ZVwiXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGF1dGhlbnRpY2F0b3JzICE9PSB1bmRlZmluZWQgJiYgYXV0aGVudGljYXRvcnMuYXV0aGVudGljYXRvcnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJhdXRobl9zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGF1dGhlbnRpY2F0b3Igb2YgYXV0aGVudGljYXRvcnMuYXV0aGVudGljYXRvcnM7IHRyYWNrIGF1dGhlbnRpY2F0b3I7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYXV0aG5fdXNlX2Noa1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYXV0aGVudGljYXRvci5jcmVkZW50aWFsSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZm9ybT5cblxuICAgICAgICAgICAgICAgIEBpZiAoc2hvdWxkRGlzcGxheUF1dGhlbnRpY2F0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYXV0aGVudGljYXRvcnMuYXV0aGVudGljYXRvcnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtVGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3Bhc3NrZXktYXZhaWxhYmxlLWF1dGhlbnRpY2F0b3JzJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoYXV0aGVudGljYXRvciBvZiBhdXRoZW50aWNhdG9ycy5hdXRoZW50aWNhdG9yczsgdHJhY2sgYXV0aGVudGljYXRvcjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiJ2tjLXdlYmF1dGhuLWF1dGhlbnRpY2F0b3ItaXRlbS0nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY1NlbGVjdEF1dGhMaXN0SXRlbUNsYXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0QXV0aExpc3RJdGVtSWNvbkNsYXNzKGF1dGhlbnRpY2F0b3IudHJhbnNwb3J0cy5pY29uQ2xhc3MpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0NvbW1vbkxvZ29JZFAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtQm9keUNsYXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIna2Mtd2ViYXV0aG4tYXV0aGVudGljYXRvci1sYWJlbC0nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtSGVhZGluZ0NsYXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5hZHZhbmNlZE1zZ1N0cihhdXRoZW50aWNhdG9yLmxhYmVsKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3IudHJhbnNwb3J0cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvci50cmFuc3BvcnRzLmRpc3BsYXlOYW1lUHJvcGVydGllcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvci50cmFuc3BvcnRzLmRpc3BsYXlOYW1lUHJvcGVydGllcy5sZW5ndGggIT09IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidrYy13ZWJhdXRobi1hdXRoZW50aWNhdG9yLXRyYW5zcG9ydC0nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY1NlbGVjdEF1dGhMaXN0SXRlbURlc2NyaXB0aW9uQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVByb3BlcnR5IG9mIGF1dGhlbnRpY2F0b3IudHJhbnNwb3J0cy5kaXNwbGF5TmFtZVByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBuYW1lUHJvcGVydHk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9ICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4uYWR2YW5jZWRNc2dTdHIobmFtZVByb3BlcnR5KSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpICE9PSBhdXRoZW50aWNhdG9yLnRyYW5zcG9ydHMuZGlzcGxheU5hbWVQcm9wZXJ0aWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4sIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtRGVzY3JpcHRpb25DbGFzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lkXT1cIidrYy13ZWJhdXRobi1hdXRoZW50aWNhdG9yLWNyZWF0ZWRsYWJlbC0nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3Bhc3NrZXktY3JlYXRlZEF0LWxhYmVsJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaWRdPVwiJ2tjLXdlYmF1dGhuLWF1dGhlbnRpY2F0b3ItY3JlYXRlZC0nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXV0aGVudGljYXRvci5jcmVhdGVkQXQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtRmlsbENsYXNzJ1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBpZD1cImtjLWZvcm0td3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVhbG0ucGFzc3dvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwia2MtZm9ybS1wYXNza2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25dPVwidXJsLmxvZ2luQWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghdXNlcm5hbWVIaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0xhYmVsQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3Bhc3NrZXktYXV0b2ZpbGwtc2VsZWN0JykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ1c2VybmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwibWVzc2FnZXNQZXJGaWVsZC5leGlzdHNFcnJvcigndXNlcm5hbWUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NJbnB1dENsYXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImxvZ2luLnVzZXJuYW1lID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChtZXNzYWdlc1BlckZpZWxkLmV4aXN0c0Vycm9yKCd1c2VybmFtZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaW5wdXQtZXJyb3ItdXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0RXJyb3JNZXNzYWdlQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1lc3NhZ2VzUGVyRmllbGQuZ2V0KCd1c2VybmFtZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImtjLWZvcm0tcGFzc2tleS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUJ1dHRvbnNDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhdXRoQnV0dG9uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpMThuLm1zZ1N0cigncGFzc2tleS1kb0F1dGhlbnRpY2F0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25QcmltYXJ5Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
-
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
1
|
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
2
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
3
|
+
import { I18n } from '../../i18n';
|
|
4
|
+
import { KcContext } from '../../KcContext';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class LoginPasswordComponent extends ComponentReference {
|
|
6
7
|
kcContext: KcContext.LoginPassword;
|
|
8
|
+
i18n: I18n;
|
|
7
9
|
doUseDefaultCss: boolean;
|
|
8
10
|
classes: Partial<Record<ClassKey, string>>;
|
|
9
11
|
displayRequiredFields: import("@angular/core").InputSignal<boolean>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input, signal } from '@angular/core';
|
|
2
|
+
import { USE_DEFAULT_CSS } from '../../../lib/tokens/use-default-css.token';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { PasswordWrapperComponent } from '../../../login/components/password-wrapper/password-wrapper.component';
|
|
5
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
6
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
7
|
+
import { KcSanitizePipe } from '../../../login/pipes/kc-sanitize.pipe';
|
|
8
|
+
import { LOGIN_CLASSES } from '../../../login/tokens/classes.token';
|
|
9
|
+
import { LOGIN_I18N } from '../../../login/tokens/i18n.token';
|
|
10
|
+
import { KC_LOGIN_CONTEXT } from '../../../login/tokens/kc-context.token';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class LoginPasswordComponent extends ComponentReference {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this.kcContext = inject(KC_LOGIN_CONTEXT);
|
|
16
|
+
this.i18n = inject(LOGIN_I18N);
|
|
17
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
18
|
+
this.classes = inject(LOGIN_CLASSES);
|
|
19
|
+
this.displayRequiredFields = input(false);
|
|
20
|
+
this.documentTitle = input();
|
|
21
|
+
this.bodyClassName = input();
|
|
22
|
+
this.displayInfo = false;
|
|
23
|
+
this.displayMessage = this.kcContext.messagesPerField.existsError('password');
|
|
24
|
+
this.isLoginButtonDisabled = signal(false);
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginPasswordComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LoginPasswordComponent, isStandalone: true, selector: "kc-root", inputs: { displayRequiredFields: { classPropertyName: "displayRequiredFields", publicName: "displayRequiredFields", isSignal: true, isRequired: false, transformFunction: null }, documentTitle: { classPropertyName: "documentTitle", publicName: "documentTitle", isSignal: true, isRequired: false, transformFunction: null }, bodyClassName: { classPropertyName: "bodyClassName", publicName: "bodyClassName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
28
|
+
{
|
|
29
|
+
provide: ComponentReference,
|
|
30
|
+
useExisting: forwardRef(() => LoginPasswordComponent)
|
|
31
|
+
}
|
|
32
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let messagesPerField = kcContext.messagesPerField;\n@let realm = kcContext.realm;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('doLogIn') }}\n </ng-container>\n <ng-container content>\n <div id=\"kc-form\">\n <div id=\"kc-form-wrapper\">\n <form\n id=\"kc-form-login\"\n (onSubmit)=\"isLoginButtonDisabled.set(true)\"\n [action]=\"url?.loginAction\"\n method=\"post\"\n >\n <div\n [kcClass]=\"'kcFormGroupClass'\"\n class=\"no-bottom-margin\"\n >\n <hr />\n <label\n for=\"password\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('password') }}\n </label>\n <kc-password-wrapper passwordInputId=\"password\">\n <input\n type=\"password\"\n id=\"password\"\n name=\"password\"\n [kcClass]=\"'kcInputClass'\"\n [required]=\"true\"\n [autofocus]=\"true\"\n [tabindex]=\"1\"\n aria-describedby=\"input-error-password\"\n />\n </kc-password-wrapper>\n\n @if (messagesPerField.existsError('password')) {\n <span\n id=\"input-error-password\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.getFirstError('password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n <div [kcClass]=\"['kcFormGroupClass', 'kcFormSettingClass']\">\n <div id=\"kc-form-options\"></div>\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\">\n @if (realm.resetPasswordAllowed) {\n <span>\n <a\n tabindex=\"5\"\n [href]=\"url.loginResetCredentialsUrl\"\n >\n {{ i18n.msgStr('doForgotPassword') }}\n </a>\n </span>\n }\n </div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <input\n type=\"submit\"\n id=\"kc-login\"\n name=\"login\"\n [value]=\"i18n.msgStr('doLogIn')\"\n [disabled]=\"isLoginButtonDisabled()\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [tabindex]=\"4\"\n />\n </div>\n </form>\n </div>\n </div>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: PasswordWrapperComponent, selector: "kc-password-wrapper", inputs: ["passwordInputId"] }, { kind: "pipe", type: KcSanitizePipe, name: "kcSanitize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginPasswordComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective, PasswordWrapperComponent, KcSanitizePipe], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
37
|
+
{
|
|
38
|
+
provide: ComponentReference,
|
|
39
|
+
useExisting: forwardRef(() => LoginPasswordComponent)
|
|
40
|
+
}
|
|
41
|
+
], template: "@let url = kcContext.url;\n@let messagesPerField = kcContext.messagesPerField;\n@let realm = kcContext.realm;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('doLogIn') }}\n </ng-container>\n <ng-container content>\n <div id=\"kc-form\">\n <div id=\"kc-form-wrapper\">\n <form\n id=\"kc-form-login\"\n (onSubmit)=\"isLoginButtonDisabled.set(true)\"\n [action]=\"url?.loginAction\"\n method=\"post\"\n >\n <div\n [kcClass]=\"'kcFormGroupClass'\"\n class=\"no-bottom-margin\"\n >\n <hr />\n <label\n for=\"password\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('password') }}\n </label>\n <kc-password-wrapper passwordInputId=\"password\">\n <input\n type=\"password\"\n id=\"password\"\n name=\"password\"\n [kcClass]=\"'kcInputClass'\"\n [required]=\"true\"\n [autofocus]=\"true\"\n [tabindex]=\"1\"\n aria-describedby=\"input-error-password\"\n />\n </kc-password-wrapper>\n\n @if (messagesPerField.existsError('password')) {\n <span\n id=\"input-error-password\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.getFirstError('password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n <div [kcClass]=\"['kcFormGroupClass', 'kcFormSettingClass']\">\n <div id=\"kc-form-options\"></div>\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\">\n @if (realm.resetPasswordAllowed) {\n <span>\n <a\n tabindex=\"5\"\n [href]=\"url.loginResetCredentialsUrl\"\n >\n {{ i18n.msgStr('doForgotPassword') }}\n </a>\n </span>\n }\n </div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <input\n type=\"submit\"\n id=\"kc-login\"\n name=\"login\"\n [value]=\"i18n.msgStr('doLogIn')\"\n [disabled]=\"isLoginButtonDisabled()\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [tabindex]=\"4\"\n />\n </div>\n </form>\n </div>\n </div>\n </ng-container>\n</kc-login-template>\n" }]
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tcGFzc3dvcmQvbG9naW4tcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tcGFzc3dvcmQvbG9naW4tcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBQzdILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztBQWtCdEYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGtCQUFrQjtJQWI5RDs7UUFjSSxjQUFTLEdBQUcsTUFBTSxDQUF1RCxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNGLFNBQUksR0FBRyxNQUFNLENBQU8sVUFBVSxDQUFDLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsYUFBYSxDQUFDLENBQUM7UUFDNUUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpFLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN6Qzs4R0FaWSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwwZ0JBUHBCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzthQUN4RDtTQUNKLGlEQ3pCTCwyNEhBMEZBLDRDRDFFYyxpQkFBaUIsb0tBQUUsZ0JBQWdCLCtGQUFFLHdCQUF3Qix3RkFBRSxjQUFjOzsyRkFXOUUsc0JBQXNCO2tCQWJsQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLGNBQWMsQ0FBQyxZQUM5RSxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7eUJBQ3hEO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVU0VfREVGQVVMVF9DU1MgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvdG9rZW5zL3VzZS1kZWZhdWx0LWNzcy50b2tlbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgUGFzc3dvcmRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29tcG9uZW50cy9wYXNzd29yZC13cmFwcGVyL3Bhc3N3b3JkLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29udGFpbmVycy90ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2NDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2RpcmVjdGl2ZXMva2MtY2xhc3MuZGlyZWN0aXZlJztcbmltcG9ydCB7IEtjU2FuaXRpemVQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMva2Mtc2FuaXRpemUucGlwZSc7XG5pbXBvcnQgeyBMT0dJTl9DTEFTU0VTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2NsYXNzZXMudG9rZW4nO1xuaW1wb3J0IHsgTE9HSU5fSTE4TiB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9pMThuLnRva2VuJztcbmltcG9ydCB7IEtDX0xPR0lOX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMva2MtY29udGV4dC50b2tlbic7XG5pbXBvcnQgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAnLi4vLi4vS2NDb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGVtcGxhdGVDb21wb25lbnQsIEtjQ2xhc3NEaXJlY3RpdmUsIFBhc3N3b3JkV3JhcHBlckNvbXBvbmVudCwgS2NTYW5pdGl6ZVBpcGVdLFxuICAgIHNlbGVjdG9yOiAna2Mtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICdsb2dpbi1wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvZ2luUGFzc3dvcmRDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luUGFzc3dvcmRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGtjQ29udGV4dCA9IGluamVjdDxFeHRyYWN0PEtjQ29udGV4dCwgeyBwYWdlSWQ6ICdsb2dpbi1wYXNzd29yZC5mdGwnIH0+PihLQ19MT0dJTl9DT05URVhUKTtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KExPR0lOX0kxOE4pO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihMT0dJTl9DTEFTU0VTKTtcbiAgICBkaXNwbGF5UmVxdWlyZWRGaWVsZHMgPSBpbnB1dChmYWxzZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGRpc3BsYXlJbmZvID0gZmFsc2U7XG4gICAgZGlzcGxheU1lc3NhZ2UgPSB0aGlzLmtjQ29udGV4dC5tZXNzYWdlc1BlckZpZWxkLmV4aXN0c0Vycm9yKCdwYXNzd29yZCcpO1xuXG4gICAgaXNMb2dpbkJ1dHRvbkRpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgbWVzc2FnZXNQZXJGaWVsZCA9IGtjQ29udGV4dC5tZXNzYWdlc1BlckZpZWxkO1xuQGxldCByZWFsbSA9IGtjQ29udGV4dC5yZWFsbTtcbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICAgIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gICAgW2JvZHlDbGFzc05hbWVdPVwiYm9keUNsYXNzTmFtZSgpXCJcbiAgICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICAgIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICAgIFtkb2N1bWVudFRpdGxlXT1cImRvY3VtZW50VGl0bGUoKVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgICAgICB7eyBpMThuLm1zZ1N0cignZG9Mb2dJbicpIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8ZGl2IGlkPVwia2MtZm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cImtjLWZvcm0td3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgIGlkPVwia2MtZm9ybS1sb2dpblwiXG4gICAgICAgICAgICAgICAgICAgIChvblN1Ym1pdCk9XCJpc0xvZ2luQnV0dG9uRGlzYWJsZWQuc2V0KHRydWUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmw/LmxvZ2luQWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuby1ib3R0b20tbWFyZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjTGFiZWxDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdwYXNzd29yZCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGtjLXBhc3N3b3JkLXdyYXBwZXIgcGFzc3dvcmRJbnB1dElkPVwicGFzc3dvcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0Q2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJpbnB1dC1lcnJvci1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwva2MtcGFzc3dvcmQtd3JhcHBlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChtZXNzYWdlc1BlckZpZWxkLmV4aXN0c0Vycm9yKCdwYXNzd29yZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpbnB1dC1lcnJvci1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0RXJyb3JNZXNzYWdlQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZXNzYWdlc1BlckZpZWxkLmdldEZpcnN0RXJyb3IoJ3Bhc3N3b3JkJykgfCBrY1Nhbml0aXplOiAnaHRtbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIlsna2NGb3JtR3JvdXBDbGFzcycsICdrY0Zvcm1TZXR0aW5nQ2xhc3MnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImtjLWZvcm0tb3B0aW9uc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtT3B0aW9uc1dyYXBwZXJDbGFzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHJlYWxtLnJlc2V0UGFzc3dvcmRBbGxvd2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInVybC5sb2dpblJlc2V0Q3JlZGVudGlhbHNVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdkb0ZvcmdvdFBhc3N3b3JkJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJrYy1mb3JtLWJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUdyb3VwQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJrYy1sb2dpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImxvZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaTE4bi5tc2dTdHIoJ2RvTG9nSW4nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9naW5CdXR0b25EaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25QcmltYXJ5Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|
package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
-
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
1
|
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
2
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
3
|
+
import { I18n } from '../../i18n';
|
|
4
|
+
import { KcContext } from '../../KcContext';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class LoginRecoveryAuthnCodeConfigComponent extends ComponentReference {
|
|
6
7
|
kcContext: KcContext.LoginRecoveryAuthnCodeConfig;
|
|
8
|
+
i18n: I18n;
|
|
7
9
|
doUseDefaultCss: boolean;
|
|
8
10
|
classes: Partial<Record<ClassKey, string>>;
|
|
9
11
|
displayRequiredFields: import("@angular/core").InputSignal<boolean>;
|
package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input, signal } from '@angular/core';
|
|
2
|
+
import { USE_DEFAULT_CSS } from '../../../lib/tokens/use-default-css.token';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { LogoutOtherSessionsComponent } from '../../../login/components/logout-other-sessions/logout-other-sessions.component';
|
|
5
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
6
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
7
|
+
import { LOGIN_CLASSES } from '../../../login/tokens/classes.token';
|
|
8
|
+
import { LOGIN_I18N } from '../../../login/tokens/i18n.token';
|
|
9
|
+
import { KC_LOGIN_CONTEXT } from '../../../login/tokens/kc-context.token';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class LoginRecoveryAuthnCodeConfigComponent extends ComponentReference {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.kcContext = inject(KC_LOGIN_CONTEXT);
|
|
15
|
+
this.i18n = inject(LOGIN_I18N);
|
|
16
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
17
|
+
this.classes = inject(LOGIN_CLASSES);
|
|
18
|
+
this.displayRequiredFields = input(false);
|
|
19
|
+
this.documentTitle = input();
|
|
20
|
+
this.bodyClassName = input();
|
|
21
|
+
this.displayInfo = false;
|
|
22
|
+
this.displayMessage = false;
|
|
23
|
+
this.toggleRecoveryCodesConfirmation = signal(false);
|
|
24
|
+
this.olRecoveryCodesListId = 'kc-recovery-codes-list';
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginRecoveryAuthnCodeConfigComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LoginRecoveryAuthnCodeConfigComponent, isStandalone: true, selector: "kc-root", inputs: { displayRequiredFields: { classPropertyName: "displayRequiredFields", publicName: "displayRequiredFields", isSignal: true, isRequired: false, transformFunction: null }, documentTitle: { classPropertyName: "documentTitle", publicName: "documentTitle", isSignal: true, isRequired: false, transformFunction: null }, bodyClassName: { classPropertyName: "bodyClassName", publicName: "bodyClassName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
28
|
+
{
|
|
29
|
+
provide: ComponentReference,
|
|
30
|
+
useExisting: forwardRef(() => LoginRecoveryAuthnCodeConfigComponent)
|
|
31
|
+
}
|
|
32
|
+
], usesInheritance: true, ngImport: i0, template: "@let recoveryAuthnCodesConfigBean = kcContext.recoveryAuthnCodesConfigBean;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('recovery-code-config-header') }}\n </ng-container>\n\n <ng-container content>\n <div\n [kcClass]=\"'kcRecoveryCodesWarning'\"\n class=\"pf-c-alert pf-m-warning pf-m-inline\"\n aria-label=\"Warning alert\"\n >\n <div class=\"pf-c-alert__icon\">\n <i\n class=\"pficon-warning-triangle-o\"\n aria-hidden=\"true\"\n ></i>\n </div>\n <h4 class=\"pf-c-alert__title\">\n <span class=\"pf-screen-reader\">Warning alert:</span>\n {{ i18n.msgStr('recovery-code-config-warning-title') }}\n </h4>\n <div class=\"pf-c-alert__description\">\n <p>{{ i18n.msgStr('recovery-code-config-warning-message') }}</p>\n </div>\n </div>\n\n <ol\n [id]=\"olRecoveryCodesListId\"\n [kcClass]=\"'kcRecoveryCodesList'\"\n >\n @for (code of recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesList; track code; let i = $index) {\n <li>\n <span>{{ i + 1 }}:</span> {{ code.slice(0, 4) }}-{{ code.slice(4, 8) }}-{{ code.slice(8) }}\n </li>\n }\n </ol>\n\n <!-- actions -->\n <div [kcClass]=\"'kcRecoveryCodesActions'\">\n <button\n id=\"printRecoveryCodes\"\n class=\"pf-c-button pf-m-link\"\n type=\"button\"\n >\n <i\n class=\"pficon-print\"\n aria-hidden=\"true\"\n ></i>\n {{ i18n.msgStr('recovery-codes-print') }}\n </button>\n <button\n id=\"downloadRecoveryCodes\"\n class=\"pf-c-button pf-m-link\"\n type=\"button\"\n >\n <i\n class=\"pficon-save\"\n aria-hidden=\"true\"\n ></i>\n {{ i18n.msgStr('recovery-codes-download') }}\n </button>\n <button\n id=\"copyRecoveryCodes\"\n class=\"pf-c-button pf-m-link\"\n type=\"button\"\n >\n <i\n class=\"pficon-blueprint\"\n aria-hidden=\"true\"\n ></i>\n {{ i18n.msgStr('recovery-codes-copy') }}\n </button>\n </div>\n\n <!-- confirmation checkbox -->\n\n <div\n [kcClass]=\"'kcFormOptionsClass'\"\n class=\"checkbox\"\n >\n <label for=\"kcRecoveryCodesConfirmationCheck\">\n <input\n [kcClass]=\"'kcCheckInputClass'\"\n type=\"checkbox\"\n id=\"kcRecoveryCodesConfirmationCheck\"\n name=\"kcRecoveryCodesConfirmationCheck\"\n [checked]=\"toggleRecoveryCodesConfirmation()\"\n (change)=\"toggleRecoveryCodesConfirmation.set($any($event.target).checked)\"\n />\n {{ i18n.msgStr('recovery-codes-confirmation-message') }}\n </label>\n </div>\n\n <form\n [action]=\"kcContext.url.loginAction\"\n [kcClass]=\"'kcFormGroupClass'\"\n id=\"kc-recovery-codes-settings-form\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n name=\"generatedRecoveryAuthnCodes\"\n [value]=\"recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesAsString\"\n />\n <input\n type=\"hidden\"\n name=\"generatedAt\"\n [value]=\"recoveryAuthnCodesConfigBean.generatedAt\"\n />\n <input\n type=\"hidden\"\n id=\"userLabel\"\n name=\"userLabel\"\n [value]=\"i18n.msgStr('recovery-codes-label-default')\"\n />\n\n <kc-logout-other-sessions></kc-logout-other-sessions>\n\n @if (isAppInitiatedAction) {\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n id=\"saveRecoveryAuthnCodesBtn\"\n [value]=\"i18n.msgStr('recovery-codes-action-complete')\"\n [disabled]=\"!toggleRecoveryCodesConfirmation()\"\n />\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n id=\"cancelRecoveryAuthnCodesBtn\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ i18n.msgStr('recovery-codes-action-cancel') }}\n </button>\n } @else {\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"saveRecoveryAuthnCodesBtn\"\n [value]=\"i18n.msgStr('recovery-codes-action-complete')\"\n [disabled]=\"!toggleRecoveryCodesConfirmation()\"\n />\n }\n </form>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: LogoutOtherSessionsComponent, selector: "kc-logout-other-sessions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginRecoveryAuthnCodeConfigComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective, LogoutOtherSessionsComponent], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
37
|
+
{
|
|
38
|
+
provide: ComponentReference,
|
|
39
|
+
useExisting: forwardRef(() => LoginRecoveryAuthnCodeConfigComponent)
|
|
40
|
+
}
|
|
41
|
+
], template: "@let recoveryAuthnCodesConfigBean = kcContext.recoveryAuthnCodesConfigBean;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('recovery-code-config-header') }}\n </ng-container>\n\n <ng-container content>\n <div\n [kcClass]=\"'kcRecoveryCodesWarning'\"\n class=\"pf-c-alert pf-m-warning pf-m-inline\"\n aria-label=\"Warning alert\"\n >\n <div class=\"pf-c-alert__icon\">\n <i\n class=\"pficon-warning-triangle-o\"\n aria-hidden=\"true\"\n ></i>\n </div>\n <h4 class=\"pf-c-alert__title\">\n <span class=\"pf-screen-reader\">Warning alert:</span>\n {{ i18n.msgStr('recovery-code-config-warning-title') }}\n </h4>\n <div class=\"pf-c-alert__description\">\n <p>{{ i18n.msgStr('recovery-code-config-warning-message') }}</p>\n </div>\n </div>\n\n <ol\n [id]=\"olRecoveryCodesListId\"\n [kcClass]=\"'kcRecoveryCodesList'\"\n >\n @for (code of recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesList; track code; let i = $index) {\n <li>\n <span>{{ i + 1 }}:</span> {{ code.slice(0, 4) }}-{{ code.slice(4, 8) }}-{{ code.slice(8) }}\n </li>\n }\n </ol>\n\n <!-- actions -->\n <div [kcClass]=\"'kcRecoveryCodesActions'\">\n <button\n id=\"printRecoveryCodes\"\n class=\"pf-c-button pf-m-link\"\n type=\"button\"\n >\n <i\n class=\"pficon-print\"\n aria-hidden=\"true\"\n ></i>\n {{ i18n.msgStr('recovery-codes-print') }}\n </button>\n <button\n id=\"downloadRecoveryCodes\"\n class=\"pf-c-button pf-m-link\"\n type=\"button\"\n >\n <i\n class=\"pficon-save\"\n aria-hidden=\"true\"\n ></i>\n {{ i18n.msgStr('recovery-codes-download') }}\n </button>\n <button\n id=\"copyRecoveryCodes\"\n class=\"pf-c-button pf-m-link\"\n type=\"button\"\n >\n <i\n class=\"pficon-blueprint\"\n aria-hidden=\"true\"\n ></i>\n {{ i18n.msgStr('recovery-codes-copy') }}\n </button>\n </div>\n\n <!-- confirmation checkbox -->\n\n <div\n [kcClass]=\"'kcFormOptionsClass'\"\n class=\"checkbox\"\n >\n <label for=\"kcRecoveryCodesConfirmationCheck\">\n <input\n [kcClass]=\"'kcCheckInputClass'\"\n type=\"checkbox\"\n id=\"kcRecoveryCodesConfirmationCheck\"\n name=\"kcRecoveryCodesConfirmationCheck\"\n [checked]=\"toggleRecoveryCodesConfirmation()\"\n (change)=\"toggleRecoveryCodesConfirmation.set($any($event.target).checked)\"\n />\n {{ i18n.msgStr('recovery-codes-confirmation-message') }}\n </label>\n </div>\n\n <form\n [action]=\"kcContext.url.loginAction\"\n [kcClass]=\"'kcFormGroupClass'\"\n id=\"kc-recovery-codes-settings-form\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n name=\"generatedRecoveryAuthnCodes\"\n [value]=\"recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesAsString\"\n />\n <input\n type=\"hidden\"\n name=\"generatedAt\"\n [value]=\"recoveryAuthnCodesConfigBean.generatedAt\"\n />\n <input\n type=\"hidden\"\n id=\"userLabel\"\n name=\"userLabel\"\n [value]=\"i18n.msgStr('recovery-codes-label-default')\"\n />\n\n <kc-logout-other-sessions></kc-logout-other-sessions>\n\n @if (isAppInitiatedAction) {\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n id=\"saveRecoveryAuthnCodesBtn\"\n [value]=\"i18n.msgStr('recovery-codes-action-complete')\"\n [disabled]=\"!toggleRecoveryCodesConfirmation()\"\n />\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n id=\"cancelRecoveryAuthnCodesBtn\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ i18n.msgStr('recovery-codes-action-cancel') }}\n </button>\n } @else {\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"saveRecoveryAuthnCodesBtn\"\n [value]=\"i18n.msgStr('recovery-codes-action-complete')\"\n [disabled]=\"!toggleRecoveryCodesConfirmation()\"\n />\n }\n </form>\n </ng-container>\n</kc-login-template>\n" }]
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1jb25maWcvbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1jb25maWcvbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZGQUE2RixDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBa0J0RixNQUFNLE9BQU8scUNBQXNDLFNBQVEsa0JBQWtCO0lBYjdFOztRQWNJLGNBQVMsR0FBRyxNQUFNLENBQXlFLGdCQUFnQixDQUFDLENBQUM7UUFDN0csU0FBSSxHQUFHLE1BQU0sQ0FBTyxVQUFVLENBQUMsQ0FBQztRQUN2QixvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxhQUFhLENBQUMsQ0FBQztRQUM1RSwwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLG9DQUErQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoRCwwQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQztLQUNwRDs4R0FiWSxxQ0FBcUM7a0dBQXJDLHFDQUFxQywwZ0JBUG5DO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQzthQUN2RTtTQUNKLGlEQ3hCTCxzeExBMkpBLDRDRDVJYyxpQkFBaUIsb0tBQUUsZ0JBQWdCLCtGQUFFLDRCQUE0Qjs7MkZBV2xFLHFDQUFxQztrQkFiakQsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsQ0FBQyxZQUNsRSxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0NBQXNDLENBQUM7eUJBQ3ZFO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVU0VfREVGQVVMVF9DU1MgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvdG9rZW5zL3VzZS1kZWZhdWx0LWNzcy50b2tlbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvbG9nb3V0LW90aGVyLXNlc3Npb25zL2xvZ291dC1vdGhlci1zZXNzaW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTE9HSU5fQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9jbGFzc2VzLnRva2VuJztcbmltcG9ydCB7IExPR0lOX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvaTE4bi50b2tlbic7XG5pbXBvcnQgeyBLQ19MT0dJTl9DT05URVhUIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2tjLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEkxOG4gfSBmcm9tICcuLi8uLi9pMThuJztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJy4uLy4uL0tjQ29udGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RlbXBsYXRlQ29tcG9uZW50LCBLY0NsYXNzRGlyZWN0aXZlLCBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMb2dpblJlY292ZXJ5QXV0aG5Db2RlQ29uZmlnQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpblJlY292ZXJ5QXV0aG5Db2RlQ29uZmlnQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1jb25maWcuZnRsJyB9Pj4oS0NfTE9HSU5fQ09OVEVYVCk7XG4gICAgaTE4biA9IGluamVjdDxJMThuPihMT0dJTl9JMThOKTtcbiAgICBvdmVycmlkZSBkb1VzZURlZmF1bHRDc3MgPSBpbmplY3Q8Ym9vbGVhbj4oVVNFX0RFRkFVTFRfQ1NTKTtcbiAgICBvdmVycmlkZSBjbGFzc2VzID0gaW5qZWN0PFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+Pj4oTE9HSU5fQ0xBU1NFUyk7XG4gICAgZGlzcGxheVJlcXVpcmVkRmllbGRzID0gaW5wdXQoZmFsc2UpO1xuICAgIGRvY3VtZW50VGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgYm9keUNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgdG9nZ2xlUmVjb3ZlcnlDb2Rlc0NvbmZpcm1hdGlvbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBvbFJlY292ZXJ5Q29kZXNMaXN0SWQgPSAna2MtcmVjb3ZlcnktY29kZXMtbGlzdCc7XG59XG4iLCJAbGV0IHJlY292ZXJ5QXV0aG5Db2Rlc0NvbmZpZ0JlYW4gPSBrY0NvbnRleHQucmVjb3ZlcnlBdXRobkNvZGVzQ29uZmlnQmVhbjtcbkBsZXQgaXNBcHBJbml0aWF0ZWRBY3Rpb24gPSBrY0NvbnRleHQuaXNBcHBJbml0aWF0ZWRBY3Rpb247XG48a2MtbG9naW4tdGVtcGxhdGVcbiAgICBbZGlzcGxheUluZm9dPVwiZGlzcGxheUluZm9cIlxuICAgIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gICAgW2Rpc3BsYXlNZXNzYWdlXT1cImRpc3BsYXlNZXNzYWdlXCJcbiAgICBbZGlzcGxheVJlcXVpcmVkRmllbGRzXT1cImRpc3BsYXlSZXF1aXJlZEZpZWxkcygpXCJcbiAgICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICAgIDxuZy1jb250YWluZXIgaGVhZGVyTm9kZT5cbiAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3JlY292ZXJ5LWNvZGUtY29uZmlnLWhlYWRlcicpIH19XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNvbnRlbnQ+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY1JlY292ZXJ5Q29kZXNXYXJuaW5nJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInBmLWMtYWxlcnQgcGYtbS13YXJuaW5nIHBmLW0taW5saW5lXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJXYXJuaW5nIGFsZXJ0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBmLWMtYWxlcnRfX2ljb25cIj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBmaWNvbi13YXJuaW5nLXRyaWFuZ2xlLW9cIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cInBmLWMtYWxlcnRfX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZi1zY3JlZW4tcmVhZGVyXCI+V2FybmluZyBhbGVydDo8L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3JlY292ZXJ5LWNvZGUtY29uZmlnLXdhcm5pbmctdGl0bGUnKSB9fVxuICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZi1jLWFsZXJ0X19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxwPnt7IGkxOG4ubXNnU3RyKCdyZWNvdmVyeS1jb2RlLWNvbmZpZy13YXJuaW5nLW1lc3NhZ2UnKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8b2xcbiAgICAgICAgICAgIFtpZF09XCJvbFJlY292ZXJ5Q29kZXNMaXN0SWRcIlxuICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjUmVjb3ZlcnlDb2Rlc0xpc3QnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoY29kZSBvZiByZWNvdmVyeUF1dGhuQ29kZXNDb25maWdCZWFuLmdlbmVyYXRlZFJlY292ZXJ5QXV0aG5Db2Rlc0xpc3Q7IHRyYWNrIGNvZGU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpICsgMSB9fTo8L3NwYW4+IHt7IGNvZGUuc2xpY2UoMCwgNCkgfX0te3sgY29kZS5zbGljZSg0LCA4KSB9fS17eyBjb2RlLnNsaWNlKDgpIH19XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9vbD5cblxuICAgICAgICA8IS0tIGFjdGlvbnMgLS0+XG4gICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjUmVjb3ZlcnlDb2Rlc0FjdGlvbnMnXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJwcmludFJlY292ZXJ5Q29kZXNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGYtYy1idXR0b24gcGYtbS1saW5rXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBmaWNvbi1wcmludFwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cigncmVjb3ZlcnktY29kZXMtcHJpbnQnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJkb3dubG9hZFJlY292ZXJ5Q29kZXNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGYtYy1idXR0b24gcGYtbS1saW5rXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBmaWNvbi1zYXZlXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdyZWNvdmVyeS1jb2Rlcy1kb3dubG9hZCcpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImNvcHlSZWNvdmVyeUNvZGVzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBmLWMtYnV0dG9uIHBmLW0tbGlua1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwZmljb24tYmx1ZXByaW50XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdyZWNvdmVyeS1jb2Rlcy1jb3B5JykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIGNvbmZpcm1hdGlvbiBjaGVja2JveCAtLT5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtT3B0aW9uc0NsYXNzJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImtjUmVjb3ZlcnlDb2Rlc0NvbmZpcm1hdGlvbkNoZWNrXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0NoZWNrSW5wdXRDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImtjUmVjb3ZlcnlDb2Rlc0NvbmZpcm1hdGlvbkNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImtjUmVjb3ZlcnlDb2Rlc0NvbmZpcm1hdGlvbkNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwidG9nZ2xlUmVjb3ZlcnlDb2Rlc0NvbmZpcm1hdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSZWNvdmVyeUNvZGVzQ29uZmlybWF0aW9uLnNldCgkYW55KCRldmVudC50YXJnZXQpLmNoZWNrZWQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdyZWNvdmVyeS1jb2Rlcy1jb25maXJtYXRpb24tbWVzc2FnZScpIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgW2FjdGlvbl09XCJrY0NvbnRleHQudXJsLmxvZ2luQWN0aW9uXCJcbiAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiXG4gICAgICAgICAgICBpZD1cImtjLXJlY292ZXJ5LWNvZGVzLXNldHRpbmdzLWZvcm1cIlxuICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJnZW5lcmF0ZWRSZWNvdmVyeUF1dGhuQ29kZXNcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWNvdmVyeUF1dGhuQ29kZXNDb25maWdCZWFuLmdlbmVyYXRlZFJlY292ZXJ5QXV0aG5Db2Rlc0FzU3RyaW5nXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZ2VuZXJhdGVkQXRcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWNvdmVyeUF1dGhuQ29kZXNDb25maWdCZWFuLmdlbmVyYXRlZEF0XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBpZD1cInVzZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInVzZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImkxOG4ubXNnU3RyKCdyZWNvdmVyeS1jb2Rlcy1sYWJlbC1kZWZhdWx0JylcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGtjLWxvZ291dC1vdGhlci1zZXNzaW9ucz48L2tjLWxvZ291dC1vdGhlci1zZXNzaW9ucz5cblxuICAgICAgICAgICAgQGlmIChpc0FwcEluaXRpYXRlZEFjdGlvbikge1xuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJzYXZlUmVjb3ZlcnlBdXRobkNvZGVzQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImkxOG4ubXNnU3RyKCdyZWNvdmVyeS1jb2Rlcy1hY3Rpb24tY29tcGxldGUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdG9nZ2xlUmVjb3ZlcnlDb2Rlc0NvbmZpcm1hdGlvbigpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvbkRlZmF1bHRDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY2FuY2VsUmVjb3ZlcnlBdXRobkNvZGVzQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNhbmNlbC1haWFcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3JlY292ZXJ5LWNvZGVzLWFjdGlvbi1jYW5jZWwnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25QcmltYXJ5Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJzYXZlUmVjb3ZlcnlBdXRobkNvZGVzQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImkxOG4ubXNnU3RyKCdyZWNvdmVyeS1jb2Rlcy1hY3Rpb24tY29tcGxldGUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdG9nZ2xlUmVjb3ZlcnlDb2Rlc0NvbmZpcm1hdGlvbigpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|
package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
-
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
1
|
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
2
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
3
|
+
import { I18n } from '../../i18n';
|
|
4
|
+
import { KcContext } from '../../KcContext';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class LoginRecoveryAuthnCodeInputComponent extends ComponentReference {
|
|
6
7
|
kcContext: KcContext.LoginRecoveryAuthnCodeInput;
|
|
8
|
+
i18n: I18n;
|
|
7
9
|
doUseDefaultCss: boolean;
|
|
8
10
|
classes: Partial<Record<ClassKey, string>>;
|
|
9
11
|
displayRequiredFields: import("@angular/core").InputSignal<boolean>;
|
package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
|
|
2
|
+
import { USE_DEFAULT_CSS } from '../../../lib/tokens/use-default-css.token';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
5
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
6
|
+
import { KcSanitizePipe } from '../../../login/pipes/kc-sanitize.pipe';
|
|
7
|
+
import { LOGIN_CLASSES } from '../../../login/tokens/classes.token';
|
|
8
|
+
import { LOGIN_I18N } from '../../../login/tokens/i18n.token';
|
|
9
|
+
import { KC_LOGIN_CONTEXT } from '../../../login/tokens/kc-context.token';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class LoginRecoveryAuthnCodeInputComponent extends ComponentReference {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.kcContext = inject(KC_LOGIN_CONTEXT);
|
|
15
|
+
this.i18n = inject(LOGIN_I18N);
|
|
16
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
17
|
+
this.classes = inject(LOGIN_CLASSES);
|
|
18
|
+
this.displayRequiredFields = input(false);
|
|
19
|
+
this.documentTitle = input();
|
|
20
|
+
this.bodyClassName = input();
|
|
21
|
+
this.displayInfo = false;
|
|
22
|
+
this.displayMessage = this.kcContext.messagesPerField.existsError('recoveryCodeInput');
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginRecoveryAuthnCodeInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LoginRecoveryAuthnCodeInputComponent, isStandalone: true, selector: "kc-root", inputs: { displayRequiredFields: { classPropertyName: "displayRequiredFields", publicName: "displayRequiredFields", isSignal: true, isRequired: false, transformFunction: null }, documentTitle: { classPropertyName: "documentTitle", publicName: "documentTitle", isSignal: true, isRequired: false, transformFunction: null }, bodyClassName: { classPropertyName: "bodyClassName", publicName: "bodyClassName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
26
|
+
{
|
|
27
|
+
provide: ComponentReference,
|
|
28
|
+
useExisting: forwardRef(() => LoginRecoveryAuthnCodeInputComponent)
|
|
29
|
+
}
|
|
30
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let recoveryAuthnCodesInputBean = kcContext.recoveryAuthnCodesInputBean;\n@let messagesPerField = kcContext.messagesPerField;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('auth-recovery-code-header') }}\n </ng-container>\n\n <ng-container content>\n <form\n id=\"kc-recovery-code-login-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div [kcClass]=\"'kcLabelWrapperClass'\">\n <label\n for=\"recoveryCodeInput\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('auth-recovery-code-prompt', recoveryAuthnCodesInputBean.codeNumber.toString()) }}\n </label>\n </div>\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <input\n tabIndex=\"1\"\n id=\"recoveryCodeInput\"\n name=\"recoveryCodeInput\"\n [attr.aria-invalid]=\"messagesPerField.existsError('recoveryCodeInput')\"\n autoComplete=\"off\"\n type=\"text\"\n [kcClass]=\"'kcInputClass'\"\n autoFocus\n />\n @if (messagesPerField.existsError('recoveryCodeInput')) {\n <span\n id=\"input-error\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('recoveryCodeInput') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n </div>\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsWrapperClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"login\"\n id=\"kc-login\"\n type=\"submit\"\n [value]=\"i18n.msgStr('doLogIn')\"\n />\n </div>\n </div>\n </form>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: KcSanitizePipe, name: "kcSanitize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginRecoveryAuthnCodeInputComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective, KcSanitizePipe], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
35
|
+
{
|
|
36
|
+
provide: ComponentReference,
|
|
37
|
+
useExisting: forwardRef(() => LoginRecoveryAuthnCodeInputComponent)
|
|
38
|
+
}
|
|
39
|
+
], template: "@let url = kcContext.url;\n@let recoveryAuthnCodesInputBean = kcContext.recoveryAuthnCodesInputBean;\n@let messagesPerField = kcContext.messagesPerField;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('auth-recovery-code-header') }}\n </ng-container>\n\n <ng-container content>\n <form\n id=\"kc-recovery-code-login-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div [kcClass]=\"'kcLabelWrapperClass'\">\n <label\n for=\"recoveryCodeInput\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('auth-recovery-code-prompt', recoveryAuthnCodesInputBean.codeNumber.toString()) }}\n </label>\n </div>\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <input\n tabIndex=\"1\"\n id=\"recoveryCodeInput\"\n name=\"recoveryCodeInput\"\n [attr.aria-invalid]=\"messagesPerField.existsError('recoveryCodeInput')\"\n autoComplete=\"off\"\n type=\"text\"\n [kcClass]=\"'kcInputClass'\"\n autoFocus\n />\n @if (messagesPerField.existsError('recoveryCodeInput')) {\n <span\n id=\"input-error\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('recoveryCodeInput') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n </div>\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsWrapperClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"login\"\n id=\"kc-login\"\n type=\"submit\"\n [value]=\"i18n.msgStr('doLogIn')\"\n />\n </div>\n </div>\n </form>\n </ng-container>\n</kc-login-template>\n" }]
|
|
40
|
+
}] });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9sb2dpbi9wYWdlcy9sb2dpbi1yZWNvdmVyeS1hdXRobi1jb2RlLWlucHV0L2xvZ2luLXJlY292ZXJ5LWF1dGhuLWNvZGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1pbnB1dC9sb2dpbi1yZWNvdmVyeS1hdXRobi1jb2RlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztBQWtCdEYsTUFBTSxPQUFPLG9DQUFxQyxTQUFRLGtCQUFrQjtJQWI1RTs7UUFjSSxjQUFTLEdBQUcsTUFBTSxDQUF3RSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVHLFNBQUksR0FBRyxNQUFNLENBQU8sVUFBVSxDQUFDLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsYUFBYSxDQUFDLENBQUM7UUFDNUUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDOUY7OEdBVlksb0NBQW9DO2tHQUFwQyxvQ0FBb0MsMGdCQVBsQztZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0NBQW9DLENBQUM7YUFDdEU7U0FDSixpREN4QkwsMmdHQTRFQSw0Q0Q3RGMsaUJBQWlCLG9LQUFFLGdCQUFnQiwwRkFBRSxjQUFjOzsyRkFXcEQsb0NBQW9DO2tCQWJoRCxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxZQUNwRCxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUNBQXFDLENBQUM7eUJBQ3RFO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVVNFX0RFRkFVTFRfQ1NTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3Rva2Vucy91c2UtZGVmYXVsdC1jc3MudG9rZW4nO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmZXJlbmNlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY2xhc3Nlcy9jb21wb25lbnQtcmVmZXJlbmNlLmNsYXNzJztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29udGFpbmVycy90ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2NDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2RpcmVjdGl2ZXMva2MtY2xhc3MuZGlyZWN0aXZlJztcbmltcG9ydCB7IEtjU2FuaXRpemVQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMva2Mtc2FuaXRpemUucGlwZSc7XG5pbXBvcnQgeyBMT0dJTl9DTEFTU0VTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2NsYXNzZXMudG9rZW4nO1xuaW1wb3J0IHsgTE9HSU5fSTE4TiB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9pMThuLnRva2VuJztcbmltcG9ydCB7IEtDX0xPR0lOX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMva2MtY29udGV4dC50b2tlbic7XG5pbXBvcnQgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAnLi4vLi4vS2NDb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGVtcGxhdGVDb21wb25lbnQsIEtjQ2xhc3NEaXJlY3RpdmUsIEtjU2FuaXRpemVQaXBlXSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvZ2luUmVjb3ZlcnlBdXRobkNvZGVJbnB1dENvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5SZWNvdmVyeUF1dGhuQ29kZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnbG9naW4tcmVjb3ZlcnktYXV0aG4tY29kZS1pbnB1dC5mdGwnIH0+PihLQ19MT0dJTl9DT05URVhUKTtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KExPR0lOX0kxOE4pO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihMT0dJTl9DTEFTU0VTKTtcbiAgICBkaXNwbGF5UmVxdWlyZWRGaWVsZHMgPSBpbnB1dChmYWxzZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGRpc3BsYXlJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gICAgZGlzcGxheU1lc3NhZ2U6IGJvb2xlYW4gPSB0aGlzLmtjQ29udGV4dC5tZXNzYWdlc1BlckZpZWxkLmV4aXN0c0Vycm9yKCdyZWNvdmVyeUNvZGVJbnB1dCcpO1xufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCByZWNvdmVyeUF1dGhuQ29kZXNJbnB1dEJlYW4gPSBrY0NvbnRleHQucmVjb3ZlcnlBdXRobkNvZGVzSW5wdXRCZWFuO1xuQGxldCBtZXNzYWdlc1BlckZpZWxkID0ga2NDb250ZXh0Lm1lc3NhZ2VzUGVyRmllbGQ7XG5cbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICAgIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gICAgW2JvZHlDbGFzc05hbWVdPVwiYm9keUNsYXNzTmFtZSgpXCJcbiAgICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICAgIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICAgIFtkb2N1bWVudFRpdGxlXT1cImRvY3VtZW50VGl0bGUoKVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgICAgICB7eyBpMThuLm1zZ1N0cignYXV0aC1yZWNvdmVyeS1jb2RlLWhlYWRlcicpIH19XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNvbnRlbnQ+XG4gICAgICAgIDxmb3JtXG4gICAgICAgICAgICBpZD1cImtjLXJlY292ZXJ5LWNvZGUtbG9naW4tZm9ybVwiXG4gICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgICAgICAgIFthY3Rpb25dPVwidXJsLmxvZ2luQWN0aW9uXCJcbiAgICAgICAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjTGFiZWxXcmFwcGVyQ2xhc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicmVjb3ZlcnlDb2RlSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjTGFiZWxDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignYXV0aC1yZWNvdmVyeS1jb2RlLXByb21wdCcsIHJlY292ZXJ5QXV0aG5Db2Rlc0lucHV0QmVhbi5jb2RlTnVtYmVyLnRvU3RyaW5nKCkpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NJbnB1dFdyYXBwZXJDbGFzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyZWNvdmVyeUNvZGVJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicmVjb3ZlcnlDb2RlSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIm1lc3NhZ2VzUGVyRmllbGQuZXhpc3RzRXJyb3IoJ3JlY292ZXJ5Q29kZUlucHV0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0Q2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG1lc3NhZ2VzUGVyRmllbGQuZXhpc3RzRXJyb3IoJ3JlY292ZXJ5Q29kZUlucHV0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpbnB1dC1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjSW5wdXRFcnJvck1lc3NhZ2VDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZXNzYWdlc1BlckZpZWxkLmdldCgncmVjb3ZlcnlDb2RlSW5wdXQnKSB8IGtjU2FuaXRpemU6ICdodG1sJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGlkPVwia2MtZm9ybS1vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybU9wdGlvbnNXcmFwcGVyQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjRm9ybU9wdGlvbnNXcmFwcGVyQ2xhc3MnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBpZD1cImtjLWZvcm0tYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1CdXR0b25zQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibG9naW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJrYy1sb2dpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpMThuLm1zZ1N0cignZG9Mb2dJbicpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
-
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
1
|
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
2
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
3
|
+
import { I18n } from '../../i18n';
|
|
4
|
+
import { KcContext } from '../../KcContext';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class LoginResetOtpComponent extends ComponentReference {
|
|
6
7
|
kcContext: KcContext.LoginResetOtp;
|
|
8
|
+
i18n: I18n;
|
|
7
9
|
doUseDefaultCss: boolean;
|
|
8
10
|
classes: Partial<Record<ClassKey, string>>;
|
|
9
11
|
displayRequiredFields: import("@angular/core").InputSignal<boolean>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
|
|
2
|
+
import { USE_DEFAULT_CSS } from '../../../lib/tokens/use-default-css.token';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
5
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
6
|
+
import { LOGIN_CLASSES } from '../../../login/tokens/classes.token';
|
|
7
|
+
import { LOGIN_I18N } from '../../../login/tokens/i18n.token';
|
|
8
|
+
import { KC_LOGIN_CONTEXT } from '../../../login/tokens/kc-context.token';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class LoginResetOtpComponent extends ComponentReference {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.kcContext = inject(KC_LOGIN_CONTEXT);
|
|
14
|
+
this.i18n = inject(LOGIN_I18N);
|
|
15
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
16
|
+
this.classes = inject(LOGIN_CLASSES);
|
|
17
|
+
this.displayRequiredFields = input(false);
|
|
18
|
+
this.documentTitle = input();
|
|
19
|
+
this.bodyClassName = input();
|
|
20
|
+
this.displayInfo = false;
|
|
21
|
+
this.displayMessage = this.kcContext.messagesPerField.existsError('totp');
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginResetOtpComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LoginResetOtpComponent, isStandalone: true, selector: "kc-root", inputs: { displayRequiredFields: { classPropertyName: "displayRequiredFields", publicName: "displayRequiredFields", isSignal: true, isRequired: false, transformFunction: null }, documentTitle: { classPropertyName: "documentTitle", publicName: "documentTitle", isSignal: true, isRequired: false, transformFunction: null }, bodyClassName: { classPropertyName: "bodyClassName", publicName: "bodyClassName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
25
|
+
{
|
|
26
|
+
provide: ComponentReference,
|
|
27
|
+
useExisting: forwardRef(() => LoginResetOtpComponent)
|
|
28
|
+
}
|
|
29
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let configuredOtpCredentials = kcContext.configuredOtpCredentials;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('doLogIn') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-otp-reset-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <div [kcClass]=\"'kcInfoAreaWrapperClass'\">\n <p id=\"kc-otp-reset-form-description\">\n {{ i18n.msgStr('otp-reset-description') }}\n </p>\n @for (otpCredential of configuredOtpCredentials.userOtpCredentials; track otpCredential; let i = $index) {\n <input\n id=\"kc-otp-credential-{{ i }}\"\n [kcClass]=\"'kcLoginOTPListInputClass'\"\n type=\"radio\"\n name=\"selectedCredentialId\"\n [value]=\"otpCredential.id\"\n [defaultChecked]=\"otpCredential.id === configuredOtpCredentials.selectedCredentialId\"\n />\n <label\n for=\"kc-otp-credential-0\"\n [kcClass]=\"'kcLoginOTPListClass'\"\n [tabIndex]=\"i\"\n >\n <span [kcClass]=\"'kcLoginOTPListItemHeaderClass'\">\n <span [kcClass]=\"'kcLoginOTPListItemIconBodyClass'\">\n <i\n [kcClass]=\"'kcLoginOTPListItemIconClass'\"\n aria-hidden=\"true\"\n ></i>\n </span>\n <span [kcClass]=\"'kcLoginOTPListItemTitleClass'\">{{ otpCredential.userLabel }}</span>\n </span>\n </label>\n }\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n id=\"kc-otp-reset-form-submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n [value]=\"i18n.msgStr('doSubmit')\"\n />\n </div>\n </div>\n </div>\n </div>\n </form>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginResetOtpComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
34
|
+
{
|
|
35
|
+
provide: ComponentReference,
|
|
36
|
+
useExisting: forwardRef(() => LoginResetOtpComponent)
|
|
37
|
+
}
|
|
38
|
+
], template: "@let url = kcContext.url;\n@let configuredOtpCredentials = kcContext.configuredOtpCredentials;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('doLogIn') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-otp-reset-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <div [kcClass]=\"'kcInfoAreaWrapperClass'\">\n <p id=\"kc-otp-reset-form-description\">\n {{ i18n.msgStr('otp-reset-description') }}\n </p>\n @for (otpCredential of configuredOtpCredentials.userOtpCredentials; track otpCredential; let i = $index) {\n <input\n id=\"kc-otp-credential-{{ i }}\"\n [kcClass]=\"'kcLoginOTPListInputClass'\"\n type=\"radio\"\n name=\"selectedCredentialId\"\n [value]=\"otpCredential.id\"\n [defaultChecked]=\"otpCredential.id === configuredOtpCredentials.selectedCredentialId\"\n />\n <label\n for=\"kc-otp-credential-0\"\n [kcClass]=\"'kcLoginOTPListClass'\"\n [tabIndex]=\"i\"\n >\n <span [kcClass]=\"'kcLoginOTPListItemHeaderClass'\">\n <span [kcClass]=\"'kcLoginOTPListItemIconBodyClass'\">\n <i\n [kcClass]=\"'kcLoginOTPListItemIconClass'\"\n aria-hidden=\"true\"\n ></i>\n </span>\n <span [kcClass]=\"'kcLoginOTPListItemTitleClass'\">{{ otpCredential.userLabel }}</span>\n </span>\n </label>\n }\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n id=\"kc-otp-reset-form-submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n [value]=\"i18n.msgStr('doSubmit')\"\n />\n </div>\n </div>\n </div>\n </div>\n </form>\n </ng-container>\n</kc-login-template>\n" }]
|
|
39
|
+
}] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcmVzZXQtb3RwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3BhZ2VzL2xvZ2luLXJlc2V0LW90cC9sb2dpbi1yZXNldC1vdHAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tcmVzZXQtb3RwL2xvZ2luLXJlc2V0LW90cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztBQWtCdEYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGtCQUFrQjtJQWI5RDs7UUFjSSxjQUFTLEdBQUcsTUFBTSxDQUF3RCxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVGLFNBQUksR0FBRyxNQUFNLENBQU8sVUFBVSxDQUFDLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsYUFBYSxDQUFDLENBQUM7UUFDNUUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2pGOzhHQVZZLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBnQkFQcEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2FBQ3hEO1NBQ0osaURDdkJMLDZsR0FtRUEsNENEckRjLGdCQUFnQiwrRkFBRSxpQkFBaUI7OzJGQVdwQyxzQkFBc0I7a0JBYmxDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsWUFDcEMsU0FBUyxtQkFFRix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDO3lCQUN4RDtxQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGZvcndhcmRSZWYsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi90b2tlbnMvdXNlLWRlZmF1bHQtY3NzLnRva2VuJztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZS5jbGFzcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbnRhaW5lcnMvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEtjQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9kaXJlY3RpdmVzL2tjLWNsYXNzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMT0dJTl9DTEFTU0VTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2NsYXNzZXMudG9rZW4nO1xuaW1wb3J0IHsgTE9HSU5fSTE4TiB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9pMThuLnRva2VuJztcbmltcG9ydCB7IEtDX0xPR0lOX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMva2MtY29udGV4dC50b2tlbic7XG5pbXBvcnQgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAnLi4vLi4vS2NDb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbS2NDbGFzc0RpcmVjdGl2ZSwgVGVtcGxhdGVDb21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAna2Mtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICdsb2dpbi1yZXNldC1vdHAuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMb2dpblJlc2V0T3RwQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpblJlc2V0T3RwQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnbG9naW4tcmVzZXQtb3RwLmZ0bCcgfT4+KEtDX0xPR0lOX0NPTlRFWFQpO1xuICAgIGkxOG4gPSBpbmplY3Q8STE4bj4oTE9HSU5fSTE4Tik7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KExPR0lOX0NMQVNTRVMpO1xuICAgIGRpc3BsYXlSZXF1aXJlZEZpZWxkcyA9IGlucHV0KGZhbHNlKTtcbiAgICBkb2N1bWVudFRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGJvZHlDbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgZGlzcGxheUluZm86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkaXNwbGF5TWVzc2FnZTogYm9vbGVhbiA9IHRoaXMua2NDb250ZXh0Lm1lc3NhZ2VzUGVyRmllbGQuZXhpc3RzRXJyb3IoJ3RvdHAnKTtcbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgY29uZmlndXJlZE90cENyZWRlbnRpYWxzID0ga2NDb250ZXh0LmNvbmZpZ3VyZWRPdHBDcmVkZW50aWFscztcbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICAgIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gICAgW2JvZHlDbGFzc05hbWVdPVwiYm9keUNsYXNzTmFtZSgpXCJcbiAgICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICAgIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICAgIFtkb2N1bWVudFRpdGxlXT1cImRvY3VtZW50VGl0bGUoKVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgICAgICB7eyBpMThuLm1zZ1N0cignZG9Mb2dJbicpIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgaWQ9XCJrYy1vdHAtcmVzZXQtZm9ybVwiXG4gICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgICAgICAgIFthY3Rpb25dPVwidXJsLmxvZ2luQWN0aW9uXCJcbiAgICAgICAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0lucHV0V3JhcHBlckNsYXNzJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjSW5mb0FyZWFXcmFwcGVyQ2xhc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGlkPVwia2Mtb3RwLXJlc2V0LWZvcm0tZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdvdHAtcmVzZXQtZGVzY3JpcHRpb24nKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKG90cENyZWRlbnRpYWwgb2YgY29uZmlndXJlZE90cENyZWRlbnRpYWxzLnVzZXJPdHBDcmVkZW50aWFsczsgdHJhY2sgb3RwQ3JlZGVudGlhbDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwia2Mtb3RwLWNyZWRlbnRpYWwte3sgaSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjTG9naW5PVFBMaXN0SW5wdXRDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdGVkQ3JlZGVudGlhbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3RwQ3JlZGVudGlhbC5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDaGVja2VkXT1cIm90cENyZWRlbnRpYWwuaWQgPT09IGNvbmZpZ3VyZWRPdHBDcmVkZW50aWFscy5zZWxlY3RlZENyZWRlbnRpYWxJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwia2Mtb3RwLWNyZWRlbnRpYWwtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjTG9naW5PVFBMaXN0Q2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2tjQ2xhc3NdPVwiJ2tjTG9naW5PVFBMaXN0SXRlbUhlYWRlckNsYXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBba2NDbGFzc109XCIna2NMb2dpbk9UUExpc3RJdGVtSWNvbkJvZHlDbGFzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjTG9naW5PVFBMaXN0SXRlbUljb25DbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtrY0NsYXNzXT1cIidrY0xvZ2luT1RQTGlzdEl0ZW1UaXRsZUNsYXNzJ1wiPnt7IG90cENyZWRlbnRpYWwudXNlckxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImtjLWZvcm0tYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUJ1dHRvbnNDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImtjLW90cC1yZXNldC1mb3JtLXN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvblByaW1hcnlDbGFzcycsICdrY0J1dHRvbkJsb2NrQ2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImkxOG4ubXNnU3RyKCdkb1N1Ym1pdCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
|