@keycloakify/angular 0.0.1-rc.0 → 0.0.1-rc.2
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/i18n.d.ts +2 -2
- package/lib/i18n.mjs +6 -0
- package/lib/models/index.d.ts +1 -1
- package/lib/models/index.mjs +2 -0
- package/lib/models/script.model.mjs +2 -0
- package/lib/providers/keycloakify-angular.providers.d.ts +5 -5
- package/lib/providers/keycloakify-angular.providers.mjs +54 -0
- package/lib/public-api.d.ts +5 -5
- package/lib/public-api.mjs +4 -0
- package/lib/services/i18n.service.d.ts +3 -0
- package/lib/services/i18n.service.mjs +11 -0
- package/lib/services/index.d.ts +2 -2
- package/lib/services/index.mjs +3 -0
- package/lib/services/resource-injector.service.d.ts +5 -2
- package/lib/services/resource-injector.service.mjs +54 -0
- package/login/DefaultPage.d.ts +4 -4
- package/login/DefaultPage.mjs +121 -0
- package/login/KcContext.d.ts +1 -1
- package/login/KcContext.mjs +2 -0
- package/login/classes/component-reference.class.d.ts +1 -1
- package/login/classes/component-reference.class.mjs +3 -0
- package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.d.ts +5 -2
- package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +105 -0
- package/login/components/field-errors/field-errors.component.d.ts +7 -4
- package/login/components/field-errors/field-errors.component.mjs +32 -0
- package/login/components/group-label/group-label.component.d.ts +6 -3
- package/login/components/group-label/group-label.component.mjs +41 -0
- package/login/components/hello-world/hello-world.component.d.ts +5 -0
- package/login/components/hello-world/hello-world.component.mjs +11 -0
- package/login/components/index.d.ts +11 -11
- package/login/components/index.mjs +12 -0
- package/login/components/input-field-by-type/input-field-by-type.component.d.ts +7 -4
- package/login/components/input-field-by-type/input-field-by-type.component.mjs +52 -0
- package/login/components/input-tag/input-tag.component.d.ts +7 -4
- package/login/components/input-tag/input-tag.component.mjs +89 -0
- package/login/components/input-tag-selects/input-tag-selects.component.d.ts +9 -6
- package/login/components/input-tag-selects/input-tag-selects.component.mjs +115 -0
- package/login/components/logout-other-sessions/logout-other-sessions.component.d.ts +5 -2
- package/login/components/logout-other-sessions/logout-other-sessions.component.mjs +30 -0
- package/login/components/password-wrapper/password-wrapper.component.d.ts +6 -3
- package/login/components/password-wrapper/password-wrapper.component.mjs +44 -0
- package/login/components/select-tag/select-tag.component.d.ts +7 -4
- package/login/components/select-tag/select-tag.component.mjs +80 -0
- package/login/components/textarea-tag/textarea-tag.component.d.ts +7 -4
- package/login/components/textarea-tag/textarea-tag.component.mjs +48 -0
- package/login/components/user-profile-form-fields/user-profile-form-fields.component.d.ts +8 -5
- package/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +62 -0
- package/login/containers/template.component.d.ts +11 -8
- package/login/containers/template.component.mjs +71 -0
- package/login/directives/attributes.directive.d.ts +3 -0
- package/login/directives/attributes.directive.mjs +26 -0
- package/login/directives/index.d.ts +2 -2
- package/login/directives/index.mjs +3 -0
- package/login/directives/kc-class.directive.d.ts +5 -2
- package/login/directives/kc-class.directive.mjs +138 -0
- package/login/i18n.d.ts +2 -2
- package/login/i18n.mjs +2 -0
- package/login/pages/code/code.component.d.ts +6 -3
- package/login/pages/code/code.component.mjs +32 -0
- package/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +6 -3
- package/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +32 -0
- package/login/pages/delete-credential/delete-credential.component.d.ts +6 -3
- package/login/pages/delete-credential/delete-credential.component.mjs +37 -0
- package/login/pages/error/error.component.d.ts +6 -3
- package/login/pages/error/error.component.mjs +32 -0
- package/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +7 -4
- package/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +41 -0
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +6 -3
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +47 -0
- package/login/pages/info/info.component.d.ts +9 -6
- package/login/pages/info/info.component.mjs +58 -0
- package/login/pages/login/login.component.d.ts +6 -3
- package/login/pages/login/login.component.mjs +51 -0
- package/login/pages/login-config-totp/login-config-totp.component.d.ts +6 -3
- package/login/pages/login-config-totp/login-config-totp.component.mjs +47 -0
- package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +6 -3
- package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +37 -0
- package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +6 -3
- package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +37 -0
- package/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +6 -3
- package/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +37 -0
- package/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +6 -3
- package/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +38 -0
- package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +6 -3
- package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +37 -0
- package/login/pages/login-otp/login-otp.component.d.ts +6 -3
- package/login/pages/login-otp/login-otp.component.mjs +38 -0
- package/login/pages/login-page-expired/login-page-expired.component.d.ts +6 -3
- package/login/pages/login-page-expired/login-page-expired.component.mjs +36 -0
- package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +8 -5
- package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +85 -0
- package/login/pages/login-password/login-password.component.d.ts +6 -3
- package/login/pages/login-password/login-password.component.mjs +46 -0
- package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +6 -3
- package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +45 -0
- package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +6 -3
- package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +38 -0
- package/login/pages/login-reset-otp/login-reset-otp.component.d.ts +6 -3
- package/login/pages/login-reset-otp/login-reset-otp.component.mjs +37 -0
- package/login/pages/login-reset-password/login-reset-password.component.d.ts +6 -3
- package/login/pages/login-reset-password/login-reset-password.component.mjs +38 -0
- package/login/pages/login-update-password/login-update-password.component.d.ts +6 -3
- package/login/pages/login-update-password/login-update-password.component.mjs +47 -0
- package/login/pages/login-update-profile/login-update-profile.component.d.ts +6 -3
- package/login/pages/login-update-profile/login-update-profile.component.mjs +44 -0
- package/login/pages/login-username/login-username.component.d.ts +6 -3
- package/login/pages/login-username/login-username.component.mjs +49 -0
- package/login/pages/login-verify-email/login-verify-email.component.d.ts +6 -3
- package/login/pages/login-verify-email/login-verify-email.component.mjs +37 -0
- package/login/pages/login-x509-info/login-x509-info.component.d.ts +6 -3
- package/login/pages/login-x509-info/login-x509-info.component.mjs +37 -0
- package/login/pages/logout-confirm/logout-confirm.component.d.ts +6 -3
- package/login/pages/logout-confirm/logout-confirm.component.mjs +37 -0
- package/login/pages/register/register.component.d.ts +6 -3
- package/login/pages/register/register.component.mjs +55 -0
- package/login/pages/saml-post-form/saml-post-form.component.d.ts +7 -4
- package/login/pages/saml-post-form/saml-post-form.component.mjs +49 -0
- package/login/pages/select-authenticator/select-authenticator.component.d.ts +6 -3
- package/login/pages/select-authenticator/select-authenticator.component.mjs +45 -0
- package/login/pages/terms/terms.component.d.ts +6 -3
- package/login/pages/terms/terms.component.mjs +37 -0
- package/login/pages/update-email/update-email.component.d.ts +6 -3
- package/login/pages/update-email/update-email.component.mjs +46 -0
- package/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +8 -5
- package/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +87 -0
- package/login/pages/webauthn-error/webauthn-error.component.d.ts +6 -3
- package/login/pages/webauthn-error/webauthn-error.component.mjs +51 -0
- package/login/pages/webauthn-register/webauthn-register.component.d.ts +8 -5
- package/login/pages/webauthn-register/webauthn-register.component.mjs +81 -0
- package/login/pipes/advanced-msg-str.pipe.d.ts +4 -1
- package/login/pipes/advanced-msg-str.pipe.mjs +19 -0
- package/login/pipes/index.d.ts +6 -6
- package/login/pipes/index.mjs +7 -0
- package/login/pipes/input-type.pipe.d.ts +4 -1
- package/login/pipes/input-type.pipe.mjs +20 -0
- package/login/pipes/kc-sanitize.pipe.d.ts +5 -2
- package/login/pipes/kc-sanitize.pipe.mjs +34 -0
- package/login/pipes/msg-str.pipe.d.ts +5 -2
- package/login/pipes/msg-str.pipe.mjs +19 -0
- package/login/pipes/to-array.pipe.d.ts +4 -1
- package/login/pipes/to-array.pipe.mjs +21 -0
- package/login/pipes/to-number.pipe.d.ts +4 -1
- package/login/pipes/to-number.pipe.mjs +20 -0
- package/login/services/index.d.ts +2 -2
- package/login/services/index.mjs +3 -0
- package/login/services/login-resource-injector.service.d.ts +4 -1
- package/login/services/login-resource-injector.service.mjs +68 -0
- package/login/services/user-profile-form.service.d.ts +15 -12
- package/login/services/user-profile-form.service.mjs +1017 -0
- package/package.json +90 -200
- package/src/lib/i18n.ts +2 -2
- package/src/lib/models/index.ts +1 -1
- package/src/lib/providers/keycloakify-angular.providers.ts +18 -18
- package/src/lib/public-api.ts +5 -5
- package/src/lib/services/i18n.service.ts +2 -2
- package/src/lib/services/index.ts +2 -2
- package/src/lib/services/resource-injector.service.ts +7 -7
- package/src/login/DefaultPage.ts +76 -76
- package/src/login/KcContext.ts +1 -1
- package/src/login/classes/component-reference.class.ts +1 -1
- package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +11 -11
- package/src/login/components/field-errors/field-errors.component.ts +9 -9
- package/src/login/components/group-label/group-label.component.ts +12 -12
- package/src/login/components/hello-world/hello-world.component.css +0 -0
- package/src/login/components/hello-world/hello-world.component.html +1 -0
- package/src/login/components/hello-world/hello-world.component.ts +10 -0
- package/src/login/components/index.ts +11 -11
- package/src/login/components/input-field-by-type/input-field-by-type.component.ts +15 -15
- package/src/login/components/input-tag/input-tag.component.ts +20 -20
- package/src/login/components/input-tag-selects/input-tag-selects.component.ts +26 -26
- package/src/login/components/logout-other-sessions/logout-other-sessions.component.ts +8 -8
- package/src/login/components/password-wrapper/password-wrapper.component.ts +11 -11
- package/src/login/components/select-tag/select-tag.component.ts +16 -16
- package/src/login/components/textarea-tag/textarea-tag.component.ts +14 -14
- package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +16 -16
- package/src/login/containers/template.component.ts +19 -19
- package/src/login/directives/attributes.directive.ts +2 -2
- package/src/login/directives/index.ts +2 -2
- package/src/login/directives/kc-class.directive.ts +11 -11
- package/src/login/i18n.ts +2 -2
- package/src/login/pages/code/code.component.ts +11 -11
- package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +11 -11
- package/src/login/pages/delete-credential/delete-credential.component.ts +11 -11
- package/src/login/pages/error/error.component.ts +11 -11
- package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +11 -11
- package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +14 -14
- package/src/login/pages/info/info.component.ts +15 -15
- package/src/login/pages/login/login.component.ts +16 -16
- package/src/login/pages/login-config-totp/login-config-totp.component.ts +16 -16
- package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +11 -11
- package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +11 -11
- package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +11 -11
- package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +13 -13
- package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +11 -11
- package/src/login/pages/login-otp/login-otp.component.ts +13 -13
- package/src/login/pages/login-page-expired/login-page-expired.component.ts +10 -10
- package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +21 -21
- package/src/login/pages/login-password/login-password.component.ts +14 -14
- package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +13 -13
- package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +13 -13
- package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +12 -12
- package/src/login/pages/login-reset-password/login-reset-password.component.ts +13 -13
- package/src/login/pages/login-update-password/login-update-password.component.ts +16 -16
- package/src/login/pages/login-update-profile/login-update-profile.component.ts +13 -13
- package/src/login/pages/login-username/login-username.component.ts +14 -14
- package/src/login/pages/login-verify-email/login-verify-email.component.ts +11 -11
- package/src/login/pages/login-x509-info/login-x509-info.component.ts +11 -11
- package/src/login/pages/logout-confirm/logout-confirm.component.ts +11 -11
- package/src/login/pages/register/register.component.ts +17 -17
- package/src/login/pages/saml-post-form/saml-post-form.component.ts +13 -13
- package/src/login/pages/select-authenticator/select-authenticator.component.ts +13 -13
- package/src/login/pages/terms/terms.component.ts +11 -11
- package/src/login/pages/update-email/update-email.component.ts +14 -14
- package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +21 -21
- package/src/login/pages/webauthn-error/webauthn-error.component.ts +15 -15
- package/src/login/pages/webauthn-register/webauthn-register.component.ts +20 -20
- package/src/login/pipes/advanced-msg-str.pipe.ts +4 -4
- package/src/login/pipes/index.ts +6 -6
- package/src/login/pipes/input-type.pipe.ts +4 -4
- package/src/login/pipes/kc-sanitize.pipe.ts +8 -8
- package/src/login/pipes/msg-str.pipe.ts +5 -5
- package/src/login/pipes/to-array.pipe.ts +2 -2
- package/src/login/pipes/to-number.pipe.ts +3 -3
- package/src/login/services/index.ts +2 -2
- package/src/login/services/login-resource-injector.service.ts +11 -11
- package/src/login/services/user-profile-form.service.ts +178 -178
- package/stories/login/pages/login/login.stories.ts +146 -0
- package/lib/i18n.js +0 -6
- package/lib/i18n.js.map +0 -1
- package/lib/models/index.js +0 -2
- package/lib/models/index.js.map +0 -1
- package/lib/models/script.model.js +0 -2
- package/lib/models/script.model.js.map +0 -1
- package/lib/providers/keycloakify-angular.providers.js +0 -58
- package/lib/providers/keycloakify-angular.providers.js.map +0 -1
- package/lib/public-api.js +0 -4
- package/lib/public-api.js.map +0 -1
- package/lib/services/i18n.service.js +0 -14
- package/lib/services/i18n.service.js.map +0 -1
- package/lib/services/index.js +0 -3
- package/lib/services/index.js.map +0 -1
- package/lib/services/resource-injector.service.js +0 -57
- package/lib/services/resource-injector.service.js.map +0 -1
- package/login/DefaultPage.js +0 -121
- package/login/DefaultPage.js.map +0 -1
- package/login/KcContext.js +0 -2
- package/login/KcContext.js.map +0 -1
- package/login/classes/component-reference.class.js +0 -3
- package/login/classes/component-reference.class.js.map +0 -1
- package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +0 -24
- package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js +0 -123
- package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js.map +0 -1
- package/login/components/field-errors/field-errors.component.html +0 -15
- package/login/components/field-errors/field-errors.component.js +0 -45
- package/login/components/field-errors/field-errors.component.js.map +0 -1
- package/login/components/group-label/group-label.component.html +0 -30
- package/login/components/group-label/group-label.component.js +0 -55
- package/login/components/group-label/group-label.component.js.map +0 -1
- package/login/components/index.js +0 -12
- package/login/components/index.js.map +0 -1
- package/login/components/input-field-by-type/input-field-by-type.component.html +0 -63
- package/login/components/input-field-by-type/input-field-by-type.component.js +0 -63
- package/login/components/input-field-by-type/input-field-by-type.component.js.map +0 -1
- package/login/components/input-tag/input-tag.component.html +0 -49
- package/login/components/input-tag/input-tag.component.js +0 -107
- package/login/components/input-tag/input-tag.component.js.map +0 -1
- package/login/components/input-tag-selects/input-tag-selects.component.html +0 -29
- package/login/components/input-tag-selects/input-tag-selects.component.js +0 -132
- package/login/components/input-tag-selects/input-tag-selects.component.js.map +0 -1
- package/login/components/logout-other-sessions/logout-other-sessions.component.html +0 -19
- package/login/components/logout-other-sessions/logout-other-sessions.component.js +0 -43
- package/login/components/logout-other-sessions/logout-other-sessions.component.js.map +0 -1
- package/login/components/password-wrapper/password-wrapper.component.html +0 -15
- package/login/components/password-wrapper/password-wrapper.component.js +0 -57
- package/login/components/password-wrapper/password-wrapper.component.js.map +0 -1
- package/login/components/select-tag/select-tag.component.html +0 -31
- package/login/components/select-tag/select-tag.component.js +0 -97
- package/login/components/select-tag/select-tag.component.js.map +0 -1
- package/login/components/textarea-tag/textarea-tag.component.html +0 -18
- package/login/components/textarea-tag/textarea-tag.component.js +0 -63
- package/login/components/textarea-tag/textarea-tag.component.js.map +0 -1
- package/login/components/user-profile-form-fields/user-profile-form-fields.component.html +0 -85
- package/login/components/user-profile-form-fields/user-profile-form-fields.component.js +0 -74
- package/login/components/user-profile-form-fields/user-profile-form-fields.component.js.map +0 -1
- package/login/containers/template.component.html +0 -203
- package/login/containers/template.component.js +0 -78
- package/login/containers/template.component.js.map +0 -1
- package/login/directives/attributes.directive.js +0 -34
- package/login/directives/attributes.directive.js.map +0 -1
- package/login/directives/index.js +0 -3
- package/login/directives/index.js.map +0 -1
- package/login/directives/kc-class.directive.js +0 -146
- package/login/directives/kc-class.directive.js.map +0 -1
- package/login/i18n.js +0 -2
- package/login/i18n.js.map +0 -1
- package/login/pages/code/code.component.html +0 -26
- package/login/pages/code/code.component.js +0 -38
- package/login/pages/code/code.component.js.map +0 -1
- package/login/pages/delete-account-confirm/delete-account-confirm.component.html +0 -46
- package/login/pages/delete-account-confirm/delete-account-confirm.component.js +0 -38
- package/login/pages/delete-account-confirm/delete-account-confirm.component.js.map +0 -1
- package/login/pages/delete-credential/delete-credential.component.html +0 -35
- package/login/pages/delete-credential/delete-credential.component.js +0 -43
- package/login/pages/delete-credential/delete-credential.component.js.map +0 -1
- package/login/pages/error/error.component.html +0 -25
- package/login/pages/error/error.component.js +0 -38
- package/login/pages/error/error.component.js.map +0 -1
- package/login/pages/frontchannel-logout/frontchannel-logout.component.html +0 -35
- package/login/pages/frontchannel-logout/frontchannel-logout.component.js +0 -47
- package/login/pages/frontchannel-logout/frontchannel-logout.component.js.map +0 -1
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +0 -41
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js +0 -54
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js.map +0 -1
- package/login/pages/info/info.component.html +0 -54
- package/login/pages/info/info.component.js +0 -61
- package/login/pages/info/info.component.js.map +0 -1
- package/login/pages/login/login.component.html +0 -212
- package/login/pages/login/login.component.js +0 -58
- package/login/pages/login/login.component.js.map +0 -1
- package/login/pages/login-config-totp/login-config-totp.component.html +0 -190
- package/login/pages/login-config-totp/login-config-totp.component.js +0 -53
- package/login/pages/login-config-totp/login-config-totp.component.js.map +0 -1
- package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +0 -41
- package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js +0 -43
- package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js.map +0 -1
- package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +0 -40
- package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js +0 -43
- package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js.map +0 -1
- package/login/pages/login-idp-link-email/login-idp-link-email.component.html +0 -37
- package/login/pages/login-idp-link-email/login-idp-link-email.component.js +0 -43
- package/login/pages/login-idp-link-email/login-idp-link-email.component.js.map +0 -1
- package/login/pages/login-oauth-grant/login-oauth-grant.component.html +0 -92
- package/login/pages/login-oauth-grant/login-oauth-grant.component.js +0 -44
- package/login/pages/login-oauth-grant/login-oauth-grant.component.js.map +0 -1
- package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +0 -63
- package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js +0 -43
- package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js.map +0 -1
- package/login/pages/login-otp/login-otp.component.html +0 -103
- package/login/pages/login-otp/login-otp.component.js +0 -44
- package/login/pages/login-otp/login-otp.component.js.map +0 -1
- package/login/pages/login-page-expired/login-page-expired.component.html +0 -35
- package/login/pages/login-page-expired/login-page-expired.component.js +0 -42
- package/login/pages/login-page-expired/login-page-expired.component.js.map +0 -1
- package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +0 -203
- package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js +0 -91
- package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js.map +0 -1
- package/login/pages/login-password/login-password.component.html +0 -90
- package/login/pages/login-password/login-password.component.js +0 -52
- package/login/pages/login-password/login-password.component.js.map +0 -1
- package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +0 -155
- package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js +0 -51
- package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js.map +0 -1
- package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +0 -76
- package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js +0 -44
- package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js.map +0 -1
- package/login/pages/login-reset-otp/login-reset-otp.component.html +0 -65
- package/login/pages/login-reset-otp/login-reset-otp.component.js +0 -43
- package/login/pages/login-reset-otp/login-reset-otp.component.js.map +0 -1
- package/login/pages/login-reset-password/login-reset-password.component.html +0 -95
- package/login/pages/login-reset-password/login-reset-password.component.js +0 -44
- package/login/pages/login-reset-password/login-reset-password.component.js.map +0 -1
- package/login/pages/login-update-password/login-update-password.component.html +0 -116
- package/login/pages/login-update-password/login-update-password.component.js +0 -53
- package/login/pages/login-update-password/login-update-password.component.js.map +0 -1
- package/login/pages/login-update-profile/login-update-profile.component.html +0 -59
- package/login/pages/login-update-profile/login-update-profile.component.js +0 -50
- package/login/pages/login-update-profile/login-update-profile.component.js.map +0 -1
- package/login/pages/login-username/login-username.component.html +0 -161
- package/login/pages/login-username/login-username.component.js +0 -56
- package/login/pages/login-username/login-username.component.js.map +0 -1
- package/login/pages/login-verify-email/login-verify-email.component.html +0 -27
- package/login/pages/login-verify-email/login-verify-email.component.js +0 -43
- package/login/pages/login-verify-email/login-verify-email.component.js.map +0 -1
- package/login/pages/login-x509-info/login-x509-info.component.html +0 -102
- package/login/pages/login-x509-info/login-x509-info.component.js +0 -43
- package/login/pages/login-x509-info/login-x509-info.component.js.map +0 -1
- package/login/pages/logout-confirm/logout-confirm.component.html +0 -59
- package/login/pages/logout-confirm/logout-confirm.component.js +0 -43
- package/login/pages/logout-confirm/logout-confirm.component.js.map +0 -1
- package/login/pages/register/register.component.html +0 -126
- package/login/pages/register/register.component.js +0 -62
- package/login/pages/register/register.component.js.map +0 -1
- package/login/pages/saml-post-form/saml-post-form.component.html +0 -51
- package/login/pages/saml-post-form/saml-post-form.component.js +0 -55
- package/login/pages/saml-post-form/saml-post-form.component.js.map +0 -1
- package/login/pages/select-authenticator/select-authenticator.component.html +0 -49
- package/login/pages/select-authenticator/select-authenticator.component.js +0 -51
- package/login/pages/select-authenticator/select-authenticator.component.js.map +0 -1
- package/login/pages/terms/terms.component.html +0 -36
- package/login/pages/terms/terms.component.js +0 -43
- package/login/pages/terms/terms.component.js.map +0 -1
- package/login/pages/update-email/update-email.component.html +0 -58
- package/login/pages/update-email/update-email.component.js +0 -52
- package/login/pages/update-email/update-email.component.js.map +0 -1
- package/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +0 -162
- package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js +0 -93
- package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js.map +0 -1
- package/login/pages/webauthn-error/webauthn-error.component.html +0 -60
- package/login/pages/webauthn-error/webauthn-error.component.js +0 -57
- package/login/pages/webauthn-error/webauthn-error.component.js.map +0 -1
- package/login/pages/webauthn-register/webauthn-register.component.html +0 -82
- package/login/pages/webauthn-register/webauthn-register.component.js +0 -86
- package/login/pages/webauthn-register/webauthn-register.component.js.map +0 -1
- package/login/pipes/advanced-msg-str.pipe.js +0 -31
- package/login/pipes/advanced-msg-str.pipe.js.map +0 -1
- package/login/pipes/index.js +0 -7
- package/login/pipes/index.js.map +0 -1
- package/login/pipes/input-type.pipe.js +0 -23
- package/login/pipes/input-type.pipe.js.map +0 -1
- package/login/pipes/kc-sanitize.pipe.js +0 -36
- package/login/pipes/kc-sanitize.pipe.js.map +0 -1
- package/login/pipes/msg-str.pipe.js +0 -31
- package/login/pipes/msg-str.pipe.js.map +0 -1
- package/login/pipes/to-array.pipe.js +0 -24
- package/login/pipes/to-array.pipe.js.map +0 -1
- package/login/pipes/to-number.pipe.js +0 -23
- package/login/pipes/to-number.pipe.js.map +0 -1
- package/login/services/index.js +0 -3
- package/login/services/index.js.map +0 -1
- package/login/services/login-resource-injector.service.js +0 -71
- package/login/services/login-resource-injector.service.js.map +0 -1
- package/login/services/user-profile-form.service.js +0 -1031
- package/login/services/user-profile-form.service.js.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AsyncPipe, NgClass } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input, signal } from '@angular/core';
|
|
3
|
+
import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '../../../lib/public-api';
|
|
4
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
5
|
+
import { PasswordWrapperComponent } from '../../../login/components/password-wrapper/password-wrapper.component';
|
|
6
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
7
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
8
|
+
import { KcSanitizePipe } from '../../../login/pipes/kc-sanitize.pipe';
|
|
9
|
+
import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class LoginComponent extends ComponentReference {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.kcContext = inject(KC_CONTEXT);
|
|
15
|
+
this.displayRequiredFields = input(false);
|
|
16
|
+
this.documentTitle = input();
|
|
17
|
+
this.bodyClassName = input();
|
|
18
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
19
|
+
this.classes = inject(CLASSES);
|
|
20
|
+
this.isLoginButtonDisabled = signal(false);
|
|
21
|
+
this.displayInfo = !!this.kcContext?.realm?.password &&
|
|
22
|
+
!!this.kcContext?.realm?.registrationAllowed &&
|
|
23
|
+
!this.kcContext?.registrationDisabled;
|
|
24
|
+
this.displayMessage = !this.kcContext?.messagesPerField?.existsError('username', 'password');
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LoginComponent, 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(() => LoginComponent)
|
|
31
|
+
}
|
|
32
|
+
], usesInheritance: true, ngImport: i0, template: "@let realm = kcContext.realm;\n@let social = kcContext.social;\n@let usernameHidden = kcContext.usernameHidden;\n@let auth = kcContext.auth;\n@let messagesPerField = kcContext.messagesPerField;\n@let url = kcContext.url;\n@let login = kcContext.login;\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 {{ 'loginAccountTitle' | msgStr }}\n </ng-container>\n <ng-container infoNode>\n <div id=\"kc-registration-container\">\n <div id=\"kc-registration\">\n <span>\n {{ 'noAccount' | msgStr }}\n <a\n tabindex=\"8\"\n [href]=\"url?.registrationUrl\"\n >\n {{ 'doRegister' | msgStr }}\n </a>\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container socialProvidersNode>\n @if (!!realm?.password && !!social?.providers?.length) {\n <div\n id=\"kc-social-providers\"\n [kcClass]=\"'kcFormSocialAccountSectionClass'\"\n >\n <hr />\n <h2>{{ 'identity-provider-login-label' | msgStr }}</h2>\n <ul\n [kcClass]=\"{\n kcFormSocialAccountListClass: true,\n kcFormSocialAccountListGridClass: (social?.providers?.length ?? 0) > 3,\n }\"\n >\n @for (provider of social?.providers; track provider.alias; let idx = $index) {\n <li>\n <a\n [id]=\"provider.alias\"\n [kcClass]=\"{\n kcFormSocialAccountListButtonClass: true,\n kcFormSocialAccountGridItem: (social?.providers?.length ?? 0) > 3,\n }\"\n type=\"button\"\n [href]=\"provider.loginUrl\"\n >\n @if (provider.iconClasses) {\n <i\n [ngClass]=\"provider.iconClasses\"\n [kcClass]=\"'kcCommonLogoIdP'\"\n aria-hidden=\"true\"\n ></i>\n }\n <span\n [ngClass]=\"{\n 'kc-social-icon-text': provider.iconClasses,\n }\"\n [kcClass]=\"'kcFormSocialAccountNameClass'\"\n [innerHTML]=\"provider.displayName | kcSanitize: 'html'\"\n ></span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n </ng-container>\n <ng-container content>\n <div id=\"kc-form\">\n <div id=\"kc-form-wrapper\">\n <!-- login.component.html -->\n @if (realm?.password) {\n <form\n id=\"kc-form-login\"\n (onSubmit)=\"isLoginButtonDisabled.set(true)\"\n [action]=\"url?.loginAction\"\n method=\"post\"\n >\n @if (!usernameHidden) {\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"username\"\n [kcClass]=\"'kcLabelClass'\"\n >\n @if (!realm?.loginWithEmailAllowed) {\n {{ 'username' | msgStr }}\n } @else if (!realm?.registrationEmailAsUsername) {\n {{ 'usernameOrEmail' | msgStr }}\n } @else {\n {{ 'email' | msgStr }}\n }\n </label>\n <input\n tabindex=\"2\"\n id=\"username\"\n [kcClass]=\"'kcInputClass'\"\n name=\"username\"\n type=\"text\"\n autofocus\n [defaultValue]=\"login?.username || ''\"\n [attr.aria-invalid]=\"messagesPerField?.existsError('username', 'password')\"\n />\n @if (messagesPerField?.existsError('username', 'password')) {\n <span\n id=\"input-error\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField?.getFirstError('username', 'password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n }\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"password\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ 'password' | msgStr }}\n </label>\n\n <kc-password-wrapper passwordInputId=\"password\">\n <input\n tabindex=\"3\"\n id=\"password\"\n [kcClass]=\"'kcInputClass'\"\n name=\"password\"\n type=\"password\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"messagesPerField.existsError('username', 'password')\"\n />\n </kc-password-wrapper>\n @if (usernameHidden && messagesPerField?.existsError('username', 'password')) {\n <span\n id=\"input-error\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField?.getFirstError('username', 'password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n\n <div [kcClass]=\"['kcFormGroupClass', 'kcFormSettingClass']\">\n <div id=\"kc-form-options\">\n @if (realm?.rememberMe && !usernameHidden) {\n <div class=\"checkbox\">\n <label>\n <input\n tabindex=\"5\"\n id=\"rememberMe\"\n name=\"rememberMe\"\n type=\"checkbox\"\n [defaultChecked]=\"!!login?.rememberMe\"\n />\n {{ 'rememberMe' | msgStr }}\n </label>\n </div>\n }\n </div>\n\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\">\n @if (realm?.resetPasswordAllowed) {\n <span>\n <a\n tabindex=\"6\"\n [href]=\"url?.loginResetCredentialsUrl\"\n >{{ 'doForgotPassword' | msgStr }}</a\n >\n </span>\n }\n </div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <input\n type=\"hidden\"\n id=\"id-hidden-input\"\n name=\"credentialId\"\n [value]=\"auth?.selectedCredential\"\n />\n <input\n tabindex=\"7\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"login\"\n id=\"kc-login\"\n type=\"submit\"\n [value]=\"'doLogIn' | msgStr\"\n [disabled]=\"isLoginButtonDisabled()\"\n />\n </div>\n </form>\n }\n </div>\n </div>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: KcSanitizePipe, name: "kcSanitize" }, { kind: "component", type: PasswordWrapperComponent, selector: "kc-password-wrapper", inputs: ["passwordInputId"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'kc-root', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
37
|
+
KcClassDirective,
|
|
38
|
+
AsyncPipe,
|
|
39
|
+
KcSanitizePipe,
|
|
40
|
+
PasswordWrapperComponent,
|
|
41
|
+
NgClass,
|
|
42
|
+
TemplateComponent,
|
|
43
|
+
MsgStrPipe
|
|
44
|
+
], providers: [
|
|
45
|
+
{
|
|
46
|
+
provide: ComponentReference,
|
|
47
|
+
useExisting: forwardRef(() => LoginComponent)
|
|
48
|
+
}
|
|
49
|
+
], template: "@let realm = kcContext.realm;\n@let social = kcContext.social;\n@let usernameHidden = kcContext.usernameHidden;\n@let auth = kcContext.auth;\n@let messagesPerField = kcContext.messagesPerField;\n@let url = kcContext.url;\n@let login = kcContext.login;\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 {{ 'loginAccountTitle' | msgStr }}\n </ng-container>\n <ng-container infoNode>\n <div id=\"kc-registration-container\">\n <div id=\"kc-registration\">\n <span>\n {{ 'noAccount' | msgStr }}\n <a\n tabindex=\"8\"\n [href]=\"url?.registrationUrl\"\n >\n {{ 'doRegister' | msgStr }}\n </a>\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container socialProvidersNode>\n @if (!!realm?.password && !!social?.providers?.length) {\n <div\n id=\"kc-social-providers\"\n [kcClass]=\"'kcFormSocialAccountSectionClass'\"\n >\n <hr />\n <h2>{{ 'identity-provider-login-label' | msgStr }}</h2>\n <ul\n [kcClass]=\"{\n kcFormSocialAccountListClass: true,\n kcFormSocialAccountListGridClass: (social?.providers?.length ?? 0) > 3,\n }\"\n >\n @for (provider of social?.providers; track provider.alias; let idx = $index) {\n <li>\n <a\n [id]=\"provider.alias\"\n [kcClass]=\"{\n kcFormSocialAccountListButtonClass: true,\n kcFormSocialAccountGridItem: (social?.providers?.length ?? 0) > 3,\n }\"\n type=\"button\"\n [href]=\"provider.loginUrl\"\n >\n @if (provider.iconClasses) {\n <i\n [ngClass]=\"provider.iconClasses\"\n [kcClass]=\"'kcCommonLogoIdP'\"\n aria-hidden=\"true\"\n ></i>\n }\n <span\n [ngClass]=\"{\n 'kc-social-icon-text': provider.iconClasses,\n }\"\n [kcClass]=\"'kcFormSocialAccountNameClass'\"\n [innerHTML]=\"provider.displayName | kcSanitize: 'html'\"\n ></span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n </ng-container>\n <ng-container content>\n <div id=\"kc-form\">\n <div id=\"kc-form-wrapper\">\n <!-- login.component.html -->\n @if (realm?.password) {\n <form\n id=\"kc-form-login\"\n (onSubmit)=\"isLoginButtonDisabled.set(true)\"\n [action]=\"url?.loginAction\"\n method=\"post\"\n >\n @if (!usernameHidden) {\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"username\"\n [kcClass]=\"'kcLabelClass'\"\n >\n @if (!realm?.loginWithEmailAllowed) {\n {{ 'username' | msgStr }}\n } @else if (!realm?.registrationEmailAsUsername) {\n {{ 'usernameOrEmail' | msgStr }}\n } @else {\n {{ 'email' | msgStr }}\n }\n </label>\n <input\n tabindex=\"2\"\n id=\"username\"\n [kcClass]=\"'kcInputClass'\"\n name=\"username\"\n type=\"text\"\n autofocus\n [defaultValue]=\"login?.username || ''\"\n [attr.aria-invalid]=\"messagesPerField?.existsError('username', 'password')\"\n />\n @if (messagesPerField?.existsError('username', 'password')) {\n <span\n id=\"input-error\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField?.getFirstError('username', 'password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n }\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"password\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ 'password' | msgStr }}\n </label>\n\n <kc-password-wrapper passwordInputId=\"password\">\n <input\n tabindex=\"3\"\n id=\"password\"\n [kcClass]=\"'kcInputClass'\"\n name=\"password\"\n type=\"password\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"messagesPerField.existsError('username', 'password')\"\n />\n </kc-password-wrapper>\n @if (usernameHidden && messagesPerField?.existsError('username', 'password')) {\n <span\n id=\"input-error\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField?.getFirstError('username', 'password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n\n <div [kcClass]=\"['kcFormGroupClass', 'kcFormSettingClass']\">\n <div id=\"kc-form-options\">\n @if (realm?.rememberMe && !usernameHidden) {\n <div class=\"checkbox\">\n <label>\n <input\n tabindex=\"5\"\n id=\"rememberMe\"\n name=\"rememberMe\"\n type=\"checkbox\"\n [defaultChecked]=\"!!login?.rememberMe\"\n />\n {{ 'rememberMe' | msgStr }}\n </label>\n </div>\n }\n </div>\n\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\">\n @if (realm?.resetPasswordAllowed) {\n <span>\n <a\n tabindex=\"6\"\n [href]=\"url?.loginResetCredentialsUrl\"\n >{{ 'doForgotPassword' | msgStr }}</a\n >\n </span>\n }\n </div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <input\n type=\"hidden\"\n id=\"id-hidden-input\"\n name=\"credentialId\"\n [value]=\"auth?.selectedCredential\"\n />\n <input\n tabindex=\"7\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"login\"\n id=\"kc-login\"\n type=\"submit\"\n [value]=\"'doLogIn' | msgStr\"\n [disabled]=\"isLoginButtonDisabled()\"\n />\n </div>\n </form>\n }\n </div>\n </div>\n </ng-container>\n</kc-login-template>\n" }]
|
|
50
|
+
}] });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBQzdILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBdUIzRSxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQXJCdEQ7O1FBc0JJLGNBQVMsR0FBRyxNQUFNLENBQThDLFVBQVUsQ0FBQyxDQUFDO1FBQzVFLDBCQUFxQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsT0FBTyxDQUFDLENBQUM7UUFDdEUsMEJBQXFCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGdCQUFXLEdBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLG1CQUFtQjtZQUM1QyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUM7UUFDMUMsbUJBQWMsR0FBWSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxDQUNwRSxVQUFVLEVBQ1YsVUFBVSxDQUNiLENBQUM7S0FDTDs4R0FoQlksY0FBYztrR0FBZCxjQUFjLDBnQkFQWjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO2FBQ2hEO1NBQ0osaURDMUNMLDgyT0FvTkEsNENEdkxRLGdCQUFnQiwwRkFFaEIsY0FBYyxtREFDZCx3QkFBd0IsNkZBQ3hCLE9BQU8sb0ZBQ1AsaUJBQWlCLCtKQUNqQixVQUFVOzsyRkFTTCxjQUFjO2tCQXJCMUIsU0FBUzsrQkFDSSxTQUFTLGNBRVAsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNMLGdCQUFnQjt3QkFDaEIsU0FBUzt3QkFDVCxjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsT0FBTzt3QkFDUCxpQkFBaUI7d0JBQ2pCLFVBQVU7cUJBQ2IsYUFDVTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUM7eUJBQ2hEO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ0xBU1NFUyxcbiAgICBLQ19DT05URVhULFxuICAgIFVTRV9ERUZBVUxUX0NTU1xufSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAna2V5Y2xvYWtpZnkvbG9naW4vS2NDb250ZXh0JztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZS5jbGFzcyc7XG5pbXBvcnQgeyBQYXNzd29yZFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb21wb25lbnRzL3Bhc3N3b3JkLXdyYXBwZXIvcGFzc3dvcmQtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgS2NTYW5pdGl6ZVBpcGUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9waXBlcy9rYy1zYW5pdGl6ZS5waXBlJztcbmltcG9ydCB7IE1zZ1N0clBpcGUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9waXBlcy9tc2ctc3RyLnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEtjQ2xhc3NEaXJlY3RpdmUsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgS2NTYW5pdGl6ZVBpcGUsXG4gICAgICAgIFBhc3N3b3JkV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIE1zZ1N0clBpcGVcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMb2dpbkNvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGtjQ29udGV4dCA9IGluamVjdDxFeHRyYWN0PEtjQ29udGV4dCwgeyBwYWdlSWQ6ICdsb2dpbi5mdGwnIH0+PihLQ19DT05URVhUKTtcbiAgICBkaXNwbGF5UmVxdWlyZWRGaWVsZHMgPSBpbnB1dChmYWxzZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihDTEFTU0VTKTtcbiAgICBpc0xvZ2luQnV0dG9uRGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgIGRpc3BsYXlJbmZvOiBib29sZWFuID1cbiAgICAgICAgISF0aGlzLmtjQ29udGV4dD8ucmVhbG0/LnBhc3N3b3JkICYmXG4gICAgICAgICEhdGhpcy5rY0NvbnRleHQ/LnJlYWxtPy5yZWdpc3RyYXRpb25BbGxvd2VkICYmXG4gICAgICAgICF0aGlzLmtjQ29udGV4dD8ucmVnaXN0cmF0aW9uRGlzYWJsZWQ7XG4gICAgZGlzcGxheU1lc3NhZ2U6IGJvb2xlYW4gPSAhdGhpcy5rY0NvbnRleHQ/Lm1lc3NhZ2VzUGVyRmllbGQ/LmV4aXN0c0Vycm9yKFxuICAgICAgICAndXNlcm5hbWUnLFxuICAgICAgICAncGFzc3dvcmQnXG4gICAgKTtcbn1cbiIsIkBsZXQgcmVhbG0gPSBrY0NvbnRleHQucmVhbG07XG5AbGV0IHNvY2lhbCA9IGtjQ29udGV4dC5zb2NpYWw7XG5AbGV0IHVzZXJuYW1lSGlkZGVuID0ga2NDb250ZXh0LnVzZXJuYW1lSGlkZGVuO1xuQGxldCBhdXRoID0ga2NDb250ZXh0LmF1dGg7XG5AbGV0IG1lc3NhZ2VzUGVyRmllbGQgPSBrY0NvbnRleHQubWVzc2FnZXNQZXJGaWVsZDtcbkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgbG9naW4gPSBrY0NvbnRleHQubG9naW47XG5cbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICBbZGlzcGxheUluZm9dPVwiZGlzcGxheUluZm9cIlxuICBbYm9keUNsYXNzTmFtZV09XCJib2R5Q2xhc3NOYW1lKClcIlxuICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICBbZGlzcGxheVJlcXVpcmVkRmllbGRzXT1cImRpc3BsYXlSZXF1aXJlZEZpZWxkcygpXCJcbiAgW2RvY3VtZW50VGl0bGVdPVwiZG9jdW1lbnRUaXRsZSgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgIHt7ICdsb2dpbkFjY291bnRUaXRsZScgfCBtc2dTdHIgfX1cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgaW5mb05vZGU+XG4gICAgPGRpdiBpZD1cImtjLXJlZ2lzdHJhdGlvbi1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgaWQ9XCJrYy1yZWdpc3RyYXRpb25cIj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAge3sgJ25vQWNjb3VudCcgfCBtc2dTdHIgfX1cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgdGFiaW5kZXg9XCI4XCJcbiAgICAgICAgICAgIFtocmVmXT1cInVybD8ucmVnaXN0cmF0aW9uVXJsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZG9SZWdpc3RlcicgfCBtc2dTdHIgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBzb2NpYWxQcm92aWRlcnNOb2RlPlxuICAgIEBpZiAoISFyZWFsbT8ucGFzc3dvcmQgJiYgISFzb2NpYWw/LnByb3ZpZGVycz8ubGVuZ3RoKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwia2Mtc29jaWFsLXByb3ZpZGVyc1wiXG4gICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1Tb2NpYWxBY2NvdW50U2VjdGlvbkNsYXNzJ1wiXG4gICAgICA+XG4gICAgICAgIDxociAvPlxuICAgICAgICA8aDI+e3sgJ2lkZW50aXR5LXByb3ZpZGVyLWxvZ2luLWxhYmVsJyB8IG1zZ1N0ciB9fTwvaDI+XG4gICAgICAgIDx1bFxuICAgICAgICAgIFtrY0NsYXNzXT1cIntcbiAgICAgICAgICAgIGtjRm9ybVNvY2lhbEFjY291bnRMaXN0Q2xhc3M6IHRydWUsXG4gICAgICAgICAgICBrY0Zvcm1Tb2NpYWxBY2NvdW50TGlzdEdyaWRDbGFzczogKHNvY2lhbD8ucHJvdmlkZXJzPy5sZW5ndGggPz8gMCkgPiAzLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgQGZvciAocHJvdmlkZXIgb2Ygc29jaWFsPy5wcm92aWRlcnM7IHRyYWNrIHByb3ZpZGVyLmFsaWFzOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW2lkXT1cInByb3ZpZGVyLmFsaWFzXCJcbiAgICAgICAgICAgICAgICBba2NDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICBrY0Zvcm1Tb2NpYWxBY2NvdW50TGlzdEJ1dHRvbkNsYXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAga2NGb3JtU29jaWFsQWNjb3VudEdyaWRJdGVtOiAoc29jaWFsPy5wcm92aWRlcnM/Lmxlbmd0aCA/PyAwKSA+IDMsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2hyZWZdPVwicHJvdmlkZXIubG9naW5VcmxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChwcm92aWRlci5pY29uQ2xhc3Nlcykge1xuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicHJvdmlkZXIuaWNvbkNsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NDb21tb25Mb2dvSWRQJ1wiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAna2Mtc29jaWFsLWljb24tdGV4dCc6IHByb3ZpZGVyLmljb25DbGFzc2VzLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtU29jaWFsQWNjb3VudE5hbWVDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJwcm92aWRlci5kaXNwbGF5TmFtZSB8IGtjU2FuaXRpemU6ICdodG1sJ1wiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyIGNvbnRlbnQ+XG4gICAgPGRpdiBpZD1cImtjLWZvcm1cIj5cbiAgICAgIDxkaXYgaWQ9XCJrYy1mb3JtLXdyYXBwZXJcIj5cbiAgICAgICAgPCEtLSBsb2dpbi5jb21wb25lbnQuaHRtbCAtLT5cbiAgICAgICAgQGlmIChyZWFsbT8ucGFzc3dvcmQpIHtcbiAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgaWQ9XCJrYy1mb3JtLWxvZ2luXCJcbiAgICAgICAgICAgIChvblN1Ym1pdCk9XCJpc0xvZ2luQnV0dG9uRGlzYWJsZWQuc2V0KHRydWUpXCJcbiAgICAgICAgICAgIFthY3Rpb25dPVwidXJsPy5sb2dpbkFjdGlvblwiXG4gICAgICAgICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKCF1c2VybmFtZUhpZGRlbikge1xuICAgICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgZm9yPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjTGFiZWxDbGFzcydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEBpZiAoIXJlYWxtPy5sb2dpbldpdGhFbWFpbEFsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgJ3VzZXJuYW1lJyB8IG1zZ1N0ciB9fVxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoIXJlYWxtPy5yZWdpc3RyYXRpb25FbWFpbEFzVXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgJ3VzZXJuYW1lT3JFbWFpbCcgfCBtc2dTdHIgfX1cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyAnZW1haWwnIHwgbXNnU3RyIH19XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMlwiXG4gICAgICAgICAgICAgICAgICBpZD1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0Q2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1c2VybmFtZVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0VmFsdWVdPVwibG9naW4/LnVzZXJuYW1lIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJtZXNzYWdlc1BlckZpZWxkPy5leGlzdHNFcnJvcigndXNlcm5hbWUnLCAncGFzc3dvcmQnKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICBAaWYgKG1lc3NhZ2VzUGVyRmllbGQ/LmV4aXN0c0Vycm9yKCd1c2VybmFtZScsICdwYXNzd29yZCcpKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBpZD1cImlucHV0LWVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjSW5wdXRFcnJvck1lc3NhZ2VDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VzUGVyRmllbGQ/LmdldEZpcnN0RXJyb3IoJ3VzZXJuYW1lJywgJ3Bhc3N3b3JkJykgfCBrY1Nhbml0aXplOiAnaHRtbCdcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjRm9ybUdyb3VwQ2xhc3MnXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGZvcj1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NMYWJlbENsYXNzJ1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAncGFzc3dvcmQnIHwgbXNnU3RyIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgPGtjLXBhc3N3b3JkLXdyYXBwZXIgcGFzc3dvcmRJbnB1dElkPVwicGFzc3dvcmRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiM1wiXG4gICAgICAgICAgICAgICAgICBpZD1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0Q2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJtZXNzYWdlc1BlckZpZWxkLmV4aXN0c0Vycm9yKCd1c2VybmFtZScsICdwYXNzd29yZCcpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2tjLXBhc3N3b3JkLXdyYXBwZXI+XG4gICAgICAgICAgICAgIEBpZiAodXNlcm5hbWVIaWRkZW4gJiYgbWVzc2FnZXNQZXJGaWVsZD8uZXhpc3RzRXJyb3IoJ3VzZXJuYW1lJywgJ3Bhc3N3b3JkJykpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgaWQ9XCJpbnB1dC1lcnJvclwiXG4gICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NJbnB1dEVycm9yTWVzc2FnZUNsYXNzJ1wiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZXNzYWdlc1BlckZpZWxkPy5nZXRGaXJzdEVycm9yKCd1c2VybmFtZScsICdwYXNzd29yZCcpIHwga2NTYW5pdGl6ZTogJ2h0bWwnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCJbJ2tjRm9ybUdyb3VwQ2xhc3MnLCAna2NGb3JtU2V0dGluZ0NsYXNzJ11cIj5cbiAgICAgICAgICAgICAgPGRpdiBpZD1cImtjLWZvcm0tb3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVhbG0/LnJlbWVtYmVyTWUgJiYgIXVzZXJuYW1lSGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicmVtZW1iZXJNZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicmVtZW1iZXJNZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDaGVja2VkXT1cIiEhbG9naW4/LnJlbWVtYmVyTWVcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ3JlbWVtYmVyTWUnIHwgbXNnU3RyIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjRm9ybU9wdGlvbnNXcmFwcGVyQ2xhc3MnXCI+XG4gICAgICAgICAgICAgICAgQGlmIChyZWFsbT8ucmVzZXRQYXNzd29yZEFsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiNlwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwidXJsPy5sb2dpblJlc2V0Q3JlZGVudGlhbHNVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgID57eyAnZG9Gb3Jnb3RQYXNzd29yZCcgfCBtc2dTdHIgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9XCJrYy1mb3JtLWJ1dHRvbnNcIlxuICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBpZD1cImlkLWhpZGRlbi1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImNyZWRlbnRpYWxJZFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImF1dGg/LnNlbGVjdGVkQ3JlZGVudGlhbFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiN1wiXG4gICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImxvZ2luXCJcbiAgICAgICAgICAgICAgICBpZD1cImtjLWxvZ2luXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJ2RvTG9nSW4nIHwgbXNnU3RyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2dpbkJ1dHRvbkRpc2FibGVkKClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9mb3JtPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ClassKey } from
|
|
2
|
-
import { KcContext } from
|
|
3
|
-
import { ComponentReference } from
|
|
1
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
+
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class LoginConfigTotpComponent extends ComponentReference {
|
|
5
6
|
kcContext: KcContext.LoginConfigTotp;
|
|
6
7
|
doUseDefaultCss: boolean;
|
|
@@ -10,4 +11,6 @@ export declare class LoginConfigTotpComponent extends ComponentReference {
|
|
|
10
11
|
bodyClassName: import("@angular/core").InputSignal<string | undefined>;
|
|
11
12
|
displayInfo: boolean;
|
|
12
13
|
displayMessage: boolean;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoginConfigTotpComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoginConfigTotpComponent, "kc-root", never, { "displayRequiredFields": { "alias": "displayRequiredFields"; "required": false; "isSignal": true; }; "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "bodyClassName": { "alias": "bodyClassName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
16
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
|
|
2
|
+
import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '../../../lib/public-api';
|
|
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 { AdvancedMsgStrPipe } from '../../../login/pipes/advanced-msg-str.pipe';
|
|
8
|
+
import { KcSanitizePipe } from '../../../login/pipes/kc-sanitize.pipe';
|
|
9
|
+
import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class LoginConfigTotpComponent extends ComponentReference {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.kcContext = inject(KC_CONTEXT);
|
|
15
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
16
|
+
this.classes = inject(CLASSES);
|
|
17
|
+
this.displayRequiredFields = input(false);
|
|
18
|
+
this.documentTitle = input();
|
|
19
|
+
this.bodyClassName = input();
|
|
20
|
+
this.displayInfo = false;
|
|
21
|
+
this.displayMessage = this.kcContext.messagesPerField.existsError('totp', 'userLabel');
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginConfigTotpComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LoginConfigTotpComponent, isStandalone: true, selector: "kc-root", inputs: { displayRequiredFields: { classPropertyName: "displayRequiredFields", publicName: "displayRequiredFields", isSignal: true, isRequired: false, transformFunction: null }, documentTitle: { classPropertyName: "documentTitle", publicName: "documentTitle", isSignal: true, isRequired: false, transformFunction: null }, bodyClassName: { classPropertyName: "bodyClassName", publicName: "bodyClassName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
25
|
+
{
|
|
26
|
+
provide: ComponentReference,
|
|
27
|
+
useExisting: forwardRef(() => LoginConfigTotpComponent)
|
|
28
|
+
}
|
|
29
|
+
], usesInheritance: true, ngImport: i0, template: "@let totp = kcContext.totp;\n@let url = kcContext.url;\n@let messagesPerField = kcContext.messagesPerField;\n@let mode = kcContext.mode;\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 {{ 'loginTotpStep1' | msgStr }}\n </ng-container>\n <ng-container content>\n <ol id=\"kc-totp-settings\">\n <li>\n <p>{{ 'loginTotpStep1' | msgStr }}</p>\n <ul id=\"kc-totp-supported-apps\">\n @for (app of totp.supportedApplications; track app) {\n <li>{{ app | advancedMsgStr }}</li>\n }\n </ul>\n </li>\n @if (kcContext.mode === 'manual') {\n <li>\n <p>{{ 'loginTotpManualStep2' | msgStr }}</p>\n <p>\n <span id=\"kc-totp-secret-key\">{{ totp.totpSecretEncoded }}</span>\n </p>\n <p>\n <a\n href=\"{{ totp.qrUrl }}\"\n id=\"mode-barcode\"\n >\n {{ 'loginTotpScanBarcode' | msgStr }}\n </a>\n </p>\n </li>\n <li>\n <p>{{ 'loginTotpManualStep3' | msgStr }}</p>\n <p></p>\n <ul>\n <li id=\"kc-totp-type\">\n {{ 'loginTotpType' | msgStr }}: {{ 'loginTotp.' + totp.policy.type | advancedMsgStr }}\n </li>\n <li id=\"kc-totp-algorithm\">{{ 'loginTotpAlgorithm' | msgStr }}: {{ totp.policy.getAlgorithmKey() }}</li>\n <li id=\"kc-totp-digits\">{{ 'loginTotpDigits' | msgStr }}: {{ totp.policy.digits }}</li>\n @if (totp.policy.type === 'totp') {\n <li id=\"kc-totp-period\">{{ 'loginTotpInterval' | msgStr }}: {{ totp.policy.period }}</li>\n } @else {\n <li id=\"kc-totp-counter\">{{ 'loginTotpCounter' | msgStr }}: {{ totp.policy.initialCounter }}</li>\n }\n </ul>\n </li>\n } @else {\n <li>\n <p>{{ 'loginTotpStep2' | msgStr }}</p>\n <img\n id=\"kc-totp-secret-qr-code\"\n src=\"{{ 'data:image/png;base64, ' + totp.totpSecretQrCode }}\"\n alt=\"Figure: Barcode\"\n />\n <br />\n <p>\n <a\n href=\"{{ totp.manualUrl }}\"\n id=\"mode-manual\"\n >\n {{ 'loginTotpUnableToScan' | msgStr }}\n </a>\n </p>\n </li>\n }\n <li>\n <p>{{ 'loginTotpStep3' | msgStr }}</p>\n <p>{{ 'loginTotpStep3DeviceName' | msgStr }}</p>\n </li>\n </ol>\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-totp-settings-form\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <label\n for=\"totp\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ 'authenticatorCode' | msgStr }}\n </label>\n <span class=\"required\">*</span>\n </div>\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <input\n type=\"text\"\n id=\"totp\"\n name=\"totp\"\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('totp')\"\n />\n @if (messagesPerField.existsError('totp')) {\n <span\n id=\"input-error-otp-code\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('totp') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n <input\n type=\"hidden\"\n id=\"totpSecret\"\n name=\"totpSecret\"\n [value]=\"totp.totpSecret\"\n />\n @if (mode) {\n <input\n type=\"hidden\"\n id=\"mode\"\n [value]=\"mode\"\n />\n }\n </div>\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <label\n for=\"userLabel\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ 'loginTotpDeviceName' | msgStr }}\n </label>\n @if (totp.otpCredentials.length >= 1) {\n <span class=\"required\">*</span>\n }\n </div>\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <input\n type=\"text\"\n id=\"userLabel\"\n name=\"userLabel\"\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('userLabel')\"\n />\n @if (messagesPerField.existsError('userLabel')) {\n <span\n id=\"input-error-otp-label\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('userLabel') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n </div>\n <div [kcClass]=\"'kcFormGroupClass'\">\n <kc-logout-other-sessions />\n </div>\n\n @if (isAppInitiatedAction) {\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n id=\"saveTOTPBtn\"\n [value]=\"'doSubmit' | msgStr\"\n />\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass', 'kcButtonLargeClass']\"\n id=\"cancelTOTPBtn\"\n name=\"cancel-aia\"\n [value]=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n } @else {\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n id=\"saveTOTPBtn\"\n [value]=\"'doSubmit' | msgStr\"\n />\n }\n </form> </ng-container\n></kc-login-template>\n>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "pipe", type: AdvancedMsgStrPipe, name: "advancedMsgStr" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: KcSanitizePipe, name: "kcSanitize" }, { kind: "component", type: LogoutOtherSessionsComponent, selector: "kc-logout-other-sessions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginConfigTotpComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{ standalone: true, imports: [
|
|
34
|
+
TemplateComponent,
|
|
35
|
+
MsgStrPipe,
|
|
36
|
+
AdvancedMsgStrPipe,
|
|
37
|
+
KcClassDirective,
|
|
38
|
+
KcSanitizePipe,
|
|
39
|
+
LogoutOtherSessionsComponent
|
|
40
|
+
], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
41
|
+
{
|
|
42
|
+
provide: ComponentReference,
|
|
43
|
+
useExisting: forwardRef(() => LoginConfigTotpComponent)
|
|
44
|
+
}
|
|
45
|
+
], template: "@let totp = kcContext.totp;\n@let url = kcContext.url;\n@let messagesPerField = kcContext.messagesPerField;\n@let mode = kcContext.mode;\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 {{ 'loginTotpStep1' | msgStr }}\n </ng-container>\n <ng-container content>\n <ol id=\"kc-totp-settings\">\n <li>\n <p>{{ 'loginTotpStep1' | msgStr }}</p>\n <ul id=\"kc-totp-supported-apps\">\n @for (app of totp.supportedApplications; track app) {\n <li>{{ app | advancedMsgStr }}</li>\n }\n </ul>\n </li>\n @if (kcContext.mode === 'manual') {\n <li>\n <p>{{ 'loginTotpManualStep2' | msgStr }}</p>\n <p>\n <span id=\"kc-totp-secret-key\">{{ totp.totpSecretEncoded }}</span>\n </p>\n <p>\n <a\n href=\"{{ totp.qrUrl }}\"\n id=\"mode-barcode\"\n >\n {{ 'loginTotpScanBarcode' | msgStr }}\n </a>\n </p>\n </li>\n <li>\n <p>{{ 'loginTotpManualStep3' | msgStr }}</p>\n <p></p>\n <ul>\n <li id=\"kc-totp-type\">\n {{ 'loginTotpType' | msgStr }}: {{ 'loginTotp.' + totp.policy.type | advancedMsgStr }}\n </li>\n <li id=\"kc-totp-algorithm\">{{ 'loginTotpAlgorithm' | msgStr }}: {{ totp.policy.getAlgorithmKey() }}</li>\n <li id=\"kc-totp-digits\">{{ 'loginTotpDigits' | msgStr }}: {{ totp.policy.digits }}</li>\n @if (totp.policy.type === 'totp') {\n <li id=\"kc-totp-period\">{{ 'loginTotpInterval' | msgStr }}: {{ totp.policy.period }}</li>\n } @else {\n <li id=\"kc-totp-counter\">{{ 'loginTotpCounter' | msgStr }}: {{ totp.policy.initialCounter }}</li>\n }\n </ul>\n </li>\n } @else {\n <li>\n <p>{{ 'loginTotpStep2' | msgStr }}</p>\n <img\n id=\"kc-totp-secret-qr-code\"\n src=\"{{ 'data:image/png;base64, ' + totp.totpSecretQrCode }}\"\n alt=\"Figure: Barcode\"\n />\n <br />\n <p>\n <a\n href=\"{{ totp.manualUrl }}\"\n id=\"mode-manual\"\n >\n {{ 'loginTotpUnableToScan' | msgStr }}\n </a>\n </p>\n </li>\n }\n <li>\n <p>{{ 'loginTotpStep3' | msgStr }}</p>\n <p>{{ 'loginTotpStep3DeviceName' | msgStr }}</p>\n </li>\n </ol>\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-totp-settings-form\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <label\n for=\"totp\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ 'authenticatorCode' | msgStr }}\n </label>\n <span class=\"required\">*</span>\n </div>\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <input\n type=\"text\"\n id=\"totp\"\n name=\"totp\"\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('totp')\"\n />\n @if (messagesPerField.existsError('totp')) {\n <span\n id=\"input-error-otp-code\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('totp') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n <input\n type=\"hidden\"\n id=\"totpSecret\"\n name=\"totpSecret\"\n [value]=\"totp.totpSecret\"\n />\n @if (mode) {\n <input\n type=\"hidden\"\n id=\"mode\"\n [value]=\"mode\"\n />\n }\n </div>\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <label\n for=\"userLabel\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ 'loginTotpDeviceName' | msgStr }}\n </label>\n @if (totp.otpCredentials.length >= 1) {\n <span class=\"required\">*</span>\n }\n </div>\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <input\n type=\"text\"\n id=\"userLabel\"\n name=\"userLabel\"\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('userLabel')\"\n />\n @if (messagesPerField.existsError('userLabel')) {\n <span\n id=\"input-error-otp-label\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('userLabel') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n </div>\n <div [kcClass]=\"'kcFormGroupClass'\">\n <kc-logout-other-sessions />\n </div>\n\n @if (isAppInitiatedAction) {\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n id=\"saveTOTPBtn\"\n [value]=\"'doSubmit' | msgStr\"\n />\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass', 'kcButtonLargeClass']\"\n id=\"cancelTOTPBtn\"\n name=\"cancel-aia\"\n [value]=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n } @else {\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n id=\"saveTOTPBtn\"\n [value]=\"'doSubmit' | msgStr\"\n />\n }\n </form> </ng-container\n></kc-login-template>\n>\n" }]
|
|
46
|
+
}] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tY29uZmlnLXRvdHAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tY29uZmlnLXRvdHAvbG9naW4tY29uZmlnLXRvdHAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tY29uZmlnLXRvdHAvbG9naW4tY29uZmlnLXRvdHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZGQUE2RixDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBc0IzRSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsa0JBQWtCO0lBcEJoRTs7UUFxQkksY0FBUyxHQUNMLE1BQU0sQ0FBMEQsVUFBVSxDQUFDLENBQUM7UUFFdkUsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsT0FBTyxDQUFDLENBQUM7UUFDdEUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUNqRSxNQUFNLEVBQ04sV0FBVyxDQUNkLENBQUM7S0FDTDs4R0FkWSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwwZ0JBUHRCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzthQUMxRDtTQUNKLGlEQ3hDTCxrb01BOExBLDRDRHJLUSxpQkFBaUIsK0pBQ2pCLFVBQVUsMENBQ1Ysa0JBQWtCLHVEQUNsQixnQkFBZ0IsMEZBQ2hCLGNBQWMsbURBQ2QsNEJBQTRCOzsyRkFZdkIsd0JBQXdCO2tCQXBCcEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1A7d0JBQ0wsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLDRCQUE0QjtxQkFDL0IsWUFDUyxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7eUJBQzFEO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENMQVNTRVMsXG4gICAgS0NfQ09OVEVYVCxcbiAgICBVU0VfREVGQVVMVF9DU1Ncbn0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL0tjQ29udGV4dCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvbG9nb3V0LW90aGVyLXNlc3Npb25zL2xvZ291dC1vdGhlci1zZXNzaW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQWR2YW5jZWRNc2dTdHJQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMvYWR2YW5jZWQtbXNnLXN0ci5waXBlJztcbmltcG9ydCB7IEtjU2FuaXRpemVQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMva2Mtc2FuaXRpemUucGlwZSc7XG5pbXBvcnQgeyBNc2dTdHJQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMvbXNnLXN0ci5waXBlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBNc2dTdHJQaXBlLFxuICAgICAgICBBZHZhbmNlZE1zZ1N0clBpcGUsXG4gICAgICAgIEtjQ2xhc3NEaXJlY3RpdmUsXG4gICAgICAgIEtjU2FuaXRpemVQaXBlLFxuICAgICAgICBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50XG4gICAgXSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnbG9naW4tY29uZmlnLXRvdHAuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMb2dpbkNvbmZpZ1RvdHBDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29uZmlnVG90cENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFJlZmVyZW5jZSB7XG4gICAga2NDb250ZXh0ID1cbiAgICAgICAgaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2xvZ2luLWNvbmZpZy10b3RwLmZ0bCcgfT4+KEtDX0NPTlRFWFQpO1xuXG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KENMQVNTRVMpO1xuICAgIGRpc3BsYXlSZXF1aXJlZEZpZWxkcyA9IGlucHV0KGZhbHNlKTtcbiAgICBkb2N1bWVudFRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGJvZHlDbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgZGlzcGxheUluZm86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkaXNwbGF5TWVzc2FnZTogYm9vbGVhbiA9IHRoaXMua2NDb250ZXh0Lm1lc3NhZ2VzUGVyRmllbGQuZXhpc3RzRXJyb3IoXG4gICAgICAgICd0b3RwJyxcbiAgICAgICAgJ3VzZXJMYWJlbCdcbiAgICApO1xufVxuIiwiQGxldCB0b3RwID0ga2NDb250ZXh0LnRvdHA7XG5AbGV0IHVybCA9IGtjQ29udGV4dC51cmw7XG5AbGV0IG1lc3NhZ2VzUGVyRmllbGQgPSBrY0NvbnRleHQubWVzc2FnZXNQZXJGaWVsZDtcbkBsZXQgbW9kZSA9IGtjQ29udGV4dC5tb2RlO1xuQGxldCBpc0FwcEluaXRpYXRlZEFjdGlvbiA9IGtjQ29udGV4dC5pc0FwcEluaXRpYXRlZEFjdGlvbjtcbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICBbZGlzcGxheUluZm9dPVwiZGlzcGxheUluZm9cIlxuICBbYm9keUNsYXNzTmFtZV09XCJib2R5Q2xhc3NOYW1lKClcIlxuICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICBbZGlzcGxheVJlcXVpcmVkRmllbGRzXT1cImRpc3BsYXlSZXF1aXJlZEZpZWxkcygpXCJcbiAgW2RvY3VtZW50VGl0bGVdPVwiZG9jdW1lbnRUaXRsZSgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgIHt7ICdsb2dpblRvdHBTdGVwMScgfCBtc2dTdHIgfX1cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICA8b2wgaWQ9XCJrYy10b3RwLXNldHRpbmdzXCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxwPnt7ICdsb2dpblRvdHBTdGVwMScgfCBtc2dTdHIgfX08L3A+XG4gICAgICAgIDx1bCBpZD1cImtjLXRvdHAtc3VwcG9ydGVkLWFwcHNcIj5cbiAgICAgICAgICBAZm9yIChhcHAgb2YgdG90cC5zdXBwb3J0ZWRBcHBsaWNhdGlvbnM7IHRyYWNrIGFwcCkge1xuICAgICAgICAgICAgPGxpPnt7IGFwcCB8IGFkdmFuY2VkTXNnU3RyIH19PC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2xpPlxuICAgICAgQGlmIChrY0NvbnRleHQubW9kZSA9PT0gJ21hbnVhbCcpIHtcbiAgICAgICAgPGxpPlxuICAgICAgICAgIDxwPnt7ICdsb2dpblRvdHBNYW51YWxTdGVwMicgfCBtc2dTdHIgfX08L3A+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8c3BhbiBpZD1cImtjLXRvdHAtc2VjcmV0LWtleVwiPnt7IHRvdHAudG90cFNlY3JldEVuY29kZWQgfX08L3NwYW4+XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj1cInt7IHRvdHAucXJVcmwgfX1cIlxuICAgICAgICAgICAgICBpZD1cIm1vZGUtYmFyY29kZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdsb2dpblRvdHBTY2FuQmFyY29kZScgfCBtc2dTdHIgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaT5cbiAgICAgICAgICA8cD57eyAnbG9naW5Ub3RwTWFudWFsU3RlcDMnIHwgbXNnU3RyIH19PC9wPlxuICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bGkgaWQ9XCJrYy10b3RwLXR5cGVcIj5cbiAgICAgICAgICAgICAge3sgJ2xvZ2luVG90cFR5cGUnIHwgbXNnU3RyIH19OiB7eyAnbG9naW5Ub3RwLicgKyB0b3RwLnBvbGljeS50eXBlIHwgYWR2YW5jZWRNc2dTdHIgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgaWQ9XCJrYy10b3RwLWFsZ29yaXRobVwiPnt7ICdsb2dpblRvdHBBbGdvcml0aG0nIHwgbXNnU3RyIH19OiB7eyB0b3RwLnBvbGljeS5nZXRBbGdvcml0aG1LZXkoKSB9fTwvbGk+XG4gICAgICAgICAgICA8bGkgaWQ9XCJrYy10b3RwLWRpZ2l0c1wiPnt7ICdsb2dpblRvdHBEaWdpdHMnIHwgbXNnU3RyIH19OiB7eyB0b3RwLnBvbGljeS5kaWdpdHMgfX08L2xpPlxuICAgICAgICAgICAgQGlmICh0b3RwLnBvbGljeS50eXBlID09PSAndG90cCcpIHtcbiAgICAgICAgICAgICAgPGxpIGlkPVwia2MtdG90cC1wZXJpb2RcIj57eyAnbG9naW5Ub3RwSW50ZXJ2YWwnIHwgbXNnU3RyIH19OiB7eyB0b3RwLnBvbGljeS5wZXJpb2QgfX08L2xpPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxsaSBpZD1cImtjLXRvdHAtY291bnRlclwiPnt7ICdsb2dpblRvdHBDb3VudGVyJyB8IG1zZ1N0ciB9fToge3sgdG90cC5wb2xpY3kuaW5pdGlhbENvdW50ZXIgfX08L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbGk+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGxpPlxuICAgICAgICAgIDxwPnt7ICdsb2dpblRvdHBTdGVwMicgfCBtc2dTdHIgfX08L3A+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgaWQ9XCJrYy10b3RwLXNlY3JldC1xci1jb2RlXCJcbiAgICAgICAgICAgIHNyYz1cInt7ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsICcgKyB0b3RwLnRvdHBTZWNyZXRRckNvZGUgfX1cIlxuICAgICAgICAgICAgYWx0PVwiRmlndXJlOiBCYXJjb2RlXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj1cInt7IHRvdHAubWFudWFsVXJsIH19XCJcbiAgICAgICAgICAgICAgaWQ9XCJtb2RlLW1hbnVhbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdsb2dpblRvdHBVbmFibGVUb1NjYW4nIHwgbXNnU3RyIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgICAgPGxpPlxuICAgICAgICA8cD57eyAnbG9naW5Ub3RwU3RlcDMnIHwgbXNnU3RyIH19PC9wPlxuICAgICAgICA8cD57eyAnbG9naW5Ub3RwU3RlcDNEZXZpY2VOYW1lJyB8IG1zZ1N0ciB9fTwvcD5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgICA8Zm9ybVxuICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiXG4gICAgICBpZD1cImtjLXRvdHAtc2V0dGluZ3MtZm9ybVwiXG4gICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICA+XG4gICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiPlxuICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0lucHV0V3JhcHBlckNsYXNzJ1wiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwidG90cFwiXG4gICAgICAgICAgICBba2NDbGFzc109XCIna2NMYWJlbENsYXNzJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2F1dGhlbnRpY2F0b3JDb2RlJyB8IG1zZ1N0ciB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0lucHV0V3JhcHBlckNsYXNzJ1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgaWQ9XCJ0b3RwXCJcbiAgICAgICAgICAgIG5hbWU9XCJ0b3RwXCJcbiAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICBba2NDbGFzc109XCIna2NJbnB1dENsYXNzJ1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwibWVzc2FnZXNQZXJGaWVsZC5leGlzdHNFcnJvcigndG90cCcpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIEBpZiAobWVzc2FnZXNQZXJGaWVsZC5leGlzdHNFcnJvcigndG90cCcpKSB7XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBpZD1cImlucHV0LWVycm9yLW90cC1jb2RlXCJcbiAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjSW5wdXRFcnJvck1lc3NhZ2VDbGFzcydcIlxuICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VzUGVyRmllbGQuZ2V0KCd0b3RwJykgfCBrY1Nhbml0aXplOiAnaHRtbCdcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICBpZD1cInRvdHBTZWNyZXRcIlxuICAgICAgICAgIG5hbWU9XCJ0b3RwU2VjcmV0XCJcbiAgICAgICAgICBbdmFsdWVdPVwidG90cC50b3RwU2VjcmV0XCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChtb2RlKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgIGlkPVwibW9kZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwibW9kZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiPlxuICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0lucHV0V3JhcHBlckNsYXNzJ1wiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwidXNlckxhYmVsXCJcbiAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0xhYmVsQ2xhc3MnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnbG9naW5Ub3RwRGV2aWNlTmFtZScgfCBtc2dTdHIgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIEBpZiAodG90cC5vdHBDcmVkZW50aWFscy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NJbnB1dFdyYXBwZXJDbGFzcydcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGlkPVwidXNlckxhYmVsXCJcbiAgICAgICAgICAgIG5hbWU9XCJ1c2VyTGFiZWxcIlxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0Q2xhc3MnXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJtZXNzYWdlc1BlckZpZWxkLmV4aXN0c0Vycm9yKCd1c2VyTGFiZWwnKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICBAaWYgKG1lc3NhZ2VzUGVyRmllbGQuZXhpc3RzRXJyb3IoJ3VzZXJMYWJlbCcpKSB7XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBpZD1cImlucHV0LWVycm9yLW90cC1sYWJlbFwiXG4gICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0RXJyb3JNZXNzYWdlQ2xhc3MnXCJcbiAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZXNzYWdlc1BlckZpZWxkLmdldCgndXNlckxhYmVsJykgfCBrY1Nhbml0aXplOiAnaHRtbCdcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiPlxuICAgICAgICA8a2MtbG9nb3V0LW90aGVyLXNlc3Npb25zIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChpc0FwcEluaXRpYXRlZEFjdGlvbikge1xuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25QcmltYXJ5Q2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgICAgIGlkPVwic2F2ZVRPVFBCdG5cIlxuICAgICAgICAgIFt2YWx1ZV09XCInZG9TdWJtaXQnIHwgbXNnU3RyXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvbkRlZmF1bHRDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgICAgIGlkPVwiY2FuY2VsVE9UUEJ0blwiXG4gICAgICAgICAgbmFtZT1cImNhbmNlbC1haWFcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdkb0NhbmNlbCcgfCBtc2dTdHIgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICBpZD1cInNhdmVUT1RQQnRuXCJcbiAgICAgICAgICBbdmFsdWVdPVwiJ2RvU3VibWl0JyB8IG1zZ1N0clwiXG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPC9mb3JtPiA8L25nLWNvbnRhaW5lclxuPjwva2MtbG9naW4tdGVtcGxhdGU+XG4+XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ClassKey } from
|
|
2
|
-
import { KcContext } from
|
|
3
|
-
import { ComponentReference } from
|
|
1
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
+
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class LoginIdpLinkConfirmComponent extends ComponentReference {
|
|
5
6
|
kcContext: KcContext.LoginIdpLinkConfirm;
|
|
6
7
|
doUseDefaultCss: boolean;
|
|
@@ -10,4 +11,6 @@ export declare class LoginIdpLinkConfirmComponent extends ComponentReference {
|
|
|
10
11
|
bodyClassName: import("@angular/core").InputSignal<string | undefined>;
|
|
11
12
|
displayInfo: boolean;
|
|
12
13
|
displayMessage: boolean;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoginIdpLinkConfirmComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoginIdpLinkConfirmComponent, "kc-root", never, { "displayRequiredFields": { "alias": "displayRequiredFields"; "required": false; "isSignal": true; }; "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "bodyClassName": { "alias": "bodyClassName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
16
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
|
|
2
|
+
import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '../../../lib/public-api';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
5
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
6
|
+
import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class LoginIdpLinkConfirmComponent extends ComponentReference {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.kcContext = inject(KC_CONTEXT);
|
|
12
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
13
|
+
this.classes = inject(CLASSES);
|
|
14
|
+
this.displayRequiredFields = input(false);
|
|
15
|
+
this.documentTitle = input();
|
|
16
|
+
this.bodyClassName = input();
|
|
17
|
+
this.displayInfo = false;
|
|
18
|
+
this.displayMessage = false;
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginIdpLinkConfirmComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.6", type: LoginIdpLinkConfirmComponent, 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: [
|
|
22
|
+
{
|
|
23
|
+
provide: ComponentReference,
|
|
24
|
+
useExisting: forwardRef(() => LoginIdpLinkConfirmComponent)
|
|
25
|
+
}
|
|
26
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let idpAlias = kcContext.idpAlias;\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 {{ 'confirmLinkIdpTitle' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-register-form\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"submitAction\"\n id=\"updateProfile\"\n value=\"updateProfile\"\n >\n {{ 'confirmLinkIdpReviewProfile' | msgStr }}\n </button>\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"submitAction\"\n id=\"linkAccount\"\n value=\"linkAccount\"\n >\n {{ 'confirmLinkIdpContinue' | msgStr: idpAlias }}\n </button>\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: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginIdpLinkConfirmComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ standalone: true, imports: [TemplateComponent, MsgStrPipe, KcClassDirective], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
31
|
+
{
|
|
32
|
+
provide: ComponentReference,
|
|
33
|
+
useExisting: forwardRef(() => LoginIdpLinkConfirmComponent)
|
|
34
|
+
}
|
|
35
|
+
], template: "@let url = kcContext.url;\n@let idpAlias = kcContext.idpAlias;\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 {{ 'confirmLinkIdpTitle' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-register-form\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"submitAction\"\n id=\"updateProfile\"\n value=\"updateProfile\"\n >\n {{ 'confirmLinkIdpReviewProfile' | msgStr }}\n </button>\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"submitAction\"\n id=\"linkAccount\"\n value=\"linkAccount\"\n >\n {{ 'confirmLinkIdpContinue' | msgStr: idpAlias }}\n </button>\n </div>\n </form>\n </ng-container>\n</kc-login-template>\n" }]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4taWRwLWxpbmstY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9sb2dpbi9wYWdlcy9sb2dpbi1pZHAtbGluay1jb25maXJtL2xvZ2luLWlkcC1saW5rLWNvbmZpcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4taWRwLWxpbmstY29uZmlybS9sb2dpbi1pZHAtbGluay1jb25maXJtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxPQUFPLEVBQ1AsVUFBVSxFQUNWLGVBQWUsRUFDbEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUc3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBZTNFLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxrQkFBa0I7SUFicEU7O1FBY0ksY0FBUyxHQUNMLE1BQU0sQ0FBK0QsVUFBVSxDQUFDLENBQUM7UUFDNUUsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsT0FBTyxDQUFDLENBQUM7UUFDdEUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFZLEtBQUssQ0FBQztLQUNuQzs4R0FWWSw0QkFBNEI7a0dBQTVCLDRCQUE0QiwwZ0JBUDFCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQzthQUM5RDtTQUNKLGlEQzlCTCxteUNBeUNBLDRDRHBCYyxpQkFBaUIsK0pBQUUsVUFBVSwrQ0FBRSxnQkFBZ0I7OzJGQVdoRCw0QkFBNEI7a0JBYnhDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFlBQ2hELFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw2QkFBNkIsQ0FBQzt5QkFDOUQ7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ0xBU1NFUyxcbiAgICBLQ19DT05URVhULFxuICAgIFVTRV9ERUZBVUxUX0NTU1xufSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAna2V5Y2xvYWtpZnkvbG9naW4vS2NDb250ZXh0JztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZS5jbGFzcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbnRhaW5lcnMvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEtjQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9kaXJlY3RpdmVzL2tjLWNsYXNzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNc2dTdHJQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMvbXNnLXN0ci5waXBlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGVtcGxhdGVDb21wb25lbnQsIE1zZ1N0clBpcGUsIEtjQ2xhc3NEaXJlY3RpdmVdLFxuICAgIHNlbGVjdG9yOiAna2Mtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICdsb2dpbi1pZHAtbGluay1jb25maXJtLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ29tcG9uZW50UmVmZXJlbmNlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTG9naW5JZHBMaW5rQ29uZmlybUNvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5JZHBMaW5rQ29uZmlybUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFJlZmVyZW5jZSB7XG4gICAga2NDb250ZXh0ID1cbiAgICAgICAgaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2xvZ2luLWlkcC1saW5rLWNvbmZpcm0uZnRsJyB9Pj4oS0NfQ09OVEVYVCk7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KENMQVNTRVMpO1xuICAgIGRpc3BsYXlSZXF1aXJlZEZpZWxkcyA9IGlucHV0KGZhbHNlKTtcbiAgICBkb2N1bWVudFRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGJvZHlDbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgZGlzcGxheUluZm86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkaXNwbGF5TWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCBpZHBBbGlhcyA9IGtjQ29udGV4dC5pZHBBbGlhcztcbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICBbZGlzcGxheUluZm9dPVwiZGlzcGxheUluZm9cIlxuICBbYm9keUNsYXNzTmFtZV09XCJib2R5Q2xhc3NOYW1lKClcIlxuICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICBbZGlzcGxheVJlcXVpcmVkRmllbGRzXT1cImRpc3BsYXlSZXF1aXJlZEZpZWxkcygpXCJcbiAgW2RvY3VtZW50VGl0bGVdPVwiZG9jdW1lbnRUaXRsZSgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgIHt7ICdjb25maXJtTGlua0lkcFRpdGxlJyB8IG1zZ1N0ciB9fVxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgIDxmb3JtXG4gICAgICBpZD1cImtjLXJlZ2lzdGVyLWZvcm1cIlxuICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgPlxuICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvbkRlZmF1bHRDbGFzcycsICdrY0J1dHRvbkJsb2NrQ2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgICAgIG5hbWU9XCJzdWJtaXRBY3Rpb25cIlxuICAgICAgICAgIGlkPVwidXBkYXRlUHJvZmlsZVwiXG4gICAgICAgICAgdmFsdWU9XCJ1cGRhdGVQcm9maWxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdjb25maXJtTGlua0lkcFJldmlld1Byb2ZpbGUnIHwgbXNnU3RyIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgbmFtZT1cInN1Ym1pdEFjdGlvblwiXG4gICAgICAgICAgaWQ9XCJsaW5rQWNjb3VudFwiXG4gICAgICAgICAgdmFsdWU9XCJsaW5rQWNjb3VudFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnY29uZmlybUxpbmtJZHBDb250aW51ZScgfCBtc2dTdHI6IGlkcEFsaWFzIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
|
package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ClassKey } from
|
|
2
|
-
import { KcContext } from
|
|
3
|
-
import { ComponentReference } from
|
|
1
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
+
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class LoginIdpLinkConfirmOverrideComponent extends ComponentReference {
|
|
5
6
|
kcContext: KcContext.LoginIdpLinkConfirmOverride;
|
|
6
7
|
doUseDefaultCss: boolean;
|
|
@@ -10,4 +11,6 @@ export declare class LoginIdpLinkConfirmOverrideComponent extends ComponentRefer
|
|
|
10
11
|
bodyClassName: import("@angular/core").InputSignal<string | undefined>;
|
|
11
12
|
displayInfo: boolean;
|
|
12
13
|
displayMessage: boolean;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoginIdpLinkConfirmOverrideComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoginIdpLinkConfirmOverrideComponent, "kc-root", never, { "displayRequiredFields": { "alias": "displayRequiredFields"; "required": false; "isSignal": true; }; "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "bodyClassName": { "alias": "bodyClassName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
16
|
}
|
package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
|
|
2
|
+
import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '../../../lib/public-api';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
5
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
6
|
+
import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class LoginIdpLinkConfirmOverrideComponent extends ComponentReference {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.kcContext = inject(KC_CONTEXT);
|
|
12
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
13
|
+
this.classes = inject(CLASSES);
|
|
14
|
+
this.displayRequiredFields = input(false);
|
|
15
|
+
this.documentTitle = input();
|
|
16
|
+
this.bodyClassName = input();
|
|
17
|
+
this.displayInfo = false;
|
|
18
|
+
this.displayMessage = false;
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginIdpLinkConfirmOverrideComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.6", type: LoginIdpLinkConfirmOverrideComponent, 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: [
|
|
22
|
+
{
|
|
23
|
+
provide: ComponentReference,
|
|
24
|
+
useExisting: forwardRef(() => LoginIdpLinkConfirmOverrideComponent)
|
|
25
|
+
}
|
|
26
|
+
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let idpDisplayName = kcContext.idpDisplayName;\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 {{ 'confirmOverrideIdpTitle' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-register-form\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n {{ 'pageExpiredMsg1' | msgStr }}\n <a\n id=\"loginRestartLink\"\n [href]=\"url.loginRestartFlowUrl\"\n >\n {{ 'doClickHere' | msgStr }}\n </a>\n <br />\n <br />\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"submitAction\"\n id=\"confirmOverride\"\n value=\"confirmOverride\"\n >\n {{ 'confirmOverrideIdpContinue' | msgStr: idpDisplayName }}\n </button>\n </form>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginIdpLinkConfirmOverrideComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, MsgStrPipe], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
31
|
+
{
|
|
32
|
+
provide: ComponentReference,
|
|
33
|
+
useExisting: forwardRef(() => LoginIdpLinkConfirmOverrideComponent)
|
|
34
|
+
}
|
|
35
|
+
], template: "@let url = kcContext.url;\n@let idpDisplayName = kcContext.idpDisplayName;\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 {{ 'confirmOverrideIdpTitle' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-register-form\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n {{ 'pageExpiredMsg1' | msgStr }}\n <a\n id=\"loginRestartLink\"\n [href]=\"url.loginRestartFlowUrl\"\n >\n {{ 'doClickHere' | msgStr }}\n </a>\n <br />\n <br />\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"submitAction\"\n id=\"confirmOverride\"\n value=\"confirmOverride\"\n >\n {{ 'confirmOverrideIdpContinue' | msgStr: idpDisplayName }}\n </button>\n </form>\n </ng-container>\n</kc-login-template>\n" }]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4taWRwLWxpbmstY29uZmlybS1vdmVycmlkZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9sb2dpbi9wYWdlcy9sb2dpbi1pZHAtbGluay1jb25maXJtLW92ZXJyaWRlL2xvZ2luLWlkcC1saW5rLWNvbmZpcm0tb3ZlcnJpZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4taWRwLWxpbmstY29uZmlybS1vdmVycmlkZS9sb2dpbi1pZHAtbGluay1jb25maXJtLW92ZXJyaWRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxPQUFPLEVBQ1AsVUFBVSxFQUNWLGVBQWUsRUFDbEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUc3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBZTNFLE1BQU0sT0FBTyxvQ0FBcUMsU0FBUSxrQkFBa0I7SUFiNUU7O1FBY0ksY0FBUyxHQUNMLE1BQU0sQ0FDRixVQUFVLENBQ2IsQ0FBQztRQUNHLG9CQUFlLEdBQUcsTUFBTSxDQUFVLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQW9DLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLDBCQUFxQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7S0FDbkM7OEdBWlksb0NBQW9DO2tHQUFwQyxvQ0FBb0MsMGdCQVBsQztZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0NBQW9DLENBQUM7YUFDdEU7U0FDSixpREM5QkwsMG5DQXdDQSw0Q0RuQmMsZ0JBQWdCLCtGQUFFLGlCQUFpQiwrSkFBRSxVQUFVOzsyRkFXaEQsb0NBQW9DO2tCQWJoRCxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxZQUNoRCxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUNBQXFDLENBQUM7eUJBQ3RFO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENMQVNTRVMsXG4gICAgS0NfQ09OVEVYVCxcbiAgICBVU0VfREVGQVVMVF9DU1Ncbn0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL0tjQ29udGV4dCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTXNnU3RyUGlwZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3BpcGVzL21zZy1zdHIucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0tjQ2xhc3NEaXJlY3RpdmUsIFRlbXBsYXRlQ29tcG9uZW50LCBNc2dTdHJQaXBlXSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnbG9naW4taWRwLWxpbmstY29uZmlybS1vdmVycmlkZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvZ2luSWRwTGlua0NvbmZpcm1PdmVycmlkZUNvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5JZHBMaW5rQ29uZmlybU92ZXJyaWRlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPVxuICAgICAgICBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnbG9naW4taWRwLWxpbmstY29uZmlybS1vdmVycmlkZS5mdGwnIH0+PihcbiAgICAgICAgICAgIEtDX0NPTlRFWFRcbiAgICAgICAgKTtcbiAgICBvdmVycmlkZSBkb1VzZURlZmF1bHRDc3MgPSBpbmplY3Q8Ym9vbGVhbj4oVVNFX0RFRkFVTFRfQ1NTKTtcbiAgICBvdmVycmlkZSBjbGFzc2VzID0gaW5qZWN0PFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+Pj4oQ0xBU1NFUyk7XG4gICAgZGlzcGxheVJlcXVpcmVkRmllbGRzID0gaW5wdXQoZmFsc2UpO1xuICAgIGRvY3VtZW50VGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgYm9keUNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCJAbGV0IHVybCA9IGtjQ29udGV4dC51cmw7XG5AbGV0IGlkcERpc3BsYXlOYW1lID0ga2NDb250ZXh0LmlkcERpc3BsYXlOYW1lO1xuXG48a2MtbG9naW4tdGVtcGxhdGVcbiAgW2Rpc3BsYXlJbmZvXT1cImRpc3BsYXlJbmZvXCJcbiAgW2JvZHlDbGFzc05hbWVdPVwiYm9keUNsYXNzTmFtZSgpXCJcbiAgW2Rpc3BsYXlNZXNzYWdlXT1cImRpc3BsYXlNZXNzYWdlXCJcbiAgW2Rpc3BsYXlSZXF1aXJlZEZpZWxkc109XCJkaXNwbGF5UmVxdWlyZWRGaWVsZHMoKVwiXG4gIFtkb2N1bWVudFRpdGxlXT1cImRvY3VtZW50VGl0bGUoKVwiXG4+XG4gIDxuZy1jb250YWluZXIgaGVhZGVyTm9kZT5cbiAgICB7eyAnY29uZmlybU92ZXJyaWRlSWRwVGl0bGUnIHwgbXNnU3RyIH19XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyIGNvbnRlbnQ+XG4gICAgPGZvcm1cbiAgICAgIGlkPVwia2MtcmVnaXN0ZXItZm9ybVwiXG4gICAgICBbYWN0aW9uXT1cInVybC5sb2dpbkFjdGlvblwiXG4gICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICA+XG4gICAgICB7eyAncGFnZUV4cGlyZWRNc2cxJyB8IG1zZ1N0ciB9fVxuICAgICAgPGFcbiAgICAgICAgaWQ9XCJsb2dpblJlc3RhcnRMaW5rXCJcbiAgICAgICAgW2hyZWZdPVwidXJsLmxvZ2luUmVzdGFydEZsb3dVcmxcIlxuICAgICAgPlxuICAgICAgICB7eyAnZG9DbGlja0hlcmUnIHwgbXNnU3RyIH19XG4gICAgICA8L2E+XG4gICAgICA8YnIgLz5cbiAgICAgIDxiciAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgIG5hbWU9XCJzdWJtaXRBY3Rpb25cIlxuICAgICAgICBpZD1cImNvbmZpcm1PdmVycmlkZVwiXG4gICAgICAgIHZhbHVlPVwiY29uZmlybU92ZXJyaWRlXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2NvbmZpcm1PdmVycmlkZUlkcENvbnRpbnVlJyB8IG1zZ1N0cjogaWRwRGlzcGxheU5hbWUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ClassKey } from
|
|
2
|
-
import { KcContext } from
|
|
3
|
-
import { ComponentReference } from
|
|
1
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
+
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class LoginIdpLinkEmailComponent extends ComponentReference {
|
|
5
6
|
kcContext: KcContext.LoginIdpLinkEmail;
|
|
6
7
|
doUseDefaultCss: boolean;
|
|
@@ -10,4 +11,6 @@ export declare class LoginIdpLinkEmailComponent extends ComponentReference {
|
|
|
10
11
|
bodyClassName: import("@angular/core").InputSignal<string | undefined>;
|
|
11
12
|
displayInfo: boolean;
|
|
12
13
|
displayMessage: boolean;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoginIdpLinkEmailComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoginIdpLinkEmailComponent, "kc-root", never, { "displayRequiredFields": { "alias": "displayRequiredFields"; "required": false; "isSignal": true; }; "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "bodyClassName": { "alias": "bodyClassName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
16
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
|
|
2
|
+
import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '../../../lib/public-api';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
5
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
6
|
+
import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class LoginIdpLinkEmailComponent extends ComponentReference {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.kcContext = inject(KC_CONTEXT);
|
|
12
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
13
|
+
this.classes = inject(CLASSES);
|
|
14
|
+
this.displayRequiredFields = input(false);
|
|
15
|
+
this.documentTitle = input();
|
|
16
|
+
this.bodyClassName = input();
|
|
17
|
+
this.displayInfo = false;
|
|
18
|
+
this.displayMessage = false;
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginIdpLinkEmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.6", type: LoginIdpLinkEmailComponent, 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: [
|
|
22
|
+
{
|
|
23
|
+
provide: ComponentReference,
|
|
24
|
+
useExisting: forwardRef(() => LoginIdpLinkEmailComponent)
|
|
25
|
+
}
|
|
26
|
+
], usesInheritance: true, ngImport: i0, template: "@let idpAlias = kcContext.idpAlias;\n@let brokerContext = kcContext.brokerContext;\n@let realm = kcContext.realm;\n@let url = kcContext.url;\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 {{ 'emailLinkIdpTitle' | msgStr: idpAlias }}\n </ng-container>\n <ng-container content>\n <p\n id=\"instruction1\"\n class=\"instruction\"\n >\n {{ 'emailLinkIdp1' | msgStr: idpAlias : brokerContext.username : realm.displayName }}\n </p>\n <p\n id=\"instruction2\"\n class=\"instruction\"\n >\n {{ 'emailLinkIdp2' | msgStr }} <a [href]=\"url.loginAction\">{{ 'doClickHere' | msgStr }}</a>\n {{ 'emailLinkIdp3' | msgStr }}\n </p>\n <p\n id=\"instruction3\"\n class=\"instruction\"\n >\n {{ 'emailLinkIdp4' | msgStr }} <a [href]=\"url.loginAction\">{{ 'doClickHere' | msgStr }}</a>\n {{ 'emailLinkIdp5' | msgStr }}\n </p></ng-container\n >\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginIdpLinkEmailComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ standalone: true, imports: [TemplateComponent, MsgStrPipe, KcClassDirective], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
31
|
+
{
|
|
32
|
+
provide: ComponentReference,
|
|
33
|
+
useExisting: forwardRef(() => LoginIdpLinkEmailComponent)
|
|
34
|
+
}
|
|
35
|
+
], template: "@let idpAlias = kcContext.idpAlias;\n@let brokerContext = kcContext.brokerContext;\n@let realm = kcContext.realm;\n@let url = kcContext.url;\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 {{ 'emailLinkIdpTitle' | msgStr: idpAlias }}\n </ng-container>\n <ng-container content>\n <p\n id=\"instruction1\"\n class=\"instruction\"\n >\n {{ 'emailLinkIdp1' | msgStr: idpAlias : brokerContext.username : realm.displayName }}\n </p>\n <p\n id=\"instruction2\"\n class=\"instruction\"\n >\n {{ 'emailLinkIdp2' | msgStr }} <a [href]=\"url.loginAction\">{{ 'doClickHere' | msgStr }}</a>\n {{ 'emailLinkIdp3' | msgStr }}\n </p>\n <p\n id=\"instruction3\"\n class=\"instruction\"\n >\n {{ 'emailLinkIdp4' | msgStr }} <a [href]=\"url.loginAction\">{{ 'doClickHere' | msgStr }}</a>\n {{ 'emailLinkIdp5' | msgStr }}\n </p></ng-container\n >\n</kc-login-template>\n" }]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4taWRwLWxpbmstZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4taWRwLWxpbmstZW1haWwvbG9naW4taWRwLWxpbmstZW1haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4taWRwLWxpbmstZW1haWwvbG9naW4taWRwLWxpbmstZW1haWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFlM0UsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGtCQUFrQjtJQWJsRTs7UUFjSSxjQUFTLEdBQ0wsTUFBTSxDQUE2RCxVQUFVLENBQUMsQ0FBQztRQUMxRSxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxPQUFPLENBQUMsQ0FBQztRQUN0RSwwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQVksS0FBSyxDQUFDO0tBQ25DOzhHQVZZLDBCQUEwQjtrR0FBMUIsMEJBQTBCLDBnQkFQeEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO2FBQzVEO1NBQ0osaURDOUJMLCtuQ0FxQ0EsNENEaEJjLGlCQUFpQiwrSkFBRSxVQUFVOzsyRkFXOUIsMEJBQTBCO2tCQWJ0QyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxZQUNoRCxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7eUJBQzVEO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENMQVNTRVMsXG4gICAgS0NfQ09OVEVYVCxcbiAgICBVU0VfREVGQVVMVF9DU1Ncbn0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL0tjQ29udGV4dCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTXNnU3RyUGlwZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3BpcGVzL21zZy1zdHIucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RlbXBsYXRlQ29tcG9uZW50LCBNc2dTdHJQaXBlLCBLY0NsYXNzRGlyZWN0aXZlXSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnbG9naW4taWRwLWxpbmstZW1haWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMb2dpbklkcExpbmtFbWFpbENvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5JZHBMaW5rRW1haWxDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGtjQ29udGV4dCA9XG4gICAgICAgIGluamVjdDxFeHRyYWN0PEtjQ29udGV4dCwgeyBwYWdlSWQ6ICdsb2dpbi1pZHAtbGluay1lbWFpbC5mdGwnIH0+PihLQ19DT05URVhUKTtcbiAgICBvdmVycmlkZSBkb1VzZURlZmF1bHRDc3MgPSBpbmplY3Q8Ym9vbGVhbj4oVVNFX0RFRkFVTFRfQ1NTKTtcbiAgICBvdmVycmlkZSBjbGFzc2VzID0gaW5qZWN0PFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+Pj4oQ0xBU1NFUyk7XG4gICAgZGlzcGxheVJlcXVpcmVkRmllbGRzID0gaW5wdXQoZmFsc2UpO1xuICAgIGRvY3VtZW50VGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgYm9keUNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCJAbGV0IGlkcEFsaWFzID0ga2NDb250ZXh0LmlkcEFsaWFzO1xuQGxldCBicm9rZXJDb250ZXh0ID0ga2NDb250ZXh0LmJyb2tlckNvbnRleHQ7XG5AbGV0IHJlYWxtID0ga2NDb250ZXh0LnJlYWxtO1xuQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuPGtjLWxvZ2luLXRlbXBsYXRlXG4gIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gIFtkaXNwbGF5TWVzc2FnZV09XCJkaXNwbGF5TWVzc2FnZVwiXG4gIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICA8bmctY29udGFpbmVyIGhlYWRlck5vZGU+XG4gICAge3sgJ2VtYWlsTGlua0lkcFRpdGxlJyB8IG1zZ1N0cjogaWRwQWxpYXMgfX1cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICA8cFxuICAgICAgaWQ9XCJpbnN0cnVjdGlvbjFcIlxuICAgICAgY2xhc3M9XCJpbnN0cnVjdGlvblwiXG4gICAgPlxuICAgICAge3sgJ2VtYWlsTGlua0lkcDEnIHwgbXNnU3RyOiBpZHBBbGlhcyA6IGJyb2tlckNvbnRleHQudXNlcm5hbWUgOiByZWFsbS5kaXNwbGF5TmFtZSB9fVxuICAgIDwvcD5cbiAgICA8cFxuICAgICAgaWQ9XCJpbnN0cnVjdGlvbjJcIlxuICAgICAgY2xhc3M9XCJpbnN0cnVjdGlvblwiXG4gICAgPlxuICAgICAge3sgJ2VtYWlsTGlua0lkcDInIHwgbXNnU3RyIH19IDxhIFtocmVmXT1cInVybC5sb2dpbkFjdGlvblwiPnt7ICdkb0NsaWNrSGVyZScgfCBtc2dTdHIgfX08L2E+XG4gICAgICB7eyAnZW1haWxMaW5rSWRwMycgfCBtc2dTdHIgfX1cbiAgICA8L3A+XG4gICAgPHBcbiAgICAgIGlkPVwiaW5zdHJ1Y3Rpb24zXCJcbiAgICAgIGNsYXNzPVwiaW5zdHJ1Y3Rpb25cIlxuICAgID5cbiAgICAgIHt7ICdlbWFpbExpbmtJZHA0JyB8IG1zZ1N0ciB9fSA8YSBbaHJlZl09XCJ1cmwubG9naW5BY3Rpb25cIj57eyAnZG9DbGlja0hlcmUnIHwgbXNnU3RyIH19PC9hPlxuICAgICAge3sgJ2VtYWlsTGlua0lkcDUnIHwgbXNnU3RyIH19XG4gICAgPC9wPjwvbmctY29udGFpbmVyXG4gID5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ClassKey } from
|
|
2
|
-
import { KcContext } from
|
|
3
|
-
import { ComponentReference } from
|
|
1
|
+
import { ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
2
|
+
import { KcContext } from 'keycloakify/login/KcContext';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class LoginOauthGrantComponent extends ComponentReference {
|
|
5
6
|
kcContext: KcContext.LoginOauthGrant;
|
|
6
7
|
doUseDefaultCss: boolean;
|
|
@@ -10,4 +11,6 @@ export declare class LoginOauthGrantComponent extends ComponentReference {
|
|
|
10
11
|
bodyClassName: import("@angular/core").InputSignal<string>;
|
|
11
12
|
displayInfo: boolean;
|
|
12
13
|
displayMessage: boolean;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoginOauthGrantComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoginOauthGrantComponent, "kc-root", never, { "displayRequiredFields": { "alias": "displayRequiredFields"; "required": false; "isSignal": true; }; "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "bodyClassName": { "alias": "bodyClassName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
16
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
|
|
2
|
+
import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '../../../lib/public-api';
|
|
3
|
+
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
|
+
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
5
|
+
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
6
|
+
import { AdvancedMsgStrPipe } from '../../../login/pipes/advanced-msg-str.pipe';
|
|
7
|
+
import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class LoginOauthGrantComponent extends ComponentReference {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.kcContext = inject(KC_CONTEXT);
|
|
13
|
+
this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
|
|
14
|
+
this.classes = inject(CLASSES);
|
|
15
|
+
this.displayRequiredFields = input(false);
|
|
16
|
+
this.documentTitle = input();
|
|
17
|
+
this.bodyClassName = input('oauth');
|
|
18
|
+
this.displayInfo = false;
|
|
19
|
+
this.displayMessage = false;
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginOauthGrantComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LoginOauthGrantComponent, 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: [
|
|
23
|
+
{
|
|
24
|
+
provide: ComponentReference,
|
|
25
|
+
useExisting: forwardRef(() => LoginOauthGrantComponent)
|
|
26
|
+
}
|
|
27
|
+
], usesInheritance: true, ngImport: i0, template: "@let client = kcContext.client;\n@let oauth = kcContext.oauth;\n@let url = kcContext.url;\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 @if (client.attributes['logoUri']) {\n <img\n [src]=\"client.attributes['logoUri']\"\n alt=\"\"\n />\n }\n <p>{{ 'oauthGrantTitle' | msgStr: (client.name ? (client.name | advancedMsgStr) : client.clientId) }}</p>\n </ng-container>\n\n <ng-container content>\n <div\n id=\"kc-oauth\"\n class=\"content-area\"\n >\n <h3>{{ 'oauthGrantRequest' | msgStr }}</h3>\n <ul>\n @for (clientScope of oauth.clientScopesRequested; track clientScope) {\n <li>\n <span>\n {{ clientScope.consentScreenText | advancedMsgStr }}\n @if (clientScope.dynamicScopeParameter) {\n : <b>{{ clientScope.dynamicScopeParameter }}</b>\n }\n </span>\n </li>\n }\n </ul>\n\n @if (client.attributes['policyUri'] || client.attributes['tosUri']) {\n <h3>\n @if (client.name) {\n {{ 'oauthGrantInformation' | msgStr: (client.name | advancedMsgStr) }}\n } @else {\n {{ 'oauthGrantInformation' | msgStr: client.clientId }}\n }\n @if (client.attributes['policyUri']) {\n {{ 'oauthGrantReview' | msgStr }}\n <a\n [href]=\"client.attributes['policyUri']\"\n target=\"_blank\"\n >\n {{ 'oauthGrantPolicy' | msgStr }}\n </a>\n }\n </h3>\n }\n <form\n class=\"form-actions\"\n [action]=\"url.oauthAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n name=\"code\"\n [value]=\"oauth.code\"\n />\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div id=\"kc-form-options\">\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n\n <div id=\"kc-form-buttons\">\n <div [kcClass]=\"'kcFormButtonsWrapperClass'\">\n <input\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n [value]=\"'doYes' | msgStr\"\n />\n <input\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n [value]=\"'doNo' | msgStr\"\n />\n </div>\n </div>\n </div>\n </form>\n <div className=\"clearfix\"></div>\n </div>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "pipe", type: AdvancedMsgStrPipe, name: "advancedMsgStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginOauthGrantComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, MsgStrPipe, AdvancedMsgStrPipe], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
32
|
+
{
|
|
33
|
+
provide: ComponentReference,
|
|
34
|
+
useExisting: forwardRef(() => LoginOauthGrantComponent)
|
|
35
|
+
}
|
|
36
|
+
], template: "@let client = kcContext.client;\n@let oauth = kcContext.oauth;\n@let url = kcContext.url;\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 @if (client.attributes['logoUri']) {\n <img\n [src]=\"client.attributes['logoUri']\"\n alt=\"\"\n />\n }\n <p>{{ 'oauthGrantTitle' | msgStr: (client.name ? (client.name | advancedMsgStr) : client.clientId) }}</p>\n </ng-container>\n\n <ng-container content>\n <div\n id=\"kc-oauth\"\n class=\"content-area\"\n >\n <h3>{{ 'oauthGrantRequest' | msgStr }}</h3>\n <ul>\n @for (clientScope of oauth.clientScopesRequested; track clientScope) {\n <li>\n <span>\n {{ clientScope.consentScreenText | advancedMsgStr }}\n @if (clientScope.dynamicScopeParameter) {\n : <b>{{ clientScope.dynamicScopeParameter }}</b>\n }\n </span>\n </li>\n }\n </ul>\n\n @if (client.attributes['policyUri'] || client.attributes['tosUri']) {\n <h3>\n @if (client.name) {\n {{ 'oauthGrantInformation' | msgStr: (client.name | advancedMsgStr) }}\n } @else {\n {{ 'oauthGrantInformation' | msgStr: client.clientId }}\n }\n @if (client.attributes['policyUri']) {\n {{ 'oauthGrantReview' | msgStr }}\n <a\n [href]=\"client.attributes['policyUri']\"\n target=\"_blank\"\n >\n {{ 'oauthGrantPolicy' | msgStr }}\n </a>\n }\n </h3>\n }\n <form\n class=\"form-actions\"\n [action]=\"url.oauthAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n name=\"code\"\n [value]=\"oauth.code\"\n />\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div id=\"kc-form-options\">\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n\n <div id=\"kc-form-buttons\">\n <div [kcClass]=\"'kcFormButtonsWrapperClass'\">\n <input\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n [value]=\"'doYes' | msgStr\"\n />\n <input\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n [value]=\"'doNo' | msgStr\"\n />\n </div>\n </div>\n </div>\n </form>\n <div className=\"clearfix\"></div>\n </div>\n </ng-container>\n</kc-login-template>\n" }]
|
|
37
|
+
}] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tb2F1dGgtZ3JhbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tb2F1dGgtZ3JhbnQvbG9naW4tb2F1dGgtZ3JhbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvbG9naW4tb2F1dGgtZ3JhbnQvbG9naW4tb2F1dGgtZ3JhbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFlM0UsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjtJQWJoRTs7UUFjSSxjQUFTLEdBQ0wsTUFBTSxDQUEwRCxVQUFVLENBQUMsQ0FBQztRQUN2RSxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxPQUFPLENBQUMsQ0FBQztRQUN0RSwwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUN2QyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFZLEtBQUssQ0FBQztLQUNuQzs4R0FWWSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwwZ0JBUHRCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzthQUMxRDtTQUNKLGlEQy9CTCwrMEZBNEZBLDRDRHRFYyxnQkFBZ0IsK0ZBQUUsaUJBQWlCLCtKQUFFLFVBQVUsMENBQUUsa0JBQWtCOzsyRkFXcEUsd0JBQXdCO2tCQWJwQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxZQUNwRSxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7eUJBQzFEO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENMQVNTRVMsXG4gICAgS0NfQ09OVEVYVCxcbiAgICBVU0VfREVGQVVMVF9DU1Ncbn0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL0tjQ29udGV4dCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQWR2YW5jZWRNc2dTdHJQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMvYWR2YW5jZWQtbXNnLXN0ci5waXBlJztcbmltcG9ydCB7IE1zZ1N0clBpcGUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9waXBlcy9tc2ctc3RyLnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLY0NsYXNzRGlyZWN0aXZlLCBUZW1wbGF0ZUNvbXBvbmVudCwgTXNnU3RyUGlwZSwgQWR2YW5jZWRNc2dTdHJQaXBlXSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnbG9naW4tb2F1dGgtZ3JhbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMb2dpbk9hdXRoR3JhbnRDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luT2F1dGhHcmFudENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFJlZmVyZW5jZSB7XG4gICAga2NDb250ZXh0ID1cbiAgICAgICAgaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2xvZ2luLW9hdXRoLWdyYW50LmZ0bCcgfT4+KEtDX0NPTlRFWFQpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihDTEFTU0VTKTtcbiAgICBkaXNwbGF5UmVxdWlyZWRGaWVsZHMgPSBpbnB1dChmYWxzZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPignb2F1dGgnKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCJAbGV0IGNsaWVudCA9IGtjQ29udGV4dC5jbGllbnQ7XG5AbGV0IG9hdXRoID0ga2NDb250ZXh0Lm9hdXRoO1xuQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuPGtjLWxvZ2luLXRlbXBsYXRlXG4gIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gIFtkaXNwbGF5TWVzc2FnZV09XCJkaXNwbGF5TWVzc2FnZVwiXG4gIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICA8bmctY29udGFpbmVyIGhlYWRlck5vZGU+XG4gICAgQGlmIChjbGllbnQuYXR0cmlidXRlc1snbG9nb1VyaSddKSB7XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiY2xpZW50LmF0dHJpYnV0ZXNbJ2xvZ29VcmknXVwiXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAvPlxuICAgIH1cbiAgICA8cD57eyAnb2F1dGhHcmFudFRpdGxlJyB8IG1zZ1N0cjogKGNsaWVudC5uYW1lID8gKGNsaWVudC5uYW1lIHwgYWR2YW5jZWRNc2dTdHIpIDogY2xpZW50LmNsaWVudElkKSB9fTwvcD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgIDxkaXZcbiAgICAgIGlkPVwia2Mtb2F1dGhcIlxuICAgICAgY2xhc3M9XCJjb250ZW50LWFyZWFcIlxuICAgID5cbiAgICAgIDxoMz57eyAnb2F1dGhHcmFudFJlcXVlc3QnIHwgbXNnU3RyIH19PC9oMz5cbiAgICAgIDx1bD5cbiAgICAgICAgQGZvciAoY2xpZW50U2NvcGUgb2Ygb2F1dGguY2xpZW50U2NvcGVzUmVxdWVzdGVkOyB0cmFjayBjbGllbnRTY29wZSkge1xuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7eyBjbGllbnRTY29wZS5jb25zZW50U2NyZWVuVGV4dCB8IGFkdmFuY2VkTXNnU3RyIH19XG4gICAgICAgICAgICAgIEBpZiAoY2xpZW50U2NvcGUuZHluYW1pY1Njb3BlUGFyYW1ldGVyKSB7XG4gICAgICAgICAgICAgICAgOiA8Yj57eyBjbGllbnRTY29wZS5keW5hbWljU2NvcGVQYXJhbWV0ZXIgfX08L2I+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgICA8L3VsPlxuXG4gICAgICBAaWYgKGNsaWVudC5hdHRyaWJ1dGVzWydwb2xpY3lVcmknXSB8fCBjbGllbnQuYXR0cmlidXRlc1sndG9zVXJpJ10pIHtcbiAgICAgICAgPGgzPlxuICAgICAgICAgIEBpZiAoY2xpZW50Lm5hbWUpIHtcbiAgICAgICAgICAgIHt7ICdvYXV0aEdyYW50SW5mb3JtYXRpb24nIHwgbXNnU3RyOiAoY2xpZW50Lm5hbWUgfCBhZHZhbmNlZE1zZ1N0cikgfX1cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIHt7ICdvYXV0aEdyYW50SW5mb3JtYXRpb24nIHwgbXNnU3RyOiBjbGllbnQuY2xpZW50SWQgfX1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjbGllbnQuYXR0cmlidXRlc1sncG9saWN5VXJpJ10pIHtcbiAgICAgICAgICAgIHt7ICdvYXV0aEdyYW50UmV2aWV3JyB8IG1zZ1N0ciB9fVxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgW2hyZWZdPVwiY2xpZW50LmF0dHJpYnV0ZXNbJ3BvbGljeVVyaSddXCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ29hdXRoR3JhbnRQb2xpY3knIHwgbXNnU3RyIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgfVxuICAgICAgICA8L2gzPlxuICAgICAgfVxuICAgICAgPGZvcm1cbiAgICAgICAgY2xhc3M9XCJmb3JtLWFjdGlvbnNcIlxuICAgICAgICBbYWN0aW9uXT1cInVybC5vYXV0aEFjdGlvblwiXG4gICAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICBuYW1lPVwiY29kZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIm9hdXRoLmNvZGVcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiPlxuICAgICAgICAgIDxkaXYgaWQ9XCJrYy1mb3JtLW9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjRm9ybU9wdGlvbnNXcmFwcGVyQ2xhc3MnXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGlkPVwia2MtZm9ybS1idXR0b25zXCI+XG4gICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1CdXR0b25zV3JhcHBlckNsYXNzJ1wiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25QcmltYXJ5Q2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCInZG9ZZXMnIHwgbXNnU3RyXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJ2RvTm8nIHwgbXNnU3RyXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2xlYXJmaXhcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2tjLWxvZ2luLXRlbXBsYXRlPlxuIl19
|