@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,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 { UserProfileFormFieldsComponent } from '../../../login/components/user-profile-form-fields/user-profile-form-fields.component';
|
|
6
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
7
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
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 UpdateEmailComponent 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(true);
|
|
20
|
+
this.documentTitle = input();
|
|
21
|
+
this.bodyClassName = input();
|
|
22
|
+
this.displayInfo = false;
|
|
23
|
+
this.displayMessage = this.kcContext.messagesPerField.exists('global');
|
|
24
|
+
this.isFormSubmittable = signal(false);
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: UpdateEmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: UpdateEmailComponent, 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(() => UpdateEmailComponent)
|
|
31
|
+
}
|
|
32
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\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('updateEmailTitle') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-update-email-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <kc-user-profile-form-fields (onIsFormSubmittable)=\"isFormSubmittable.set($event)\"></kc-user-profile-form-fields>\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <kc-logout-other-sessions></kc-logout-other-sessions>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n [disabled]=\"!isFormSubmittable\"\n [kcClass]=\"{\n kcButtonClass: true,\n kcButtonPrimaryClass: true,\n kcButtonBlockClass: isAppInitiatedAction,\n kcButtonLargeClass: true\n }\"\n type=\"submit\"\n [value]=\"i18n.msgStr('doSubmit')\"\n />\n @if (isAppInitiatedAction) {\n <button\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\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: "component", type: UserProfileFormFieldsComponent, selector: "kc-user-profile-form-fields", outputs: ["onIsFormSubmittable"] }, { 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: UpdateEmailComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective, UserProfileFormFieldsComponent, LogoutOtherSessionsComponent], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
37
|
+
{
|
|
38
|
+
provide: ComponentReference,
|
|
39
|
+
useExisting: forwardRef(() => UpdateEmailComponent)
|
|
40
|
+
}
|
|
41
|
+
], template: "@let url = kcContext.url;\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('updateEmailTitle') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-update-email-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <kc-user-profile-form-fields (onIsFormSubmittable)=\"isFormSubmittable.set($event)\"></kc-user-profile-form-fields>\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <kc-logout-other-sessions></kc-logout-other-sessions>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n [disabled]=\"!isFormSubmittable\"\n [kcClass]=\"{\n kcButtonClass: true,\n kcButtonPrimaryClass: true,\n kcButtonBlockClass: isAppInitiatedAction,\n kcButtonLargeClass: true\n }\"\n type=\"submit\"\n [value]=\"i18n.msgStr('doSubmit')\"\n />\n @if (isAppInitiatedAction) {\n <button\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n }\n </div>\n </div>\n </form>\n </ng-container>\n</kc-login-template>\n" }]
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWVtYWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3BhZ2VzL3VwZGF0ZS1lbWFpbC91cGRhdGUtZW1haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvdXBkYXRlLWVtYWlsL3VwZGF0ZS1lbWFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDbEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkZBQTZGLENBQUM7QUFDM0ksT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUdBQW1HLENBQUM7QUFDbkosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7QUFrQnRGLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUFiNUQ7O1FBY0ksY0FBUyxHQUFHLE1BQU0sQ0FBcUQsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RixTQUFJLEdBQUcsTUFBTSxDQUFPLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQUcsTUFBTSxDQUFVLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQW9DLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLDBCQUFxQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsbUJBQWMsR0FBWSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRSxzQkFBaUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDckM7OEdBWFksb0JBQW9CO2tHQUFwQixvQkFBb0IsMGdCQVBsQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7YUFDdEQ7U0FDSixpREN6Qkwsb3pFQTBEQSw0Q0QxQ2MsaUJBQWlCLG9LQUFFLGdCQUFnQiwrRkFBRSw4QkFBOEIsMEdBQUUsNEJBQTRCOzsyRkFXbEcsb0JBQW9CO2tCQWJoQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLDhCQUE4QixFQUFFLDRCQUE0QixDQUFDLFlBQ2xHLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzt5QkFDdEQ7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi90b2tlbnMvdXNlLWRlZmF1bHQtY3NzLnRva2VuJztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZS5jbGFzcyc7XG5pbXBvcnQgeyBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29tcG9uZW50cy9sb2dvdXQtb3RoZXItc2Vzc2lvbnMvbG9nb3V0LW90aGVyLXNlc3Npb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyUHJvZmlsZUZvcm1GaWVsZHNDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb21wb25lbnRzL3VzZXItcHJvZmlsZS1mb3JtLWZpZWxkcy91c2VyLXByb2ZpbGUtZm9ybS1maWVsZHMuY29tcG9uZW50JztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29udGFpbmVycy90ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2NDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2RpcmVjdGl2ZXMva2MtY2xhc3MuZGlyZWN0aXZlJztcbmltcG9ydCB7IExPR0lOX0NMQVNTRVMgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvY2xhc3Nlcy50b2tlbic7XG5pbXBvcnQgeyBMT0dJTl9JMThOIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2kxOG4udG9rZW4nO1xuaW1wb3J0IHsgS0NfTE9HSU5fQ09OVEVYVCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9rYy1jb250ZXh0LnRva2VuJztcbmltcG9ydCB7IENsYXNzS2V5IH0gZnJvbSAna2V5Y2xvYWtpZnkvbG9naW4vbGliL2tjQ2xzeCc7XG5pbXBvcnQgeyBJMThuIH0gZnJvbSAnLi4vLi4vaTE4bic7XG5pbXBvcnQgeyBLY0NvbnRleHQgfSBmcm9tICcuLi8uLi9LY0NvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUZW1wbGF0ZUNvbXBvbmVudCwgS2NDbGFzc0RpcmVjdGl2ZSwgVXNlclByb2ZpbGVGb3JtRmllbGRzQ29tcG9uZW50LCBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAndXBkYXRlLWVtYWlsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ29tcG9uZW50UmVmZXJlbmNlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVXBkYXRlRW1haWxDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFVwZGF0ZUVtYWlsQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAndXBkYXRlLWVtYWlsLmZ0bCcgfT4+KEtDX0xPR0lOX0NPTlRFWFQpO1xuICAgIGkxOG4gPSBpbmplY3Q8STE4bj4oTE9HSU5fSTE4Tik7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KExPR0lOX0NMQVNTRVMpO1xuICAgIGRpc3BsYXlSZXF1aXJlZEZpZWxkcyA9IGlucHV0KHRydWUpO1xuICAgIGRvY3VtZW50VGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgYm9keUNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gdGhpcy5rY0NvbnRleHQubWVzc2FnZXNQZXJGaWVsZC5leGlzdHMoJ2dsb2JhbCcpO1xuICAgIGlzRm9ybVN1Ym1pdHRhYmxlID0gc2lnbmFsKGZhbHNlKTtcbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgaXNBcHBJbml0aWF0ZWRBY3Rpb24gPSBrY0NvbnRleHQuaXNBcHBJbml0aWF0ZWRBY3Rpb247XG48a2MtbG9naW4tdGVtcGxhdGVcbiAgICBbZGlzcGxheUluZm9dPVwiZGlzcGxheUluZm9cIlxuICAgIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gICAgW2Rpc3BsYXlNZXNzYWdlXT1cImRpc3BsYXlNZXNzYWdlXCJcbiAgICBbZGlzcGxheVJlcXVpcmVkRmllbGRzXT1cImRpc3BsYXlSZXF1aXJlZEZpZWxkcygpXCJcbiAgICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICAgIDxuZy1jb250YWluZXIgaGVhZGVyTm9kZT5cbiAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3VwZGF0ZUVtYWlsVGl0bGUnKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgIGlkPVwia2MtdXBkYXRlLWVtYWlsLWZvcm1cIlxuICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiXG4gICAgICAgICAgICBbYWN0aW9uXT1cInVybC5sb2dpbkFjdGlvblwiXG4gICAgICAgICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGtjLXVzZXItcHJvZmlsZS1mb3JtLWZpZWxkcyAob25Jc0Zvcm1TdWJtaXR0YWJsZSk9XCJpc0Zvcm1TdWJtaXR0YWJsZS5zZXQoJGV2ZW50KVwiPjwva2MtdXNlci1wcm9maWxlLWZvcm0tZmllbGRzPlxuICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGlkPVwia2MtZm9ybS1vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybU9wdGlvbnNDbGFzcydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtT3B0aW9uc1dyYXBwZXJDbGFzcydcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8a2MtbG9nb3V0LW90aGVyLXNlc3Npb25zPjwva2MtbG9nb3V0LW90aGVyLXNlc3Npb25zPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJrYy1mb3JtLWJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQnV0dG9uc0NsYXNzJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNGb3JtU3VibWl0dGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtjQnV0dG9uQ2xhc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2NCdXR0b25QcmltYXJ5Q2xhc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2NCdXR0b25CbG9ja0NsYXNzOiBpc0FwcEluaXRpYXRlZEFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrY0J1dHRvbkxhcmdlQ2xhc3M6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaTE4bi5tc2dTdHIoJ2RvU3VibWl0JylcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGlzQXBwSW5pdGlhdGVkQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2FuY2VsLWFpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignZG9DYW5jZWwnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,13 +1,13 @@
|
|
|
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';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { LoginResourceInjectorService } from '../../../login/services/login-resource-injector.service';
|
|
3
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
4
|
+
import { I18n } from '../../i18n';
|
|
5
|
+
import { KcContext } from '../../KcContext';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class WebauthnAuthenticateComponent extends ComponentReference {
|
|
8
8
|
kcContext: KcContext.WebauthnAuthenticate;
|
|
9
9
|
loginResourceInjectorService: LoginResourceInjectorService;
|
|
10
|
-
|
|
10
|
+
i18n: I18n;
|
|
11
11
|
doUseDefaultCss: boolean;
|
|
12
12
|
classes: Partial<Record<ClassKey, string>>;
|
|
13
13
|
displayRequiredFields: import("@angular/core").InputSignal<boolean>;
|
|
@@ -0,0 +1,80 @@
|
|
|
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 { 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 { LoginResourceInjectorService } from '../../../login/services/login-resource-injector.service';
|
|
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 { getKcClsx } from 'keycloakify/login/lib/kcClsx';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export class WebauthnAuthenticateComponent extends ComponentReference {
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this.kcContext = inject(KC_LOGIN_CONTEXT);
|
|
17
|
+
this.loginResourceInjectorService = inject(LoginResourceInjectorService);
|
|
18
|
+
this.i18n = inject(LOGIN_I18N);
|
|
19
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
20
|
+
this.classes = inject(LOGIN_CLASSES);
|
|
21
|
+
this.displayRequiredFields = input(false);
|
|
22
|
+
this.documentTitle = input();
|
|
23
|
+
this.bodyClassName = input();
|
|
24
|
+
this.displayInfo = false;
|
|
25
|
+
this.displayMessage = true;
|
|
26
|
+
this.authButtonId = 'authenticateWebAuthnButton';
|
|
27
|
+
const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = this.kcContext;
|
|
28
|
+
const scripts = [
|
|
29
|
+
{
|
|
30
|
+
type: 'module',
|
|
31
|
+
id: 'WebAuthnAuthenticateScript',
|
|
32
|
+
textContent: `
|
|
33
|
+
import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
|
|
34
|
+
const authButton = document.getElementById('${this.authButtonId}');
|
|
35
|
+
authButton.addEventListener("click", function() {
|
|
36
|
+
const input = {
|
|
37
|
+
isUserIdentified : ${isUserIdentified},
|
|
38
|
+
challenge : '${challenge}',
|
|
39
|
+
userVerification : '${userVerification}',
|
|
40
|
+
rpId : '${rpId}',
|
|
41
|
+
createTimeout : ${createTimeout},
|
|
42
|
+
errmsg : ${JSON.stringify(this.i18n.msgStr('webauthn-unsupported-browser-text'))}
|
|
43
|
+
};
|
|
44
|
+
authenticateByWebAuthn(input);
|
|
45
|
+
});
|
|
46
|
+
`
|
|
47
|
+
}
|
|
48
|
+
];
|
|
49
|
+
this.loginResourceInjectorService.insertAdditionalScripts(scripts);
|
|
50
|
+
}
|
|
51
|
+
selectAuthListItemIconClass(iconClass) {
|
|
52
|
+
const kcClsx = getKcClsx({
|
|
53
|
+
doUseDefaultCss: this.doUseDefaultCss ?? true,
|
|
54
|
+
classes: this.classes
|
|
55
|
+
}).kcClsx;
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
+
const className = kcClsx(iconClass);
|
|
58
|
+
if (className === iconClass) {
|
|
59
|
+
return kcClsx('kcWebAuthnDefaultIcon');
|
|
60
|
+
}
|
|
61
|
+
return className;
|
|
62
|
+
}
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnAuthenticateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WebauthnAuthenticateComponent, 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: [
|
|
65
|
+
{
|
|
66
|
+
provide: ComponentReference,
|
|
67
|
+
useExisting: forwardRef(() => WebauthnAuthenticateComponent)
|
|
68
|
+
}
|
|
69
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let authenticators = kcContext.authenticators;\n@let shouldDisplayAuthenticators = kcContext.shouldDisplayAuthenticators;\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('webauthn-login-title') }}\n </ng-container>\n <ng-container infoNode>\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 </ng-container>\n <ng-container content>\n <div\n id=\"kc-form-webauthn\"\n [kcClass]=\"'kcFormClass'\"\n >\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\n <div\n class=\"no-bottom-margin\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n @if (authenticators) {\n <form\n id=\"authn_select\"\n [kcClass]=\"'kcFormClass'\"\n >\n @for (authenticator of authenticators.authenticators; track authenticator.credentialId) {\n <input\n type=\"hidden\"\n name=\"authn_use_chk\"\n [value]=\"authenticator.credentialId\"\n />\n }\n @if (shouldDisplayAuthenticators) {\n @if (authenticators.authenticators.length > 1) {\n <p [kcClass]=\"'kcSelectAuthListItemTitle'\">\n {{ i18n.msgStr('webauthn-available-authenticators') }}\n </p>\n }\n <div [kcClass]=\"'kcFormOptionsClass'\">\n @for (authenticator of authenticators.authenticators; track authenticator.credentialId; let i = $index) {\n <div\n [id]=\"'kc-webauthn-authenticator-item-' + i\"\n [kcClass]=\"'kcSelectAuthListItemClass'\"\n >\n <div [kcClass]=\"'kcSelectAuthListItemIconClass'\">\n <i\n [ngClass]=\"selectAuthListItemIconClass(authenticator.transports.iconClass)\"\n [kcClass]=\"'kcSelectAuthListItemIconPropertyClass'\"\n ></i>\n <div [kcClass]=\"'kcSelectAuthListItemArrowIconClass'\">\n <div\n [id]=\"'kc-webauthn-authenticator-label-' + i\"\n [kcClass]=\"'kcSelectAuthListItemHeadingClass'\"\n >\n {{ i18n.advancedMsgStr(authenticator.label) }}\n </div>\n @if (authenticator.transports.displayNameProperties?.length) {\n <div\n [id]=\"'kc-webauthn-authenticator-transport-' + i\"\n [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\"\n >\n @for (\n displayNameProperty of authenticator.transports.displayNameProperties;\n track displayNameProperty;\n let last = $last\n ) {\n {{ i18n.advancedMsgStr(displayNameProperty) }}\n @if (!last) {\n <span>, </span>\n }\n }\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\">\n <span [id]=\"'kc-webauthn-authenticator-createdlabel-' + i\">\n {{ i18n.msgStr('webauthn-createdAt-label') }}\n </span>\n <span [id]=\"'kc-webauthn-authenticator-created-' + i\">{{ authenticator.createdAt }}</span>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemFillClass'\"></div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </form>\n }\n\n <div\n [kcClass]=\"'kcFormButtonsClass'\"\n id=\"kc-form-buttons\"\n >\n <input\n [id]=\"authButtonId\"\n type=\"button\"\n autofocus\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n [value]=\"i18n.msgStr('webauthn-doAuthenticate')\"\n />\n </div>\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 }); }
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnAuthenticateComponent, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective, LogoutOtherSessionsComponent], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
74
|
+
{
|
|
75
|
+
provide: ComponentReference,
|
|
76
|
+
useExisting: forwardRef(() => WebauthnAuthenticateComponent)
|
|
77
|
+
}
|
|
78
|
+
], template: "@let url = kcContext.url;\n@let authenticators = kcContext.authenticators;\n@let shouldDisplayAuthenticators = kcContext.shouldDisplayAuthenticators;\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('webauthn-login-title') }}\n </ng-container>\n <ng-container infoNode>\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 </ng-container>\n <ng-container content>\n <div\n id=\"kc-form-webauthn\"\n [kcClass]=\"'kcFormClass'\"\n >\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\n <div\n class=\"no-bottom-margin\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n @if (authenticators) {\n <form\n id=\"authn_select\"\n [kcClass]=\"'kcFormClass'\"\n >\n @for (authenticator of authenticators.authenticators; track authenticator.credentialId) {\n <input\n type=\"hidden\"\n name=\"authn_use_chk\"\n [value]=\"authenticator.credentialId\"\n />\n }\n @if (shouldDisplayAuthenticators) {\n @if (authenticators.authenticators.length > 1) {\n <p [kcClass]=\"'kcSelectAuthListItemTitle'\">\n {{ i18n.msgStr('webauthn-available-authenticators') }}\n </p>\n }\n <div [kcClass]=\"'kcFormOptionsClass'\">\n @for (authenticator of authenticators.authenticators; track authenticator.credentialId; let i = $index) {\n <div\n [id]=\"'kc-webauthn-authenticator-item-' + i\"\n [kcClass]=\"'kcSelectAuthListItemClass'\"\n >\n <div [kcClass]=\"'kcSelectAuthListItemIconClass'\">\n <i\n [ngClass]=\"selectAuthListItemIconClass(authenticator.transports.iconClass)\"\n [kcClass]=\"'kcSelectAuthListItemIconPropertyClass'\"\n ></i>\n <div [kcClass]=\"'kcSelectAuthListItemArrowIconClass'\">\n <div\n [id]=\"'kc-webauthn-authenticator-label-' + i\"\n [kcClass]=\"'kcSelectAuthListItemHeadingClass'\"\n >\n {{ i18n.advancedMsgStr(authenticator.label) }}\n </div>\n @if (authenticator.transports.displayNameProperties?.length) {\n <div\n [id]=\"'kc-webauthn-authenticator-transport-' + i\"\n [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\"\n >\n @for (\n displayNameProperty of authenticator.transports.displayNameProperties;\n track displayNameProperty;\n let last = $last\n ) {\n {{ i18n.advancedMsgStr(displayNameProperty) }}\n @if (!last) {\n <span>, </span>\n }\n }\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\">\n <span [id]=\"'kc-webauthn-authenticator-createdlabel-' + i\">\n {{ i18n.msgStr('webauthn-createdAt-label') }}\n </span>\n <span [id]=\"'kc-webauthn-authenticator-created-' + i\">{{ authenticator.createdAt }}</span>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemFillClass'\"></div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </form>\n }\n\n <div\n [kcClass]=\"'kcFormButtonsClass'\"\n id=\"kc-form-buttons\"\n >\n <input\n [id]=\"authButtonId\"\n type=\"button\"\n autofocus\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n [value]=\"i18n.msgStr('webauthn-doAuthenticate')\"\n />\n </div>\n </div>\n </div>\n </ng-container>\n</kc-login-template>\n" }]
|
|
79
|
+
}], ctorParameters: () => [] });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tYXV0aGVudGljYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3BhZ2VzL3dlYmF1dGhuLWF1dGhlbnRpY2F0ZS93ZWJhdXRobi1hdXRoZW50aWNhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tYXV0aGVudGljYXRlL3dlYmF1dGhuLWF1dGhlbnRpY2F0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2RkFBNkYsQ0FBQztBQUMzSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM1RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3RGLE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFpQm5FLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxrQkFBa0I7SUFjakU7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWRaLGNBQVMsR0FBRyxNQUFNLENBQThELGdCQUFnQixDQUFDLENBQUM7UUFDbEcsaUNBQTRCLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDcEUsU0FBSSxHQUFHLE1BQU0sQ0FBTyxVQUFVLENBQUMsQ0FBQztRQUN2QixvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxhQUFhLENBQUMsQ0FBQztRQUM1RSwwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRS9CLGlCQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFJeEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbkcsTUFBTSxPQUFPLEdBQWE7WUFDdEI7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsRUFBRSxFQUFFLDRCQUE0QjtnQkFDaEMsV0FBVyxFQUFFO3dEQUMyQixHQUFHLENBQUMsYUFBYTs0REFDYixJQUFJLENBQUMsWUFBWTs7OzJDQUdsQyxnQkFBZ0I7cUNBQ3RCLFNBQVM7NENBQ0YsZ0JBQWdCO2dDQUM1QixJQUFJO3dDQUNJLGFBQWE7aUNBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQzs7OztXQUkzRjthQUNFO1NBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsMkJBQTJCLENBQUMsU0FBaUI7UUFDekMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUk7WUFDN0MsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3hCLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDViw4REFBOEQ7UUFDOUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQWdCLENBQUMsQ0FBQztRQUMzQyxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixPQUFPLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOzhHQXBEUSw2QkFBNkI7a0dBQTdCLDZCQUE2QiwwZ0JBUDNCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQzthQUMvRDtTQUNKLGlEQzFCTCxtblBBZ0tBLDRDRC9JYyxpQkFBaUIsb0tBQUUsZ0JBQWdCOzsyRkFXcEMsNkJBQTZCO2tCQWJ6QyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLDRCQUE0QixDQUFDLFlBQ2xFLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw4QkFBOEIsQ0FBQzt5QkFDL0Q7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY3JpcHQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvbW9kZWxzL3NjcmlwdC5tb2RlbCc7XG5pbXBvcnQgeyBVU0VfREVGQVVMVF9DU1MgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvdG9rZW5zL3VzZS1kZWZhdWx0LWNzcy50b2tlbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvbG9nb3V0LW90aGVyLXNlc3Npb25zL2xvZ291dC1vdGhlci1zZXNzaW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3NlcnZpY2VzL2xvZ2luLXJlc291cmNlLWluamVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTE9HSU5fQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9jbGFzc2VzLnRva2VuJztcbmltcG9ydCB7IExPR0lOX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvaTE4bi50b2tlbic7XG5pbXBvcnQgeyBLQ19MT0dJTl9DT05URVhUIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2tjLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgQ2xhc3NLZXksIGdldEtjQ2xzeCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAnLi4vLi4vS2NDb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGVtcGxhdGVDb21wb25lbnQsIEtjQ2xhc3NEaXJlY3RpdmUsIExvZ291dE90aGVyU2Vzc2lvbnNDb21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAna2Mtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICd3ZWJhdXRobi1hdXRoZW50aWNhdGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXZWJhdXRobkF1dGhlbnRpY2F0ZUNvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgV2ViYXV0aG5BdXRoZW50aWNhdGVDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGtjQ29udGV4dCA9IGluamVjdDxFeHRyYWN0PEtjQ29udGV4dCwgeyBwYWdlSWQ6ICd3ZWJhdXRobi1hdXRoZW50aWNhdGUuZnRsJyB9Pj4oS0NfTE9HSU5fQ09OVEVYVCk7XG4gICAgbG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSA9IGluamVjdChMb2dpblJlc291cmNlSW5qZWN0b3JTZXJ2aWNlKTtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KExPR0lOX0kxOE4pO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihMT0dJTl9DTEFTU0VTKTtcbiAgICBkaXNwbGF5UmVxdWlyZWRGaWVsZHMgPSBpbnB1dChmYWxzZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGRpc3BsYXlJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gICAgZGlzcGxheU1lc3NhZ2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgYXV0aEJ1dHRvbklkID0gJ2F1dGhlbnRpY2F0ZVdlYkF1dGhuQnV0dG9uJztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBjb25zdCB7IHVybCwgaXNVc2VySWRlbnRpZmllZCwgY2hhbGxlbmdlLCB1c2VyVmVyaWZpY2F0aW9uLCBycElkLCBjcmVhdGVUaW1lb3V0IH0gPSB0aGlzLmtjQ29udGV4dDtcbiAgICAgICAgY29uc3Qgc2NyaXB0czogU2NyaXB0W10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21vZHVsZScsXG4gICAgICAgICAgICAgICAgaWQ6ICdXZWJBdXRobkF1dGhlbnRpY2F0ZVNjcmlwdCcsXG4gICAgICAgICAgICAgICAgdGV4dENvbnRlbnQ6IGBcbiAgICAgICAgICAgICAgaW1wb3J0IHsgYXV0aGVudGljYXRlQnlXZWJBdXRobiB9IGZyb20gXCIke3VybC5yZXNvdXJjZXNQYXRofS9qcy93ZWJhdXRobkF1dGhlbnRpY2F0ZS5qc1wiO1xuICAgICAgICAgICAgICBjb25zdCBhdXRoQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyR7dGhpcy5hdXRoQnV0dG9uSWR9Jyk7XG4gICAgICAgICAgICAgIGF1dGhCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgaXNVc2VySWRlbnRpZmllZCA6ICR7aXNVc2VySWRlbnRpZmllZH0sXG4gICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlIDogJyR7Y2hhbGxlbmdlfScsXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvbiA6ICcke3VzZXJWZXJpZmljYXRpb259JyxcbiAgICAgICAgICAgICAgICAgICAgICBycElkIDogJyR7cnBJZH0nLFxuICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRpbWVvdXQgOiAke2NyZWF0ZVRpbWVvdXR9LFxuICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pMThuLm1zZ1N0cignd2ViYXV0aG4tdW5zdXBwb3J0ZWQtYnJvd3Nlci10ZXh0JykpfVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZUJ5V2ViQXV0aG4oaW5wdXQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICBgXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMubG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZS5pbnNlcnRBZGRpdGlvbmFsU2NyaXB0cyhzY3JpcHRzKTtcbiAgICB9XG5cbiAgICBzZWxlY3RBdXRoTGlzdEl0ZW1JY29uQ2xhc3MoaWNvbkNsYXNzOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qga2NDbHN4ID0gZ2V0S2NDbHN4KHtcbiAgICAgICAgICAgIGRvVXNlRGVmYXVsdENzczogdGhpcy5kb1VzZURlZmF1bHRDc3MgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGNsYXNzZXM6IHRoaXMuY2xhc3Nlc1xuICAgICAgICB9KS5rY0Nsc3g7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGtjQ2xzeChpY29uQ2xhc3MgYXMgYW55KTtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSA9PT0gaWNvbkNsYXNzKSB7XG4gICAgICAgICAgICByZXR1cm4ga2NDbHN4KCdrY1dlYkF1dGhuRGVmYXVsdEljb24nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3NOYW1lO1xuICAgIH1cbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgYXV0aGVudGljYXRvcnMgPSBrY0NvbnRleHQuYXV0aGVudGljYXRvcnM7XG5AbGV0IHNob3VsZERpc3BsYXlBdXRoZW50aWNhdG9ycyA9IGtjQ29udGV4dC5zaG91bGREaXNwbGF5QXV0aGVudGljYXRvcnM7XG5cbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICAgIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gICAgW2JvZHlDbGFzc05hbWVdPVwiYm9keUNsYXNzTmFtZSgpXCJcbiAgICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICAgIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICAgIFtkb2N1bWVudFRpdGxlXT1cImRvY3VtZW50VGl0bGUoKVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgICAgICB7eyBpMThuLm1zZ1N0cignd2ViYXV0aG4tbG9naW4tdGl0bGUnKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgaW5mb05vZGU+XG4gICAgICAgIDxkaXYgaWQ9XCJrYy1yZWdpc3RyYXRpb25cIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdub0FjY291bnQnKSB9fVxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PVwiNlwiXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInVybC5yZWdpc3RyYXRpb25VcmxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ2RvUmVnaXN0ZXInKSB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBpZD1cImtjLWZvcm0td2ViYXV0aG5cIlxuICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgaWQ9XCJ3ZWJhdXRoXCJcbiAgICAgICAgICAgICAgICBbYWN0aW9uXT1cInVybC5sb2dpbkFjdGlvblwiXG4gICAgICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImNsaWVudERhdGFKU09OXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNsaWVudERhdGFKU09OXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJhdXRoZW50aWNhdG9yRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJhdXRoZW50aWNhdG9yRGF0YVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwic2lnbmF0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNpZ25hdHVyZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY3JlZGVudGlhbElkXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNyZWRlbnRpYWxJZFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwidXNlckhhbmRsZVwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1c2VySGFuZGxlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZm9ybT5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibm8tYm90dG9tLW1hcmdpblwiXG4gICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUdyb3VwQ2xhc3MnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGF1dGhlbnRpY2F0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImF1dGhuX3NlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoYXV0aGVudGljYXRvciBvZiBhdXRoZW50aWNhdG9ycy5hdXRoZW50aWNhdG9yczsgdHJhY2sgYXV0aGVudGljYXRvci5jcmVkZW50aWFsSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJhdXRobl91c2VfY2hrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImF1dGhlbnRpY2F0b3IuY3JlZGVudGlhbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5QXV0aGVudGljYXRvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGF1dGhlbnRpY2F0b3JzLmF1dGhlbnRpY2F0b3JzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtVGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignd2ViYXV0aG4tYXZhaWxhYmxlLWF1dGhlbnRpY2F0b3JzJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1PcHRpb25zQ2xhc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGF1dGhlbnRpY2F0b3Igb2YgYXV0aGVudGljYXRvcnMuYXV0aGVudGljYXRvcnM7IHRyYWNrIGF1dGhlbnRpY2F0b3IuY3JlZGVudGlhbElkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIna2Mtd2ViYXV0aG4tYXV0aGVudGljYXRvci1pdGVtLScgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NTZWxlY3RBdXRoTGlzdEl0ZW1DbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtSWNvbkNsYXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0QXV0aExpc3RJdGVtSWNvbkNsYXNzKGF1dGhlbnRpY2F0b3IudHJhbnNwb3J0cy5pY29uQ2xhc3MpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY1NlbGVjdEF1dGhMaXN0SXRlbUljb25Qcm9wZXJ0eUNsYXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtQXJyb3dJY29uQ2xhc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidrYy13ZWJhdXRobi1hdXRoZW50aWNhdG9yLWxhYmVsLScgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NTZWxlY3RBdXRoTGlzdEl0ZW1IZWFkaW5nQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLmFkdmFuY2VkTXNnU3RyKGF1dGhlbnRpY2F0b3IubGFiZWwpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYXV0aGVudGljYXRvci50cmFuc3BvcnRzLmRpc3BsYXlOYW1lUHJvcGVydGllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2tjLXdlYmF1dGhuLWF1dGhlbnRpY2F0b3ItdHJhbnNwb3J0LScgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtRGVzY3JpcHRpb25DbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZVByb3BlcnR5IG9mIGF1dGhlbnRpY2F0b3IudHJhbnNwb3J0cy5kaXNwbGF5TmFtZVByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBkaXNwbGF5TmFtZVByb3BlcnR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxhc3QgPSAkbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4uYWR2YW5jZWRNc2dTdHIoZGlzcGxheU5hbWVQcm9wZXJ0eSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4sIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjU2VsZWN0QXV0aExpc3RJdGVtRGVzY3JpcHRpb25DbGFzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lkXT1cIidrYy13ZWJhdXRobi1hdXRoZW50aWNhdG9yLWNyZWF0ZWRsYWJlbC0nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3dlYmF1dGhuLWNyZWF0ZWRBdC1sYWJlbCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lkXT1cIidrYy13ZWJhdXRobi1hdXRoZW50aWNhdG9yLWNyZWF0ZWQtJyArIGlcIj57eyBhdXRoZW50aWNhdG9yLmNyZWF0ZWRBdCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY1NlbGVjdEF1dGhMaXN0SXRlbUZpbGxDbGFzcydcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQnV0dG9uc0NsYXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwia2MtZm9ybS1idXR0b25zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImF1dGhCdXR0b25JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNhbmNlbFdlYkF1dGhuQUlBXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjYW5jZWwtYWlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpMThuLm1zZ1N0cignd2ViYXV0aG4tZG9BdXRoZW50aWNhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+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 { I18n } from '../../i18n';
|
|
3
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
4
|
+
import { KcContext } from '../../KcContext';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class WebauthnErrorComponent extends ComponentReference {
|
|
6
7
|
kcContext: KcContext.WebauthnError;
|
|
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,49 @@
|
|
|
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 { 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_I18N } from '../../../login/tokens/i18n.token';
|
|
8
|
+
import { LOGIN_CLASSES } from '../../../login/tokens/classes.token';
|
|
9
|
+
import { KC_LOGIN_CONTEXT } from '../../../login/tokens/kc-context.token';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class WebauthnErrorComponent 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 = true;
|
|
23
|
+
}
|
|
24
|
+
onClick() {
|
|
25
|
+
// @ts-expect-error: Trusted Keycloak's code
|
|
26
|
+
document.getElementById('isSetRetry').value = 'retry';
|
|
27
|
+
// @ts-expect-error: Trusted Keycloak's code
|
|
28
|
+
document.getElementById('executionValue').value = '${execution}';
|
|
29
|
+
// @ts-expect-error: Trusted Keycloak's code
|
|
30
|
+
document.getElementById('kc-error-credential-form').submit();
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WebauthnErrorComponent, 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: [
|
|
34
|
+
{
|
|
35
|
+
provide: ComponentReference,
|
|
36
|
+
useExisting: forwardRef(() => WebauthnErrorComponent)
|
|
37
|
+
}
|
|
38
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\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('webauthn-error-title') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-error-credential-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"executionValue\"\n name=\"authenticationExecution\"\n />\n <input\n type=\"hidden\"\n id=\"isSetRetry\"\n name=\"isSetRetry\"\n />\n </form>\n <input\n tabIndex=\"4\"\n (click)=\"onClick()\"\n type=\"button\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"try-again\"\n id=\"kc-try-again\"\n [value]=\"i18n.msgStr('doTryAgain')\"\n />\n @if (isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </form>\n }\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 }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnErrorComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective, LogoutOtherSessionsComponent], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
43
|
+
{
|
|
44
|
+
provide: ComponentReference,
|
|
45
|
+
useExisting: forwardRef(() => WebauthnErrorComponent)
|
|
46
|
+
}
|
|
47
|
+
], template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\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('webauthn-error-title') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-error-credential-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"executionValue\"\n name=\"authenticationExecution\"\n />\n <input\n type=\"hidden\"\n id=\"isSetRetry\"\n name=\"isSetRetry\"\n />\n </form>\n <input\n tabIndex=\"4\"\n (click)=\"onClick()\"\n type=\"button\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"try-again\"\n id=\"kc-try-again\"\n [value]=\"i18n.msgStr('doTryAgain')\"\n />\n @if (isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n" }]
|
|
48
|
+
}] });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tZXJyb3Ivd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tZXJyb3Ivd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDbEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkZBQTZGLENBQUM7QUFDM0ksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7QUFpQnRGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxrQkFBa0I7SUFiOUQ7O1FBY0ksY0FBUyxHQUFHLE1BQU0sQ0FBdUQsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRixTQUFJLEdBQUcsTUFBTSxDQUFPLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQUcsTUFBTSxDQUFVLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQW9DLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLDBCQUFxQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsbUJBQWMsR0FBWSxJQUFJLENBQUM7S0FVbEM7SUFSRyxPQUFPO1FBQ0gsNENBQTRDO1FBQzVDLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztRQUN0RCw0Q0FBNEM7UUFDNUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7UUFDakUsNENBQTRDO1FBQzVDLFFBQVEsQ0FBQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqRSxDQUFDOzhHQWxCUSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwwZ0JBUHBCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzthQUN4RDtTQUNKLGlEQ3hCTCxpL0RBNERBLDRDRDdDYyxpQkFBaUIsb0tBQUUsZ0JBQWdCOzsyRkFXcEMsc0JBQXNCO2tCQWJsQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLDRCQUE0QixDQUFDLFlBQ2xFLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt5QkFDeEQ7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVU0VfREVGQVVMVF9DU1MgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvdG9rZW5zL3VzZS1kZWZhdWx0LWNzcy50b2tlbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvbG9nb3V0LW90aGVyLXNlc3Npb25zL2xvZ291dC1vdGhlci1zZXNzaW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTE9HSU5fSTE4TiB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9pMThuLnRva2VuJztcbmltcG9ydCB7IEkxOG4gfSBmcm9tICcuLi8uLi9pMThuJztcbmltcG9ydCB7IExPR0lOX0NMQVNTRVMgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvY2xhc3Nlcy50b2tlbic7XG5pbXBvcnQgeyBLQ19MT0dJTl9DT05URVhUIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2tjLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJy4uLy4uL0tjQ29udGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RlbXBsYXRlQ29tcG9uZW50LCBLY0NsYXNzRGlyZWN0aXZlLCBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXZWJhdXRobkVycm9yQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBXZWJhdXRobkVycm9yQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnd2ViYXV0aG4tZXJyb3IuZnRsJyB9Pj4oS0NfTE9HSU5fQ09OVEVYVCk7XG4gICAgaTE4biA9IGluamVjdDxJMThuPihMT0dJTl9JMThOKTtcbiAgICBvdmVycmlkZSBkb1VzZURlZmF1bHRDc3MgPSBpbmplY3Q8Ym9vbGVhbj4oVVNFX0RFRkFVTFRfQ1NTKTtcbiAgICBvdmVycmlkZSBjbGFzc2VzID0gaW5qZWN0PFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+Pj4oTE9HSU5fQ0xBU1NFUyk7XG4gICAgZGlzcGxheVJlcXVpcmVkRmllbGRzID0gaW5wdXQoZmFsc2UpO1xuICAgIGRvY3VtZW50VGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgYm9keUNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IFRydXN0ZWQgS2V5Y2xvYWsncyBjb2RlXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc1NldFJldHJ5JykudmFsdWUgPSAncmV0cnknO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUcnVzdGVkIEtleWNsb2FrJ3MgY29kZVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlY3V0aW9uVmFsdWUnKS52YWx1ZSA9ICcke2V4ZWN1dGlvbn0nO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUcnVzdGVkIEtleWNsb2FrJ3MgY29kZVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna2MtZXJyb3ItY3JlZGVudGlhbC1mb3JtJykuc3VibWl0KCk7XG4gICAgfVxufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCBpc0FwcEluaXRpYXRlZEFjdGlvbiA9IGtjQ29udGV4dC5pc0FwcEluaXRpYXRlZEFjdGlvbjtcblxuPGtjLWxvZ2luLXRlbXBsYXRlXG4gICAgW2Rpc3BsYXlJbmZvXT1cImRpc3BsYXlJbmZvXCJcbiAgICBbYm9keUNsYXNzTmFtZV09XCJib2R5Q2xhc3NOYW1lKClcIlxuICAgIFtkaXNwbGF5TWVzc2FnZV09XCJkaXNwbGF5TWVzc2FnZVwiXG4gICAgW2Rpc3BsYXlSZXF1aXJlZEZpZWxkc109XCJkaXNwbGF5UmVxdWlyZWRGaWVsZHMoKVwiXG4gICAgW2RvY3VtZW50VGl0bGVdPVwiZG9jdW1lbnRUaXRsZSgpXCJcbj5cbiAgICA8bmctY29udGFpbmVyIGhlYWRlck5vZGU+XG4gICAgICAgIHt7IGkxOG4ubXNnU3RyKCd3ZWJhdXRobi1lcnJvci10aXRsZScpIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgaWQ9XCJrYy1lcnJvci1jcmVkZW50aWFsLWZvcm1cIlxuICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiXG4gICAgICAgICAgICBbYWN0aW9uXT1cInVybC5sb2dpbkFjdGlvblwiXG4gICAgICAgICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJleGVjdXRpb25WYWx1ZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImF1dGhlbnRpY2F0aW9uRXhlY3V0aW9uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBpZD1cImlzU2V0UmV0cnlcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJpc1NldFJldHJ5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0YWJJbmRleD1cIjRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvblByaW1hcnlDbGFzcycsICdrY0J1dHRvbkJsb2NrQ2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgICAgICAgbmFtZT1cInRyeS1hZ2FpblwiXG4gICAgICAgICAgICBpZD1cImtjLXRyeS1hZ2FpblwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaTE4bi5tc2dTdHIoJ2RvVHJ5QWdhaW4nKVwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoaXNBcHBJbml0aWF0ZWRBY3Rpb24pIHtcbiAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1DbGFzcydcIlxuICAgICAgICAgICAgICAgIGlkPVwia2Mtd2ViYXV0aG4tc2V0dGluZ3MtZm9ybVwiXG4gICAgICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY2FuY2VsV2ViQXV0aG5BSUFcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2FuY2VsLWFpYVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignZG9DYW5jZWwnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,13 +1,13 @@
|
|
|
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';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { LoginResourceInjectorService } from '../../../login/services/login-resource-injector.service';
|
|
3
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
4
|
+
import { KcContext } from '../../KcContext';
|
|
5
|
+
import { I18n } from '../../i18n';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class WebauthnRegisterComponent extends ComponentReference {
|
|
8
8
|
kcContext: KcContext.WebauthnRegister;
|
|
9
9
|
loginResourceInjectorService: LoginResourceInjectorService;
|
|
10
|
-
|
|
10
|
+
i18n: I18n;
|
|
11
11
|
doUseDefaultCss: boolean;
|
|
12
12
|
classes: Partial<Record<ClassKey, string>>;
|
|
13
13
|
displayRequiredFields: import("@angular/core").InputSignal<boolean>;
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { 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 { LoginResourceInjectorService } from '../../../login/services/login-resource-injector.service';
|
|
8
|
+
import { LOGIN_CLASSES } from '../../../login/tokens/classes.token';
|
|
9
|
+
import { KC_LOGIN_CONTEXT } from '../../../login/tokens/kc-context.token';
|
|
10
|
+
import { LOGIN_I18N } from '../../../login/tokens/i18n.token';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class WebauthnRegisterComponent 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.displayRequiredFields = input(false);
|
|
21
|
+
this.documentTitle = input();
|
|
22
|
+
this.bodyClassName = input();
|
|
23
|
+
this.displayInfo = false;
|
|
24
|
+
this.displayMessage = true;
|
|
25
|
+
this.authButtonId = 'authenticateWebAuthnButton';
|
|
26
|
+
const { url, challenge, userid, username, signatureAlgorithms, rpEntityName, rpId, attestationConveyancePreference, authenticatorAttachment, requireResidentKey, userVerificationRequirement, createTimeout, excludeCredentialIds } = this.kcContext;
|
|
27
|
+
const scripts = [
|
|
28
|
+
{
|
|
29
|
+
type: 'module',
|
|
30
|
+
id: 'WebAuthnRegisterScript',
|
|
31
|
+
textContent: `
|
|
32
|
+
import { registerByWebAuthn } from "${url.resourcesPath}/js/webauthnRegister.js";
|
|
33
|
+
const registerButton = document.getElementById('${this.authButtonId}');
|
|
34
|
+
registerButton.addEventListener("click", function() {
|
|
35
|
+
const input = {
|
|
36
|
+
challenge : '${challenge}',
|
|
37
|
+
userid : '${userid}',
|
|
38
|
+
username : '${username}',
|
|
39
|
+
signatureAlgorithms : ${JSON.stringify(signatureAlgorithms)},
|
|
40
|
+
rpEntityName : ${JSON.stringify(rpEntityName)},
|
|
41
|
+
rpId : ${JSON.stringify(rpId)},
|
|
42
|
+
attestationConveyancePreference : ${JSON.stringify(attestationConveyancePreference)},
|
|
43
|
+
authenticatorAttachment : ${JSON.stringify(authenticatorAttachment)},
|
|
44
|
+
requireResidentKey : ${JSON.stringify(requireResidentKey)},
|
|
45
|
+
userVerificationRequirement : ${JSON.stringify(userVerificationRequirement)},
|
|
46
|
+
createTimeout : ${createTimeout},
|
|
47
|
+
excludeCredentialIds : ${JSON.stringify(excludeCredentialIds)},
|
|
48
|
+
initLabel : ${JSON.stringify(this.i18n.msgStr('webauthn-registration-init-label'))},
|
|
49
|
+
initLabelPrompt : ${JSON.stringify(this.i18n.msgStr('webauthn-registration-init-label-prompt'))},
|
|
50
|
+
errmsg : ${JSON.stringify(this.i18n.msgStr('webauthn-unsupported-browser-text'))}
|
|
51
|
+
};
|
|
52
|
+
registerByWebAuthn(input);
|
|
53
|
+
});
|
|
54
|
+
`
|
|
55
|
+
}
|
|
56
|
+
];
|
|
57
|
+
this.loginResourceInjectorService.insertAdditionalScripts(scripts);
|
|
58
|
+
}
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnRegisterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WebauthnRegisterComponent, 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: [
|
|
61
|
+
{
|
|
62
|
+
provide: ComponentReference,
|
|
63
|
+
useExisting: forwardRef(() => WebauthnRegisterComponent)
|
|
64
|
+
}
|
|
65
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isSetRetry = kcContext.isSetRetry;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\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 <span [kcClass]=\"'kcWebAuthnKeyIcon'\"></span>\n {{ i18n.msgStr('webauthn-registration-title') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"register\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"attestationObject\"\n name=\"attestationObject\"\n />\n <input\n type=\"hidden\"\n id=\"publicKeyCredentialId\"\n name=\"publicKeyCredentialId\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorLabel\"\n name=\"authenticatorLabel\"\n />\n <input\n type=\"hidden\"\n id=\"transports\"\n name=\"transports\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n <kc-logout-other-sessions />\n </div>\n </form>\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [id]=\"authButtonId\"\n [value]=\"i18n.msgStr('doRegisterSecurityKey')\"\n />\n @if (!isSetRetry && isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </form>\n }\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 }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnRegisterComponent, decorators: [{
|
|
68
|
+
type: Component,
|
|
69
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective, LogoutOtherSessionsComponent], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
70
|
+
{
|
|
71
|
+
provide: ComponentReference,
|
|
72
|
+
useExisting: forwardRef(() => WebauthnRegisterComponent)
|
|
73
|
+
}
|
|
74
|
+
], template: "@let url = kcContext.url;\n@let isSetRetry = kcContext.isSetRetry;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\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 <span [kcClass]=\"'kcWebAuthnKeyIcon'\"></span>\n {{ i18n.msgStr('webauthn-registration-title') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"register\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"attestationObject\"\n name=\"attestationObject\"\n />\n <input\n type=\"hidden\"\n id=\"publicKeyCredentialId\"\n name=\"publicKeyCredentialId\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorLabel\"\n name=\"authenticatorLabel\"\n />\n <input\n type=\"hidden\"\n id=\"transports\"\n name=\"transports\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n <kc-logout-other-sessions />\n </div>\n </form>\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [id]=\"authButtonId\"\n [value]=\"i18n.msgStr('doRegisterSecurityKey')\"\n />\n @if (!isSetRetry && isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n" }]
|
|
75
|
+
}], ctorParameters: () => [] });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tcmVnaXN0ZXIvd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tcmVnaXN0ZXIvd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDbEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkZBQTZGLENBQUM7QUFDM0ksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDNUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFnQjFFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxrQkFBa0I7SUFjN0Q7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWRaLGNBQVMsR0FBRyxNQUFNLENBQTBELGdCQUFnQixDQUFDLENBQUM7UUFDOUYsaUNBQTRCLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDcEUsU0FBSSxHQUFHLE1BQU0sQ0FBTyxVQUFVLENBQUMsQ0FBQztRQUN2QixvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxhQUFhLENBQUMsQ0FBQztRQUM1RSwwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRS9CLGlCQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFJeEMsTUFBTSxFQUNGLEdBQUcsRUFDSCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLElBQUksRUFDSiwrQkFBK0IsRUFDL0IsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQiwyQkFBMkIsRUFDM0IsYUFBYSxFQUNiLG9CQUFvQixFQUN2QixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbkIsTUFBTSxPQUFPLEdBQWE7WUFDdEI7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsRUFBRSxFQUFFLHdCQUF3QjtnQkFDNUIsV0FBVyxFQUFFO29EQUN1QixHQUFHLENBQUMsYUFBYTtnRUFDTCxJQUFJLENBQUMsWUFBWTs7O3FDQUc1QyxTQUFTO2tDQUNaLE1BQU07b0NBQ0osUUFBUTs4Q0FDRSxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO3VDQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQzsrQkFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7MERBQ08sSUFBSSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQztrREFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQzs2Q0FDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztzREFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQzt3Q0FDekQsYUFBYTsrQ0FDTixJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDO29DQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7MENBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQztpQ0FDcEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDOzs7O1dBSTNGO2FBQ0U7U0FDSixDQUFDO1FBQ0YsSUFBSSxDQUFDLDRCQUE0QixDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7OEdBOURRLHlCQUF5QjtrR0FBekIseUJBQXlCLDBnQkFQdkI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2FBQzNEO1NBQ0osaURDMUJMLDAwRkFrRkEsNENEakVjLGlCQUFpQixvS0FBRSxnQkFBZ0IsK0ZBQUUsNEJBQTRCOzsyRkFXbEUseUJBQXlCO2tCQWJyQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLDRCQUE0QixDQUFDLFlBQ2xFLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzt5QkFDM0Q7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY3JpcHQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvbW9kZWxzL3NjcmlwdC5tb2RlbCc7XG5pbXBvcnQgeyBVU0VfREVGQVVMVF9DU1MgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvdG9rZW5zL3VzZS1kZWZhdWx0LWNzcy50b2tlbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvbG9nb3V0LW90aGVyLXNlc3Npb25zL2xvZ291dC1vdGhlci1zZXNzaW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3NlcnZpY2VzL2xvZ2luLXJlc291cmNlLWluamVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTE9HSU5fQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9jbGFzc2VzLnRva2VuJztcbmltcG9ydCB7IEtDX0xPR0lOX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMva2MtY29udGV4dC50b2tlbic7XG5pbXBvcnQgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAnLi4vLi4vS2NDb250ZXh0JztcbmltcG9ydCB7IExPR0lOX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvaTE4bi50b2tlbic7XG5pbXBvcnQgeyBJMThuIH0gZnJvbSAnLi4vLi4vaTE4bic7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RlbXBsYXRlQ29tcG9uZW50LCBLY0NsYXNzRGlyZWN0aXZlLCBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXZWJhdXRoblJlZ2lzdGVyQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBXZWJhdXRoblJlZ2lzdGVyQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnd2ViYXV0aG4tcmVnaXN0ZXIuZnRsJyB9Pj4oS0NfTE9HSU5fQ09OVEVYVCk7XG4gICAgbG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSA9IGluamVjdChMb2dpblJlc291cmNlSW5qZWN0b3JTZXJ2aWNlKTtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KExPR0lOX0kxOE4pO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihMT0dJTl9DTEFTU0VTKTtcbiAgICBkaXNwbGF5UmVxdWlyZWRGaWVsZHMgPSBpbnB1dChmYWxzZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGRpc3BsYXlJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gICAgZGlzcGxheU1lc3NhZ2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgYXV0aEJ1dHRvbklkID0gJ2F1dGhlbnRpY2F0ZVdlYkF1dGhuQnV0dG9uJztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBjaGFsbGVuZ2UsXG4gICAgICAgICAgICB1c2VyaWQsXG4gICAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFsZ29yaXRobXMsXG4gICAgICAgICAgICBycEVudGl0eU5hbWUsXG4gICAgICAgICAgICBycElkLFxuICAgICAgICAgICAgYXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSxcbiAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JBdHRhY2htZW50LFxuICAgICAgICAgICAgcmVxdWlyZVJlc2lkZW50S2V5LFxuICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50LFxuICAgICAgICAgICAgY3JlYXRlVGltZW91dCxcbiAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsSWRzXG4gICAgICAgIH0gPSB0aGlzLmtjQ29udGV4dDtcbiAgICAgICAgY29uc3Qgc2NyaXB0czogU2NyaXB0W10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21vZHVsZScsXG4gICAgICAgICAgICAgICAgaWQ6ICdXZWJBdXRoblJlZ2lzdGVyU2NyaXB0JyxcbiAgICAgICAgICAgICAgICB0ZXh0Q29udGVudDogYFxuICAgICAgICAgICAgICBpbXBvcnQgeyByZWdpc3RlckJ5V2ViQXV0aG4gfSBmcm9tIFwiJHt1cmwucmVzb3VyY2VzUGF0aH0vanMvd2ViYXV0aG5SZWdpc3Rlci5qc1wiO1xuICAgICAgICAgICAgICBjb25zdCByZWdpc3RlckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCcke3RoaXMuYXV0aEJ1dHRvbklkfScpO1xuICAgICAgICAgICAgICByZWdpc3RlckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2UgOiAnJHtjaGFsbGVuZ2V9JyxcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyaWQgOiAnJHt1c2VyaWR9JyxcbiAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSA6ICcke3VzZXJuYW1lfScsXG4gICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtcyA6ICR7SlNPTi5zdHJpbmdpZnkoc2lnbmF0dXJlQWxnb3JpdGhtcyl9LFxuICAgICAgICAgICAgICAgICAgICAgIHJwRW50aXR5TmFtZSA6ICR7SlNPTi5zdHJpbmdpZnkocnBFbnRpdHlOYW1lKX0sXG4gICAgICAgICAgICAgICAgICAgICAgcnBJZCA6ICR7SlNPTi5zdHJpbmdpZnkocnBJZCl9LFxuICAgICAgICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UgOiAke0pTT04uc3RyaW5naWZ5KGF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UpfSxcbiAgICAgICAgICAgICAgICAgICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudCA6ICR7SlNPTi5zdHJpbmdpZnkoYXV0aGVudGljYXRvckF0dGFjaG1lbnQpfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlUmVzaWRlbnRLZXkgOiAke0pTT04uc3RyaW5naWZ5KHJlcXVpcmVSZXNpZGVudEtleSl9LFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudCA6ICR7SlNPTi5zdHJpbmdpZnkodXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50KX0sXG4gICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGltZW91dCA6ICR7Y3JlYXRlVGltZW91dH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxJZHMgOiAke0pTT04uc3RyaW5naWZ5KGV4Y2x1ZGVDcmVkZW50aWFsSWRzKX0sXG4gICAgICAgICAgICAgICAgICAgICAgaW5pdExhYmVsIDogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmkxOG4ubXNnU3RyKCd3ZWJhdXRobi1yZWdpc3RyYXRpb24taW5pdC1sYWJlbCcpKX0sXG4gICAgICAgICAgICAgICAgICAgICAgaW5pdExhYmVsUHJvbXB0IDogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmkxOG4ubXNnU3RyKCd3ZWJhdXRobi1yZWdpc3RyYXRpb24taW5pdC1sYWJlbC1wcm9tcHQnKSl9LFxuICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pMThuLm1zZ1N0cignd2ViYXV0aG4tdW5zdXBwb3J0ZWQtYnJvd3Nlci10ZXh0JykpfVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyQnlXZWJBdXRobihpbnB1dCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5sb2dpblJlc291cmNlSW5qZWN0b3JTZXJ2aWNlLmluc2VydEFkZGl0aW9uYWxTY3JpcHRzKHNjcmlwdHMpO1xuICAgIH1cbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgaXNTZXRSZXRyeSA9IGtjQ29udGV4dC5pc1NldFJldHJ5O1xuQGxldCBpc0FwcEluaXRpYXRlZEFjdGlvbiA9IGtjQ29udGV4dC5pc0FwcEluaXRpYXRlZEFjdGlvbjtcblxuPGtjLWxvZ2luLXRlbXBsYXRlXG4gICAgW2Rpc3BsYXlJbmZvXT1cImRpc3BsYXlJbmZvXCJcbiAgICBbYm9keUNsYXNzTmFtZV09XCJib2R5Q2xhc3NOYW1lKClcIlxuICAgIFtkaXNwbGF5TWVzc2FnZV09XCJkaXNwbGF5TWVzc2FnZVwiXG4gICAgW2Rpc3BsYXlSZXF1aXJlZEZpZWxkc109XCJkaXNwbGF5UmVxdWlyZWRGaWVsZHMoKVwiXG4gICAgW2RvY3VtZW50VGl0bGVdPVwiZG9jdW1lbnRUaXRsZSgpXCJcbj5cbiAgICA8bmctY29udGFpbmVyIGhlYWRlck5vZGU+XG4gICAgICAgIDxzcGFuIFtrY0NsYXNzXT1cIidrY1dlYkF1dGhuS2V5SWNvbidcIj48L3NwYW4+XG4gICAgICAgIHt7IGkxOG4ubXNnU3RyKCd3ZWJhdXRobi1yZWdpc3RyYXRpb24tdGl0bGUnKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgIGlkPVwicmVnaXN0ZXJcIlxuICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiXG4gICAgICAgICAgICBbYWN0aW9uXT1cInVybC5sb2dpbkFjdGlvblwiXG4gICAgICAgICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY2xpZW50RGF0YUpTT05cIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2xpZW50RGF0YUpTT05cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImF0dGVzdGF0aW9uT2JqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImF0dGVzdGF0aW9uT2JqZWN0XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJwdWJsaWNLZXlDcmVkZW50aWFsSWRcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicHVibGljS2V5Q3JlZGVudGlhbElkXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJhdXRoZW50aWNhdG9yTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYXV0aGVudGljYXRvckxhYmVsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ0cmFuc3BvcnRzXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRyYW5zcG9ydHNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImVycm9yXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxrYy1sb2dvdXQtb3RoZXItc2Vzc2lvbnMgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25QcmltYXJ5Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgIFtpZF09XCJhdXRoQnV0dG9uSWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImkxOG4ubXNnU3RyKCdkb1JlZ2lzdGVyU2VjdXJpdHlLZXknKVwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoIWlzU2V0UmV0cnkgJiYgaXNBcHBJbml0aWF0ZWRBY3Rpb24pIHtcbiAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1DbGFzcydcIlxuICAgICAgICAgICAgICAgIGlkPVwia2Mtd2ViYXV0aG4tc2V0dGluZ3MtZm9ybVwiXG4gICAgICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY2FuY2VsV2ViQXV0aG5BSUFcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2FuY2VsLWFpYVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignZG9DYW5jZWwnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class KcSanitizePipe implements PipeTransform {
|
|
5
|
-
private
|
|
6
|
-
|
|
7
|
-
transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl;
|
|
5
|
+
#private;
|
|
6
|
+
transform(value: string, type: 'html' | 'style' | 'script' | 'url' | 'resourceUrl'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl;
|
|
8
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<KcSanitizePipe, never>;
|
|
9
8
|
static ɵpipe: i0.ɵɵPipeDeclaration<KcSanitizePipe, "kcSanitize", true>;
|
|
10
9
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { inject, Pipe } from '@angular/core';
|
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class KcSanitizePipe {
|
|
5
|
+
#sanitizer = inject(DomSanitizer);
|
|
6
|
+
transform(value, type) {
|
|
7
|
+
switch (type) {
|
|
8
|
+
case 'html':
|
|
9
|
+
return this.#sanitizer.bypassSecurityTrustHtml(value);
|
|
10
|
+
case 'style':
|
|
11
|
+
return this.#sanitizer.bypassSecurityTrustStyle(value);
|
|
12
|
+
case 'script':
|
|
13
|
+
return this.#sanitizer.bypassSecurityTrustScript(value);
|
|
14
|
+
case 'url':
|
|
15
|
+
return this.#sanitizer.bypassSecurityTrustUrl(value);
|
|
16
|
+
case 'resourceUrl':
|
|
17
|
+
return this.#sanitizer.bypassSecurityTrustResourceUrl(value);
|
|
18
|
+
default:
|
|
19
|
+
throw new Error(`Invalid safe type specified: ${type}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
23
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, isStandalone: true, name: "kcSanitize" }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, decorators: [{
|
|
26
|
+
type: Pipe,
|
|
27
|
+
args: [{ name: 'kcSanitize', standalone: true }]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Mtc2FuaXRpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3BpcGVzL2tjLXNhbml0aXplLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFDSCxZQUFZLEVBTWYsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHbkMsTUFBTSxPQUFPLGNBQWM7SUFDdkIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVsQyxTQUFTLENBQ0wsS0FBYSxFQUNiLElBQXlEO1FBRXpELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLE1BQU07Z0JBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELEtBQUssT0FBTztnQkFDUixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0QsS0FBSyxRQUFRO2dCQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxLQUFLLEtBQUs7Z0JBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELEtBQUssYUFBYTtnQkFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakU7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0wsQ0FBQzs4R0FyQlEsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIERvbVNhbml0aXplcixcbiAgICBTYWZlSHRtbCxcbiAgICBTYWZlUmVzb3VyY2VVcmwsXG4gICAgU2FmZVNjcmlwdCxcbiAgICBTYWZlU3R5bGUsXG4gICAgU2FmZVVybFxufSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQFBpcGUoeyBuYW1lOiAna2NTYW5pdGl6ZScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBLY1Nhbml0aXplUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgICNzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcblxuICAgIHRyYW5zZm9ybShcbiAgICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgdHlwZTogJ2h0bWwnIHwgJ3N0eWxlJyB8ICdzY3JpcHQnIHwgJ3VybCcgfCAncmVzb3VyY2VVcmwnXG4gICAgKTogU2FmZUh0bWwgfCBTYWZlU3R5bGUgfCBTYWZlU2NyaXB0IHwgU2FmZVVybCB8IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdzdHlsZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAnc2NyaXB0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQodmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAncmVzb3VyY2VVcmwnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHZhbHVlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNhZmUgdHlwZSBzcGVjaWZpZWQ6ICR7dHlwZX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2,7 +2,6 @@ import { Pipe } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class ToArrayPipe {
|
|
4
4
|
transform(value, emptyWhenString = false) {
|
|
5
|
-
// if (!value) throw new Error('must pass a value');
|
|
6
5
|
if (value instanceof Array) {
|
|
7
6
|
return value;
|
|
8
7
|
}
|
|
@@ -18,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
18
17
|
standalone: true
|
|
19
18
|
}]
|
|
20
19
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tYXJyYXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3BpcGVzL3RvLWFycmF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFNBQVMsQ0FBQyxLQUF3QixFQUFFLGVBQWUsR0FBRyxLQUFLO1FBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBTlEsV0FBVzs0R0FBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUp2QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICd0b0FycmF5JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRvQXJyYXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgZW1wdHlXaGVuU3RyaW5nID0gZmFsc2UpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVtcHR5V2hlblN0cmluZyA/IFtdIDogW3ZhbHVlXTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { KcContextLike } from 'keycloakify/login/i18n/noJsx';
|
|
2
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
3
|
+
export type KeycloakifyAngularLoginConfig = {
|
|
4
|
+
doMakeUserConfirmPassword?: boolean;
|
|
5
|
+
doUseDefaultCss?: boolean;
|
|
6
|
+
classes?: {
|
|
7
|
+
[key in ClassKey]?: string;
|
|
8
|
+
};
|
|
9
|
+
getI18n: (params: {
|
|
10
|
+
kcContext: KcContextLike;
|
|
11
|
+
}) => {
|
|
12
|
+
i18n: unknown;
|
|
13
|
+
prI18n_currentLanguage: Promise<unknown> | undefined;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export declare const provideKeycloakifyAngularLogin: (config: KeycloakifyAngularLoginConfig) => import("@angular/core").EnvironmentProviders;
|