keycloakify 10.1.0-rc.1 → 10.1.1
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/PUBLIC_URL.js +2 -2
- package/PUBLIC_URL.js.map +1 -1
- package/account/KcContext/kcContextMocks.js +3 -3
- package/account/KcContext/kcContextMocks.js.map +1 -1
- package/bin/193.index.js +198 -62
- package/bin/{365.index.js → 20.index.js} +302 -263
- package/bin/31.index.js +15 -23
- package/bin/{430.index.js → 33.index.js} +579 -4
- package/bin/{678.index.js → 36.index.js} +2 -577
- package/bin/{440.index.js → 499.index.js} +259 -181
- package/bin/526.index.js +12 -793
- package/bin/599.index.js +4 -1
- package/bin/780.index.js +1 -1
- package/bin/{525.index.js → 903.index.js} +4840 -97
- package/bin/932.index.js +115 -886
- package/bin/main.js +4 -4
- package/bin/shared/buildContext.d.ts +0 -2
- package/bin/shared/buildContext.js.map +1 -1
- package/bin/shared/constants.d.ts +5 -6
- package/bin/shared/constants.js +5 -6
- package/bin/shared/constants.js.map +1 -1
- package/bin/shared/copyKeycloakResourcesToPublic.d.ts +2 -4
- package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -1
- package/login/KcContext/KcContext.d.ts +9 -18
- package/login/KcContext/KcContext.js.map +1 -1
- package/login/KcContext/kcContextMocks.js +6 -10
- package/login/KcContext/kcContextMocks.js.map +1 -1
- package/login/Template.js +4 -59
- package/login/Template.js.map +1 -1
- package/login/Template.useStylesAndScripts.d.ts +17 -0
- package/login/Template.useStylesAndScripts.js +69 -0
- package/login/Template.useStylesAndScripts.js.map +1 -0
- package/login/pages/Login.js +1 -1
- package/login/pages/Login.js.map +1 -1
- package/login/pages/LoginIdpLinkConfirmOverride.js +0 -1
- package/login/pages/LoginIdpLinkConfirmOverride.js.map +1 -1
- package/login/pages/LoginPasskeysConditionalAuthenticate.js +6 -49
- package/login/pages/LoginPasskeysConditionalAuthenticate.js.map +1 -1
- package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.d.ts +20 -0
- package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js +49 -0
- package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js.map +1 -0
- package/login/pages/LoginRecoveryAuthnCodeConfig.js +4 -126
- package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
- package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.d.ts +9 -0
- package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js +133 -0
- package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js.map +1 -0
- package/login/pages/LoginUsername.js +1 -1
- package/login/pages/LoginUsername.js.map +1 -1
- package/login/pages/Register.js +6 -3
- package/login/pages/Register.js.map +1 -1
- package/login/pages/WebauthnAuthenticate.js +13 -116
- package/login/pages/WebauthnAuthenticate.js.map +1 -1
- package/login/pages/WebauthnAuthenticate.useScript.d.ts +21 -0
- package/login/pages/WebauthnAuthenticate.useScript.js +41 -0
- package/login/pages/WebauthnAuthenticate.useScript.js.map +1 -0
- package/login/pages/WebauthnRegister.js +8 -178
- package/login/pages/WebauthnRegister.js.map +1 -1
- package/login/pages/WebauthnRegister.useScript.d.ts +27 -0
- package/login/pages/WebauthnRegister.useScript.js +49 -0
- package/login/pages/WebauthnRegister.useScript.js.map +1 -0
- package/package.json +125 -15
- package/res/account-v1/account.ftl +70 -0
- package/res/account-v1/applications.ftl +76 -0
- package/res/account-v1/federatedIdentity.ftl +42 -0
- package/res/account-v1/log.ftl +35 -0
- package/res/account-v1/messages/messages_ar.properties +406 -0
- package/res/account-v1/messages/messages_ca.properties +147 -0
- package/res/account-v1/messages/messages_cs.properties +171 -0
- package/res/account-v1/messages/messages_da.properties +339 -0
- package/res/account-v1/messages/messages_de.properties +353 -0
- package/res/account-v1/messages/messages_en.properties +404 -0
- package/res/account-v1/messages/messages_es.properties +147 -0
- package/res/account-v1/messages/messages_fi.properties +400 -0
- package/res/account-v1/messages/messages_fr.properties +180 -0
- package/res/account-v1/messages/messages_hu.properties +334 -0
- package/res/account-v1/messages/messages_it.properties +336 -0
- package/res/account-v1/messages/messages_ja.properties +335 -0
- package/res/account-v1/messages/messages_lt.properties +154 -0
- package/res/account-v1/messages/messages_lv.properties +197 -0
- package/res/account-v1/messages/messages_nl.properties +371 -0
- package/res/account-v1/messages/messages_no.properties +152 -0
- package/res/account-v1/messages/messages_pl.properties +248 -0
- package/res/account-v1/messages/messages_pt_BR.properties +349 -0
- package/res/account-v1/messages/messages_ru.properties +235 -0
- package/res/account-v1/messages/messages_sk.properties +196 -0
- package/res/account-v1/messages/messages_sv.properties +150 -0
- package/res/account-v1/messages/messages_tr.properties +315 -0
- package/res/account-v1/messages/messages_zh_CN.properties +153 -0
- package/res/account-v1/password.ftl +59 -0
- package/res/account-v1/resource-detail.ftl +277 -0
- package/res/account-v1/resources/css/account.css +277 -0
- package/res/account-v1/resources/img/icon-sidebar-active.png +0 -0
- package/res/account-v1/resources/img/keycloak-logo.png +0 -0
- package/res/account-v1/resources/img/logo.png +0 -0
- package/res/account-v1/resources/resources-common/img/favicon.ico +0 -0
- package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
- package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
- package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
- package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
- package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
- package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
- package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
- package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
- package/res/account-v1/resources.ftl +403 -0
- package/res/account-v1/sessions.ftl +44 -0
- package/res/account-v1/template.ftl +88 -0
- package/res/account-v1/theme.properties +14 -0
- package/res/account-v1/totp.ftl +141 -0
- package/res/public/.keycloakify/account/css/account.css +277 -0
- package/res/public/.keycloakify/account/img/icon-sidebar-active.png +0 -0
- package/res/public/.keycloakify/account/img/keycloak-logo.png +0 -0
- package/res/public/.keycloakify/account/img/logo.png +0 -0
- package/res/public/.keycloakify/account/resources-common/img/favicon.ico +0 -0
- package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
- package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
- package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
- package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
- package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
- package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
- package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
- package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
- package/res/public/.keycloakify/login/css/login.css +629 -0
- package/res/public/.keycloakify/login/img/feedback-error-arrow-down.png +0 -0
- package/res/public/.keycloakify/login/img/feedback-error-sign.png +0 -0
- package/res/public/.keycloakify/login/img/feedback-success-arrow-down.png +0 -0
- package/res/public/.keycloakify/login/img/feedback-success-sign.png +0 -0
- package/res/public/.keycloakify/login/img/feedback-warning-arrow-down.png +0 -0
- package/res/public/.keycloakify/login/img/feedback-warning-sign.png +0 -0
- package/res/public/.keycloakify/login/img/keycloak-bg.png +0 -0
- package/res/public/.keycloakify/login/img/keycloak-logo-text.png +0 -0
- package/res/public/.keycloakify/login/img/keycloak-logo.png +0 -0
- package/res/public/.keycloakify/login/js/authChecker.js +49 -0
- package/res/public/.keycloakify/login/js/common.js +48 -0
- package/res/public/.keycloakify/login/js/kcMultivalued.js +106 -0
- package/res/public/.keycloakify/login/js/kcNumberFormat.js +21 -0
- package/res/public/.keycloakify/login/js/kcNumberUnFormat.js +19 -0
- package/res/public/.keycloakify/login/js/menu-button-links.js +315 -0
- package/{src/bin/shared/downloadKeycloakDefaultTheme/extra-assets → res/public/.keycloakify/login/js}/passkeysConditionalAuth.js +1 -1
- package/res/public/.keycloakify/login/js/passwordVisibility.js +15 -0
- package/res/public/.keycloakify/login/js/userProfile.js +71 -0
- package/res/public/.keycloakify/login/js/webauthnRegister.js +140 -0
- package/res/public/.keycloakify/login/resources-common/img/favicon.ico +0 -0
- package/res/public/.keycloakify/login/resources-common/lib/pficon/pficon.css +22 -0
- package/res/public/.keycloakify/login/resources-common/lib/pficon/pficon.woff2 +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/@patternfly/patternfly/patternfly.min.css +2 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/jquery/dist/jquery.min.js +2 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/fontawesome-webfont.woff2 +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/img/bg-login.jpg +0 -0
- package/res/public/.keycloakify/login/resources-common/node_modules/rfc4648/lib/rfc4648.js +178 -0
- package/src/PUBLIC_URL.ts +5 -3
- package/src/account/KcContext/kcContextMocks.ts +3 -3
- package/src/bin/copy-keycloak-resources-to-public.ts +1 -1
- package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +4 -1
- package/src/bin/initialize-email-theme.ts +28 -8
- package/src/bin/keycloakify/buildJars/buildJar.ts +3 -7
- package/src/bin/keycloakify/generateFtl/generateFtl.ts +3 -7
- package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +65 -90
- package/src/bin/keycloakify/keycloakify.ts +38 -21
- package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +2 -2
- package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +3 -3
- package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +3 -3
- package/src/bin/shared/buildContext.ts +1 -8
- package/src/bin/shared/constants.ts +5 -7
- package/src/bin/shared/copyKeycloakResourcesToPublic.ts +30 -40
- package/src/bin/start-keycloak/start-keycloak.ts +10 -12
- package/src/login/KcContext/KcContext.ts +9 -18
- package/src/login/KcContext/kcContextMocks.ts +5 -13
- package/src/login/Template.tsx +4 -67
- package/src/login/Template.useStylesAndScripts.ts +94 -0
- package/src/login/pages/Login.tsx +1 -1
- package/src/login/pages/LoginIdpLinkConfirmOverride.tsx +0 -1
- package/src/login/pages/LoginPasskeysConditionalAuthenticate.tsx +6 -81
- package/src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx +72 -0
- package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +4 -126
- package/src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx +142 -0
- package/src/login/pages/LoginUsername.tsx +1 -1
- package/src/login/pages/Register.tsx +35 -13
- package/src/login/pages/WebauthnAuthenticate.tsx +20 -133
- package/src/login/pages/WebauthnAuthenticate.useScript.tsx +64 -0
- package/src/login/pages/WebauthnRegister.tsx +8 -195
- package/src/login/pages/WebauthnRegister.useScript.tsx +93 -0
- package/src/tools/useInsertScriptTags.ts +14 -4
- package/src/vite-plugin/vite-plugin.ts +11 -15
- package/tools/useInsertScriptTags.d.ts +2 -2
- package/tools/useInsertScriptTags.js +8 -2
- package/tools/useInsertScriptTags.js.map +1 -1
- package/vite-plugin/index.js +3357 -47132
- package/bin/697.index.js +0 -4749
- package/bin/shared/downloadKeycloakStaticResources.d.ts +0 -9
- package/bin/shared/downloadKeycloakStaticResources.js.map +0 -1
- package/src/bin/keycloakify/generateResources/bringInAccountV1.ts +0 -89
- package/src/bin/shared/downloadKeycloakDefaultTheme/downloadKeycloakDefaultTheme.ts +0 -338
- package/src/bin/shared/downloadKeycloakDefaultTheme/index.ts +0 -1
- package/src/bin/shared/downloadKeycloakStaticResources.ts +0 -53
- /package/{src/bin/shared/downloadKeycloakDefaultTheme/extra-assets → res/public/.keycloakify/login/js}/webauthnAuthenticate.js +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Template.useStylesAndScripts.js","sourceRoot":"","sources":["../src/login/Template.useStylesAndScripts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAexE,MAAM,EAA8D,CAAC;AACrE,MAAM,EAAkD,CAAC;AAEzD,MAAM,UAAU,mBAAmB,CAAC,MAGnC;IACG,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAE9C,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;QAE5C,IAAI,kBAAkB,KAAK,SAAS,EAAE;YAClC,OAAO;SACV;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,EAAE,uBAAuB,EAAE,GAAG,iBAAiB,CAAC;QAClD,mBAAmB,EAAE,UAAU;QAC/B,KAAK,EAAE,CAAC,eAAe;YACnB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACI,GAAG,GAAG,CAAC,mBAAmB,yDAAyD;gBACnF,GAAG,GAAG,CAAC,mBAAmB,sDAAsD;gBAChF,GAAG,GAAG,CAAC,mBAAmB,gEAAgE;gBAC1F,GAAG,GAAG,CAAC,mBAAmB,wBAAwB;gBAClD,GAAG,GAAG,CAAC,aAAa,gBAAgB;aACvC;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,UAAU;QAC/B,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;oBACxB,OAAO,EAAE;wBACL,OAAO,EAAE,GAAG,GAAG,CAAC,mBAAmB,sCAAsC;qBAC5E;iBACJ,CAAC;aACL;YACD;gBACI,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,GAAG,GAAG,CAAC,aAAa,0BAA0B;aACtD;YACD,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnB,IAAI,EAAE,iBAA0B;gBAChC,GAAG;aACN,CAAC,CAAC;YACH;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;+DACkC,GAAG,CAAC,aAAa;;;2BAGrD,GAAG,CAAC,sBAAsB;;iBAEpC;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,uBAAuB,EAAE;YACzB,gBAAgB,EAAE,CAAC;SACtB;IACL,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE9B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC;AACxD,CAAC"}
|
package/login/pages/Login.js
CHANGED
@@ -13,7 +13,7 @@ export default function Login(props) {
|
|
13
13
|
const { social, realm, url, usernameHidden, login, auth, registrationDisabled, messagesPerField } = kcContext;
|
14
14
|
const { msg, msgStr } = i18n;
|
15
15
|
const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
|
16
|
-
return (_jsx(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, displayMessage: !messagesPerField.existsError("username", "password"), headerNode: msg("loginAccountTitle"), displayInfo: realm.password && realm.registrationAllowed && !registrationDisabled, infoNode: _jsx("div", Object.assign({ id: "kc-registration-container" }, { children: _jsx("div", Object.assign({ id: "kc-registration" }, { children: _jsxs("span", { children: [msg("noAccount"), " ", _jsx("a", Object.assign({ tabIndex: 8, href: url.registrationUrl }, { children: msg("doRegister") }))] }) })) })), socialProvidersNode: _jsx(_Fragment, { children: realm.password && social.providers !== undefined && social.providers.length !== 0 && (_jsxs("div", Object.assign({ id: "kc-social-providers", className: kcClsx("kcFormSocialAccountSectionClass") }, { children: [_jsx("hr", {}), _jsx("h2", { children: msg("identity-provider-login-label") }), _jsx("ul", Object.assign({ className: kcClsx("kcFormSocialAccountListClass", social.providers.length > 3 && "kcFormSocialAccountListGridClass") }, { children: social.providers.map((...[p, , providers]) => (_jsx("li", { children: _jsxs("a", Object.assign({ id: `social-${p.alias}`, className: kcClsx("kcFormSocialAccountListButtonClass", providers.length > 3 && "kcFormSocialAccountGridItem"), type: "button", href: p.loginUrl }, { children: [p.iconClasses && _jsx("i", { className: clsx(kcClsx("kcCommonLogoIdP"), p.iconClasses), "aria-hidden": "true" }), _jsx("span", { className: clsx(kcClsx("kcFormSocialAccountNameClass"), p.iconClasses && "kc-social-icon-text"), dangerouslySetInnerHTML: { __html: p.displayName } })] })) }, p.alias))) }))] }))) }) }, { children: _jsx("div", Object.assign({ id: "kc-form" }, { children: _jsx("div", Object.assign({ id: "kc-form-wrapper" }, { children: realm.password && (_jsxs("form", Object.assign({ id: "kc-form-login", onSubmit: () => {
|
16
|
+
return (_jsx(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, displayMessage: !messagesPerField.existsError("username", "password"), headerNode: msg("loginAccountTitle"), displayInfo: realm.password && realm.registrationAllowed && !registrationDisabled, infoNode: _jsx("div", Object.assign({ id: "kc-registration-container" }, { children: _jsx("div", Object.assign({ id: "kc-registration" }, { children: _jsxs("span", { children: [msg("noAccount"), " ", _jsx("a", Object.assign({ tabIndex: 8, href: url.registrationUrl }, { children: msg("doRegister") }))] }) })) })), socialProvidersNode: _jsx(_Fragment, { children: realm.password && (social === null || social === void 0 ? void 0 : social.providers) !== undefined && social.providers.length !== 0 && (_jsxs("div", Object.assign({ id: "kc-social-providers", className: kcClsx("kcFormSocialAccountSectionClass") }, { children: [_jsx("hr", {}), _jsx("h2", { children: msg("identity-provider-login-label") }), _jsx("ul", Object.assign({ className: kcClsx("kcFormSocialAccountListClass", social.providers.length > 3 && "kcFormSocialAccountListGridClass") }, { children: social.providers.map((...[p, , providers]) => (_jsx("li", { children: _jsxs("a", Object.assign({ id: `social-${p.alias}`, className: kcClsx("kcFormSocialAccountListButtonClass", providers.length > 3 && "kcFormSocialAccountGridItem"), type: "button", href: p.loginUrl }, { children: [p.iconClasses && _jsx("i", { className: clsx(kcClsx("kcCommonLogoIdP"), p.iconClasses), "aria-hidden": "true" }), _jsx("span", { className: clsx(kcClsx("kcFormSocialAccountNameClass"), p.iconClasses && "kc-social-icon-text"), dangerouslySetInnerHTML: { __html: p.displayName } })] })) }, p.alias))) }))] }))) }) }, { children: _jsx("div", Object.assign({ id: "kc-form" }, { children: _jsx("div", Object.assign({ id: "kc-form-wrapper" }, { children: realm.password && (_jsxs("form", Object.assign({ id: "kc-form-login", onSubmit: () => {
|
17
17
|
setIsLoginButtonDisabled(true);
|
18
18
|
return true;
|
19
19
|
}, action: url.loginAction, method: "post" }, { children: [!usernameHidden && (_jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("label", Object.assign({ htmlFor: "username", className: kcClsx("kcLabelClass") }, { children: !realm.loginWithEmailAllowed
|
package/login/pages/Login.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/login/pages/Login.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAe,MAAM,8BAA8B,CAAC;AAItE,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAmE;;IAC7F,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACzB,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAE9G,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1E,OAAO,CACH,KAAC,QAAQ,kBACL,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,EACrE,UAAU,EAAE,GAAG,CAAC,mBAAmB,CAAC,EACpC,WAAW,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,oBAAoB,EACjF,QAAQ,EACJ,4BAAK,EAAE,EAAC,2BAA2B,gBAC/B,4BAAK,EAAE,EAAC,iBAAiB,gBACrB,2BACK,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,EACtB,0BAAG,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,eAAe,gBACpC,GAAG,CAAC,YAAY,CAAC,IAClB,IACD,IACL,IACJ,EAEV,mBAAmB,EACf,4BACK,KAAK,CAAC,QAAQ,IAAI,MAAM,
|
1
|
+
{"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/login/pages/Login.tsx"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import { getKcClsx } from "../../login/lib/kcClsx";
|
3
|
-
// NOTE: Added with Keycloak 25
|
4
3
|
export default function LoginIdpLinkConfirmOverride(props) {
|
5
4
|
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
|
6
5
|
const { kcClsx } = getKcClsx({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LoginIdpLinkConfirmOverride.js","sourceRoot":"","sources":["../../src/login/pages/LoginIdpLinkConfirmOverride.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD
|
1
|
+
{"version":3,"file":"LoginIdpLinkConfirmOverride.js","sourceRoot":"","sources":["../../src/login/pages/LoginIdpLinkConfirmOverride.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,KAA6F;IAC7I,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACzB,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IAE1C,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAErB,OAAO,CACH,KAAC,QAAQ,kBAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,yBAAyB,CAAC,gBACtI,8BAAM,EAAE,EAAC,kBAAkB,EAAC,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBAC7D,GAAG,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAC5B,0BAAG,EAAE,EAAC,kBAAkB,EAAC,IAAI,EAAE,GAAG,CAAC,mBAAmB,gBACjD,GAAG,CAAC,aAAa,CAAC,IACnB,EACJ,cAAM,EACN,cAAM,EACN,+BACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,EACtG,IAAI,EAAC,cAAc,EACnB,EAAE,EAAC,iBAAiB,EACpB,KAAK,EAAC,iBAAiB,gBAEtB,GAAG,CAAC,4BAA4B,EAAE,cAAc,CAAC,IAC7C,KACN,IACA,CACd,CAAC;AACN,CAAC"}
|
@@ -1,58 +1,19 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
-
import {
|
2
|
+
import { Fragment } from "react";
|
3
3
|
import { clsx } from "../../tools/clsx";
|
4
|
-
import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
|
5
4
|
import { getKcClsx } from "../../login/lib/kcClsx";
|
6
|
-
import {
|
7
|
-
// NOTE: From Keycloak 25.0.4
|
5
|
+
import { useScript } from "../../login/pages/LoginPasskeysConditionalAuthenticate.useScript";
|
8
6
|
export default function LoginPasskeysConditionalAuthenticate(props) {
|
9
7
|
var _a;
|
10
8
|
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
|
11
|
-
const { messagesPerField, login, url, usernameHidden, shouldDisplayAuthenticators, authenticators, registrationDisabled, realm
|
9
|
+
const { messagesPerField, login, url, usernameHidden, shouldDisplayAuthenticators, authenticators, registrationDisabled, realm } = kcContext;
|
12
10
|
const { msg, msgStr, advancedMsg } = i18n;
|
13
11
|
const { kcClsx } = getKcClsx({
|
14
12
|
doUseDefaultCss,
|
15
13
|
classes
|
16
14
|
});
|
17
|
-
const
|
18
|
-
|
19
|
-
scriptTags: [
|
20
|
-
{
|
21
|
-
type: "module",
|
22
|
-
textContent: `
|
23
|
-
import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
|
24
|
-
import { initAuthenticate } from "${url.resourcesPath}/js/passkeysConditionalAuth.js";
|
25
|
-
|
26
|
-
const authButton = document.getElementById('authenticateWebAuthnButton');
|
27
|
-
const input = {
|
28
|
-
isUserIdentified : ${isUserIdentified},
|
29
|
-
challenge : '${challenge}',
|
30
|
-
userVerification : '${userVerification}',
|
31
|
-
rpId : '${rpId}',
|
32
|
-
createTimeout : ${createTimeout},
|
33
|
-
errmsg : "${msgStr("webauthn-unsupported-browser-text")}"
|
34
|
-
};
|
35
|
-
authButton.addEventListener("click", () => {
|
36
|
-
authenticateByWebAuthn(input);
|
37
|
-
});
|
38
|
-
|
39
|
-
const args = {
|
40
|
-
isUserIdentified : ${isUserIdentified},
|
41
|
-
challenge : '${challenge}',
|
42
|
-
userVerification : '${userVerification}',
|
43
|
-
rpId : '${rpId}',
|
44
|
-
createTimeout : ${createTimeout},
|
45
|
-
errmsg : "${msgStr("passkey-unsupported-browser-text")}"
|
46
|
-
};
|
47
|
-
|
48
|
-
document.addEventListener("DOMContentLoaded", (event) => initAuthenticate(args));
|
49
|
-
`
|
50
|
-
}
|
51
|
-
]
|
52
|
-
});
|
53
|
-
useEffect(() => {
|
54
|
-
insertScriptTags();
|
55
|
-
}, []);
|
15
|
+
const authButtonId = "authenticateWebAuthnButton";
|
16
|
+
useScript({ authButtonId, kcContext, i18n });
|
56
17
|
return (_jsxs(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, headerNode: msg("passkey-login-title"), infoNode: realm.registrationAllowed &&
|
57
18
|
!registrationDisabled && (_jsx("div", Object.assign({ id: "kc-registration" }, { children: _jsxs("span", { children: ["$", msg("noAccount"), " ", _jsx("a", Object.assign({ tabIndex: 6, href: url.registrationUrl }, { children: msg("doRegister") }))] }) }))) }, { children: [_jsxs("form", Object.assign({ id: "webauth", action: url.loginAction, method: "post" }, { children: [_jsx("input", { type: "hidden", id: "clientDataJSON", name: "clientDataJSON" }), _jsx("input", { type: "hidden", id: "authenticatorData", name: "authenticatorData" }), _jsx("input", { type: "hidden", id: "signature", name: "signature" }), _jsx("input", { type: "hidden", id: "credentialId", name: "credentialId" }), _jsx("input", { type: "hidden", id: "userHandle", name: "userHandle" }), _jsx("input", { type: "hidden", id: "error", name: "error" })] })), _jsx("div", Object.assign({ className: kcClsx("kcFormGroupClass"), "no-bottom-margin": "true", style: { marginBottom: 0 } }, { children: authenticators !== undefined && Object.keys(authenticators).length !== 0 && (_jsxs(_Fragment, { children: [_jsx("form", Object.assign({ id: "authn_select", className: kcClsx("kcFormClass") }, { children: authenticators.authenticators.map((authenticator, i) => (_jsx("input", { type: "hidden", name: "authn_use_chk", readOnly: true, value: authenticator.credentialId }, i))) })), shouldDisplayAuthenticators && (_jsxs(_Fragment, { children: [authenticators.authenticators.length > 1 && (_jsx("p", Object.assign({ className: kcClsx("kcSelectAuthListItemTitle") }, { children: msg("passkey-available-authenticators") }))), _jsx("div", Object.assign({ className: kcClsx("kcFormClass") }, { children: authenticators.authenticators.map((authenticator, i) => (_jsxs("div", Object.assign({ id: `kc-webauthn-authenticator-item-${i}`, className: kcClsx("kcSelectAuthListItemClass") }, { children: [_jsx("i", { className: clsx((() => {
|
58
19
|
const className = kcClsx(authenticator.transports.iconClass);
|
@@ -71,10 +32,6 @@ export default function LoginPasskeysConditionalAuthenticate(props) {
|
|
71
32
|
return true;
|
72
33
|
} }, { children: !usernameHidden && (_jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("label", Object.assign({ htmlFor: "username", className: kcClsx("kcLabelClass") }, { children: msg("passkey-autofill-select") })), _jsx("input", { tabIndex: 1, id: "username", "aria-invalid": messagesPerField.existsError("username"), className: kcClsx("kcInputClass"), name: "username", defaultValue: (_a = login.username) !== null && _a !== void 0 ? _a : "",
|
73
34
|
//autoComplete="username webauthn"
|
74
|
-
type: "text", autoFocus: true, autoComplete: "off" }), messagesPerField.existsError("username") && (_jsx("span", Object.assign({ id: "input-error-username", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite" }, { children: messagesPerField.get("username") })))] }))) }))), _jsx("div", Object.assign({ id: "kc-form-passkey-button", className: kcClsx("kcFormButtonsClass"), style: { display: "none" } }, { children: _jsx("input", { id:
|
75
|
-
assert("doAuthenticate" in window);
|
76
|
-
assert(typeof window.doAuthenticate === "function");
|
77
|
-
window.doAuthenticate([], rpId, challenge, typeof isUserIdentified === "boolean" ? isUserIdentified : isUserIdentified === "true", createTimeout, userVerification, msgStr("passkey-unsupported-browser-text"));
|
78
|
-
}, autoFocus: true, value: msgStr("passkey-doAuthenticate"), className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass") }) })), _jsx("div", Object.assign({ id: "kc-form-passkey-button", className: kcClsx("kcFormButtonsClass"), style: { display: "none" } }, { children: _jsx("input", { id: "authenticateWebAuthnButton", type: "button", autoFocus: true, value: msgStr("passkey-doAuthenticate"), className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass") }) }))] })) }))] })) }))] })));
|
35
|
+
type: "text", autoFocus: true, autoComplete: "off" }), messagesPerField.existsError("username") && (_jsx("span", Object.assign({ id: "input-error-username", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite" }, { children: messagesPerField.get("username") })))] }))) }))), _jsx("div", Object.assign({ id: "kc-form-passkey-button", className: kcClsx("kcFormButtonsClass"), style: { display: "none" } }, { children: _jsx("input", { id: authButtonId, type: "button", autoFocus: true, value: msgStr("passkey-doAuthenticate"), className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass") }) }))] })) }))] })) }))] })));
|
79
36
|
}
|
80
37
|
//# sourceMappingURL=LoginPasskeysConditionalAuthenticate.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LoginPasskeysConditionalAuthenticate.js","sourceRoot":"","sources":["../../src/login/pages/LoginPasskeysConditionalAuthenticate.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"LoginPasskeysConditionalAuthenticate.js","sourceRoot":"","sources":["../../src/login/pages/LoginPasskeysConditionalAuthenticate.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
type KcContextLike = {
|
2
|
+
url: {
|
3
|
+
resourcesPath: string;
|
4
|
+
};
|
5
|
+
isUserIdentified: boolean | "true" | "false";
|
6
|
+
challenge: string;
|
7
|
+
userVerification: string;
|
8
|
+
rpId: string;
|
9
|
+
createTimeout: number | string;
|
10
|
+
};
|
11
|
+
type I18nLike = {
|
12
|
+
msgStr: (key: "webauthn-unsupported-browser-text" | "passkey-unsupported-browser-text") => string;
|
13
|
+
isFetchingTranslations: boolean;
|
14
|
+
};
|
15
|
+
export declare function useScript(params: {
|
16
|
+
authButtonId: string;
|
17
|
+
kcContext: KcContextLike;
|
18
|
+
i18n: I18nLike;
|
19
|
+
}): void;
|
20
|
+
export {};
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { useEffect } from "react";
|
2
|
+
import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
|
3
|
+
import { assert } from "../../tools/assert";
|
4
|
+
assert();
|
5
|
+
assert();
|
6
|
+
export function useScript(params) {
|
7
|
+
const { authButtonId, kcContext, i18n } = params;
|
8
|
+
const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = kcContext;
|
9
|
+
const { msgStr, isFetchingTranslations } = i18n;
|
10
|
+
const { insertScriptTags } = useInsertScriptTags({
|
11
|
+
componentOrHookName: "LoginRecoveryAuthnCodeConfig",
|
12
|
+
scriptTags: [
|
13
|
+
{
|
14
|
+
type: "module",
|
15
|
+
textContent: () => `
|
16
|
+
import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
|
17
|
+
import { initAuthenticate } from "${url.resourcesPath}/js/passkeysConditionalAuth.js";
|
18
|
+
|
19
|
+
const authButton = document.getElementById("${authButtonId}");
|
20
|
+
const input = {
|
21
|
+
isUserIdentified : ${isUserIdentified},
|
22
|
+
challenge : ${JSON.stringify(challenge)},
|
23
|
+
userVerification : ${JSON.stringify(userVerification)},
|
24
|
+
rpId : ${JSON.stringify(rpId)},
|
25
|
+
createTimeout : ${createTimeout}
|
26
|
+
};
|
27
|
+
authButton.addEventListener("click", () => {
|
28
|
+
authenticateByWebAuthn({
|
29
|
+
...input,
|
30
|
+
errmsg : ${JSON.stringify(msgStr("webauthn-unsupported-browser-text"))}
|
31
|
+
});
|
32
|
+
});
|
33
|
+
|
34
|
+
initAuthenticate({
|
35
|
+
...input,
|
36
|
+
errmsg : ${JSON.stringify(msgStr("passkey-unsupported-browser-text"))}
|
37
|
+
});
|
38
|
+
`
|
39
|
+
}
|
40
|
+
]
|
41
|
+
});
|
42
|
+
useEffect(() => {
|
43
|
+
if (isFetchingTranslations) {
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
insertScriptTags();
|
47
|
+
}, [isFetchingTranslations]);
|
48
|
+
}
|
49
|
+
//# sourceMappingURL=LoginPasskeysConditionalAuthenticate.useScript.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"LoginPasskeysConditionalAuthenticate.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAclD,MAAM,EAAmG,CAAC;AAC1G,MAAM,EAAuF,CAAC;AAO9F,MAAM,UAAU,SAAS,CAAC,MAA0E;IAChG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAE9F,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;8DAC2B,GAAG,CAAC,aAAa;wDACvB,GAAG,CAAC,aAAa;;kEAEP,YAAY;;6CAEjC,gBAAgB;sCACvB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;6CAClB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;iCAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;0CACX,aAAa;;;;;uCAKhB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;mCAM/D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;;iBAE5E;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,gBAAgB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
-
import { useEffect } from "react";
|
3
2
|
import { clsx } from "../../tools/clsx";
|
4
3
|
import { getKcClsx } from "../../login/lib/kcClsx";
|
5
|
-
import {
|
4
|
+
import { useScript } from "../../login/pages/LoginRecoveryAuthnCodeConfig.useScript";
|
6
5
|
export default function LoginRecoveryAuthnCodeConfig(props) {
|
7
6
|
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
|
8
7
|
const { kcClsx } = getKcClsx({
|
@@ -11,130 +10,9 @@ export default function LoginRecoveryAuthnCodeConfig(props) {
|
|
11
10
|
});
|
12
11
|
const { recoveryAuthnCodesConfigBean, isAppInitiatedAction } = kcContext;
|
13
12
|
const { msg, msgStr } = i18n;
|
14
|
-
const
|
15
|
-
|
16
|
-
|
17
|
-
{
|
18
|
-
type: "text/javascript",
|
19
|
-
textContent: `
|
20
|
-
|
21
|
-
/* copy recovery codes */
|
22
|
-
function copyRecoveryCodes() {
|
23
|
-
var tmpTextarea = document.createElement("textarea");
|
24
|
-
var codes = document.getElementById("kc-recovery-codes-list").getElementsByTagName("li");
|
25
|
-
for (i = 0; i < codes.length; i++) {
|
26
|
-
tmpTextarea.value = tmpTextarea.value + codes[i].innerText + "\\n";
|
27
|
-
}
|
28
|
-
document.body.appendChild(tmpTextarea);
|
29
|
-
tmpTextarea.select();
|
30
|
-
document.execCommand("copy");
|
31
|
-
document.body.removeChild(tmpTextarea);
|
32
|
-
}
|
33
|
-
|
34
|
-
var copyButton = document.getElementById("copyRecoveryCodes");
|
35
|
-
copyButton && copyButton.addEventListener("click", function () {
|
36
|
-
copyRecoveryCodes();
|
37
|
-
});
|
38
|
-
|
39
|
-
/* download recovery codes */
|
40
|
-
function formatCurrentDateTime() {
|
41
|
-
var dt = new Date();
|
42
|
-
var options = {
|
43
|
-
month: 'long',
|
44
|
-
day: 'numeric',
|
45
|
-
year: 'numeric',
|
46
|
-
hour: 'numeric',
|
47
|
-
minute: 'numeric',
|
48
|
-
timeZoneName: 'short'
|
49
|
-
};
|
50
|
-
|
51
|
-
return dt.toLocaleString('en-US', options);
|
52
|
-
}
|
53
|
-
|
54
|
-
function parseRecoveryCodeList() {
|
55
|
-
var recoveryCodes = document.querySelectorAll(".kc-recovery-codes-list li");
|
56
|
-
var recoveryCodeList = "";
|
57
|
-
|
58
|
-
for (var i = 0; i < recoveryCodes.length; i++) {
|
59
|
-
var recoveryCodeLiElement = recoveryCodes[i].innerText;
|
60
|
-
recoveryCodeList += recoveryCodeLiElement + "\\r\\n";
|
61
|
-
}
|
62
|
-
|
63
|
-
return recoveryCodeList;
|
64
|
-
}
|
65
|
-
|
66
|
-
function buildDownloadContent() {
|
67
|
-
var recoveryCodeList = parseRecoveryCodeList();
|
68
|
-
var dt = new Date();
|
69
|
-
var options = {
|
70
|
-
month: 'long',
|
71
|
-
day: 'numeric',
|
72
|
-
year: 'numeric',
|
73
|
-
hour: 'numeric',
|
74
|
-
minute: 'numeric',
|
75
|
-
timeZoneName: 'short'
|
76
|
-
};
|
77
|
-
|
78
|
-
return fileBodyContent =
|
79
|
-
"${msgStr("recovery-codes-download-file-header")}\\n\\n" +
|
80
|
-
recoveryCodeList + "\\n" +
|
81
|
-
"${msgStr("recovery-codes-download-file-description")}\\n\\n" +
|
82
|
-
"${msgStr("recovery-codes-download-file-date")} " + formatCurrentDateTime();
|
83
|
-
}
|
84
|
-
|
85
|
-
function setUpDownloadLinkAndDownload(filename, text) {
|
86
|
-
var el = document.createElement('a');
|
87
|
-
el.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
|
88
|
-
el.setAttribute('download', filename);
|
89
|
-
el.style.display = 'none';
|
90
|
-
document.body.appendChild(el);
|
91
|
-
el.click();
|
92
|
-
document.body.removeChild(el);
|
93
|
-
}
|
94
|
-
|
95
|
-
function downloadRecoveryCodes() {
|
96
|
-
setUpDownloadLinkAndDownload('kc-download-recovery-codes.txt', buildDownloadContent());
|
97
|
-
}
|
98
|
-
|
99
|
-
var downloadButton = document.getElementById("downloadRecoveryCodes");
|
100
|
-
downloadButton && downloadButton.addEventListener("click", downloadRecoveryCodes);
|
101
|
-
|
102
|
-
/* print recovery codes */
|
103
|
-
function buildPrintContent() {
|
104
|
-
var recoveryCodeListHTML = document.getElementById('kc-recovery-codes-list').innerHTML;
|
105
|
-
var styles =
|
106
|
-
\`@page { size: auto; margin-top: 0; }
|
107
|
-
body { width: 480px; }
|
108
|
-
div { list-style-type: none; font-family: monospace }
|
109
|
-
p:first-of-type { margin-top: 48px }\`;
|
110
|
-
|
111
|
-
return printFileContent =
|
112
|
-
"<html><style>" + styles + "</style><body>" +
|
113
|
-
"<title>kc-download-recovery-codes</title>" +
|
114
|
-
"<p>${msgStr("recovery-codes-download-file-header")}</p>" +
|
115
|
-
"<div>" + recoveryCodeListHTML + "</div>" +
|
116
|
-
"<p>${msgStr("recovery-codes-download-file-description")}</p>" +
|
117
|
-
"<p>${msgStr("recovery-codes-download-file-date")} " + formatCurrentDateTime() + "</p>" +
|
118
|
-
"</body></html>";
|
119
|
-
}
|
120
|
-
|
121
|
-
function printRecoveryCodes() {
|
122
|
-
var w = window.open();
|
123
|
-
w.document.write(buildPrintContent());
|
124
|
-
w.print();
|
125
|
-
w.close();
|
126
|
-
}
|
127
|
-
|
128
|
-
var printButton = document.getElementById("printRecoveryCodes");
|
129
|
-
printButton && printButton.addEventListener("click", printRecoveryCodes);
|
130
|
-
`
|
131
|
-
}
|
132
|
-
]
|
133
|
-
});
|
134
|
-
useEffect(() => {
|
135
|
-
insertScriptTags();
|
136
|
-
}, []);
|
137
|
-
return (_jsxs(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, headerNode: msg("recovery-code-config-header") }, { children: [_jsxs("div", Object.assign({ className: clsx("pf-c-alert", "pf-m-warning", "pf-m-inline", kcClsx("kcRecoveryCodesWarning")), "aria-label": "Warning alert" }, { children: [_jsx("div", Object.assign({ className: "pf-c-alert__icon" }, { children: _jsx("i", { className: "pficon-warning-triangle-o", "aria-hidden": "true" }) })), _jsxs("h4", Object.assign({ className: "pf-c-alert__title" }, { children: [_jsx("span", Object.assign({ className: "pf-screen-reader" }, { children: "Warning alert:" })), msg("recovery-code-config-warning-title")] })), _jsx("div", Object.assign({ className: "pf-c-alert__description" }, { children: _jsx("p", { children: msg("recovery-code-config-warning-message") }) }))] })), _jsx("ol", Object.assign({ id: "kc-recovery-codes-list", className: kcClsx("kcRecoveryCodesList") }, { children: recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesList.map((code, index) => (_jsxs("li", { children: [_jsxs("span", { children: [index + 1, ":"] }), " ", code.slice(0, 4), "-", code.slice(4, 8), "-", code.slice(8)] }, index))) })), _jsxs("div", Object.assign({ className: kcClsx("kcRecoveryCodesActions") }, { children: [_jsxs("button", Object.assign({ id: "printRecoveryCodes", className: clsx("pf-c-button", "pf-m-link"), type: "button" }, { children: [_jsx("i", { className: "pficon-print", "aria-hidden": "true" }), " ", msg("recovery-codes-print")] })), _jsxs("button", Object.assign({ id: "downloadRecoveryCodes", className: clsx("pf-c-button", "pf-m-link"), type: "button" }, { children: [_jsx("i", { className: "pficon-save", "aria-hidden": "true" }), " ", msg("recovery-codes-download")] })), _jsxs("button", Object.assign({ id: "copyRecoveryCodes", className: clsx("pf-c-button", "pf-m-link"), type: "button" }, { children: [_jsx("i", { className: "pficon-blueprint", "aria-hidden": "true" }), " ", msg("recovery-codes-copy")] }))] })), _jsxs("div", Object.assign({ className: kcClsx("kcFormOptionsClass") }, { children: [_jsx("input", { className: kcClsx("kcCheckInputClass"), type: "checkbox", id: "kcRecoveryCodesConfirmationCheck", name: "kcRecoveryCodesConfirmationCheck", onChange: function () {
|
13
|
+
const olRecoveryCodesListId = "kc-recovery-codes-list";
|
14
|
+
useScript({ olRecoveryCodesListId, i18n });
|
15
|
+
return (_jsxs(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, headerNode: msg("recovery-code-config-header") }, { children: [_jsxs("div", Object.assign({ className: clsx("pf-c-alert", "pf-m-warning", "pf-m-inline", kcClsx("kcRecoveryCodesWarning")), "aria-label": "Warning alert" }, { children: [_jsx("div", Object.assign({ className: "pf-c-alert__icon" }, { children: _jsx("i", { className: "pficon-warning-triangle-o", "aria-hidden": "true" }) })), _jsxs("h4", Object.assign({ className: "pf-c-alert__title" }, { children: [_jsx("span", Object.assign({ className: "pf-screen-reader" }, { children: "Warning alert:" })), msg("recovery-code-config-warning-title")] })), _jsx("div", Object.assign({ className: "pf-c-alert__description" }, { children: _jsx("p", { children: msg("recovery-code-config-warning-message") }) }))] })), _jsx("ol", Object.assign({ id: olRecoveryCodesListId, className: kcClsx("kcRecoveryCodesList") }, { children: recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesList.map((code, index) => (_jsxs("li", { children: [_jsxs("span", { children: [index + 1, ":"] }), " ", code.slice(0, 4), "-", code.slice(4, 8), "-", code.slice(8)] }, index))) })), _jsxs("div", Object.assign({ className: kcClsx("kcRecoveryCodesActions") }, { children: [_jsxs("button", Object.assign({ id: "printRecoveryCodes", className: clsx("pf-c-button", "pf-m-link"), type: "button" }, { children: [_jsx("i", { className: "pficon-print", "aria-hidden": "true" }), " ", msg("recovery-codes-print")] })), _jsxs("button", Object.assign({ id: "downloadRecoveryCodes", className: clsx("pf-c-button", "pf-m-link"), type: "button" }, { children: [_jsx("i", { className: "pficon-save", "aria-hidden": "true" }), " ", msg("recovery-codes-download")] })), _jsxs("button", Object.assign({ id: "copyRecoveryCodes", className: clsx("pf-c-button", "pf-m-link"), type: "button" }, { children: [_jsx("i", { className: "pficon-blueprint", "aria-hidden": "true" }), " ", msg("recovery-codes-copy")] }))] })), _jsxs("div", Object.assign({ className: kcClsx("kcFormOptionsClass") }, { children: [_jsx("input", { className: kcClsx("kcCheckInputClass"), type: "checkbox", id: "kcRecoveryCodesConfirmationCheck", name: "kcRecoveryCodesConfirmationCheck", onChange: function () {
|
138
16
|
//@ts-expect-error: This is code from the original theme, we trust it.
|
139
17
|
document.getElementById("saveRecoveryAuthnCodesBtn").disabled = !this.checked;
|
140
18
|
} }), _jsx("label", Object.assign({ htmlFor: "kcRecoveryCodesConfirmationCheck" }, { children: msg("recovery-codes-confirmation-message") }))] })), _jsxs("form", Object.assign({ action: kcContext.url.loginAction, className: kcClsx("kcFormGroupClass"), id: "kc-recovery-codes-settings-form", method: "post" }, { children: [_jsx("input", { type: "hidden", name: "generatedRecoveryAuthnCodes", value: recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesAsString }), _jsx("input", { type: "hidden", name: "generatedAt", value: recoveryAuthnCodesConfigBean.generatedAt }), _jsx("input", { type: "hidden", id: "userLabel", name: "userLabel", value: msgStr("recovery-codes-label-default") }), _jsx(LogoutOtherSessions, { kcClsx: kcClsx, i18n: i18n }), isAppInitiatedAction ? (_jsxs(_Fragment, { children: [_jsx("input", { type: "submit", className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonLargeClass"), id: "saveRecoveryAuthnCodesBtn", value: msgStr("recovery-codes-action-complete"), disabled: true }), _jsx("button", Object.assign({ type: "submit", className: kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonLargeClass"), id: "cancelRecoveryAuthnCodesBtn", name: "cancel-aia", value: "true" }, { children: msg("recovery-codes-action-cancel") }))] })) : (_jsx("input", { type: "submit", className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), id: "saveRecoveryAuthnCodesBtn", value: msgStr("recovery-codes-action-complete"), disabled: true }))] }))] })));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LoginRecoveryAuthnCodeConfig.js","sourceRoot":"","sources":["../../src/login/pages/LoginRecoveryAuthnCodeConfig.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"LoginRecoveryAuthnCodeConfig.js","sourceRoot":"","sources":["../../src/login/pages/LoginRecoveryAuthnCodeConfig.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
type I18nLike = {
|
2
|
+
msgStr: (key: "recovery-codes-download-file-header" | "recovery-codes-download-file-description" | "recovery-codes-download-file-date") => string;
|
3
|
+
isFetchingTranslations: boolean;
|
4
|
+
};
|
5
|
+
export declare function useScript(params: {
|
6
|
+
olRecoveryCodesListId: string;
|
7
|
+
i18n: I18nLike;
|
8
|
+
}): void;
|
9
|
+
export {};
|
@@ -0,0 +1,133 @@
|
|
1
|
+
import { useEffect } from "react";
|
2
|
+
import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
|
3
|
+
export function useScript(params) {
|
4
|
+
const { olRecoveryCodesListId, i18n } = params;
|
5
|
+
const { msgStr, isFetchingTranslations } = i18n;
|
6
|
+
const { insertScriptTags } = useInsertScriptTags({
|
7
|
+
componentOrHookName: "LoginRecoveryAuthnCodeConfig",
|
8
|
+
scriptTags: [
|
9
|
+
{
|
10
|
+
type: "text/javascript",
|
11
|
+
textContent: () => `
|
12
|
+
|
13
|
+
/* copy recovery codes */
|
14
|
+
function copyRecoveryCodes() {
|
15
|
+
var tmpTextarea = document.createElement("textarea");
|
16
|
+
var codes = document.querySelectorAll("#${olRecoveryCodesListId} li");
|
17
|
+
for (i = 0; i < codes.length; i++) {
|
18
|
+
tmpTextarea.value = tmpTextarea.value + codes[i].innerText + "\\n";
|
19
|
+
}
|
20
|
+
document.body.appendChild(tmpTextarea);
|
21
|
+
tmpTextarea.select();
|
22
|
+
document.execCommand("copy");
|
23
|
+
document.body.removeChild(tmpTextarea);
|
24
|
+
}
|
25
|
+
|
26
|
+
var copyButton = document.getElementById("copyRecoveryCodes");
|
27
|
+
copyButton && copyButton.addEventListener("click", function () {
|
28
|
+
copyRecoveryCodes();
|
29
|
+
});
|
30
|
+
|
31
|
+
/* download recovery codes */
|
32
|
+
function formatCurrentDateTime() {
|
33
|
+
var dt = new Date();
|
34
|
+
var options = {
|
35
|
+
month: 'long',
|
36
|
+
day: 'numeric',
|
37
|
+
year: 'numeric',
|
38
|
+
hour: 'numeric',
|
39
|
+
minute: 'numeric',
|
40
|
+
timeZoneName: 'short'
|
41
|
+
};
|
42
|
+
|
43
|
+
return dt.toLocaleString('en-US', options);
|
44
|
+
}
|
45
|
+
|
46
|
+
function parseRecoveryCodeList() {
|
47
|
+
var recoveryCodes = document.querySelectorAll("#${olRecoveryCodesListId} li");
|
48
|
+
var recoveryCodeList = "";
|
49
|
+
|
50
|
+
for (var i = 0; i < recoveryCodes.length; i++) {
|
51
|
+
var recoveryCodeLiElement = recoveryCodes[i].innerText;
|
52
|
+
recoveryCodeList += recoveryCodeLiElement + "\\r\\n";
|
53
|
+
}
|
54
|
+
|
55
|
+
return recoveryCodeList;
|
56
|
+
}
|
57
|
+
|
58
|
+
function buildDownloadContent() {
|
59
|
+
var recoveryCodeList = parseRecoveryCodeList();
|
60
|
+
var dt = new Date();
|
61
|
+
var options = {
|
62
|
+
month: 'long',
|
63
|
+
day: 'numeric',
|
64
|
+
year: 'numeric',
|
65
|
+
hour: 'numeric',
|
66
|
+
minute: 'numeric',
|
67
|
+
timeZoneName: 'short'
|
68
|
+
};
|
69
|
+
|
70
|
+
return fileBodyContent =
|
71
|
+
${JSON.stringify(msgStr("recovery-codes-download-file-header"))} + "\\n\\n" +
|
72
|
+
recoveryCodeList + "\\n" +
|
73
|
+
${JSON.stringify(msgStr("recovery-codes-download-file-description"))} + "\\n\\n" +
|
74
|
+
${JSON.stringify(msgStr("recovery-codes-download-file-date"))} + " " + formatCurrentDateTime();
|
75
|
+
}
|
76
|
+
|
77
|
+
function setUpDownloadLinkAndDownload(filename, text) {
|
78
|
+
var el = document.createElement('a');
|
79
|
+
el.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
|
80
|
+
el.setAttribute('download', filename);
|
81
|
+
el.style.display = 'none';
|
82
|
+
document.body.appendChild(el);
|
83
|
+
el.click();
|
84
|
+
document.body.removeChild(el);
|
85
|
+
}
|
86
|
+
|
87
|
+
function downloadRecoveryCodes() {
|
88
|
+
setUpDownloadLinkAndDownload('kc-download-recovery-codes.txt', buildDownloadContent());
|
89
|
+
}
|
90
|
+
|
91
|
+
var downloadButton = document.getElementById("downloadRecoveryCodes");
|
92
|
+
downloadButton && downloadButton.addEventListener("click", downloadRecoveryCodes);
|
93
|
+
|
94
|
+
/* print recovery codes */
|
95
|
+
function buildPrintContent() {
|
96
|
+
var recoveryCodeListHTML = document.getElementById('${olRecoveryCodesListId}').innerHTML;
|
97
|
+
var styles =
|
98
|
+
\`@page { size: auto; margin-top: 0; }
|
99
|
+
body { width: 480px; }
|
100
|
+
div { list-style-type: none; font-family: monospace }
|
101
|
+
p:first-of-type { margin-top: 48px }\`;
|
102
|
+
|
103
|
+
return printFileContent =
|
104
|
+
"<html><style>" + styles + "</style><body>" +
|
105
|
+
"<title>kc-download-recovery-codes</title>" +
|
106
|
+
"<p>" + ${JSON.stringify(msgStr("recovery-codes-download-file-header"))} + "</p>" +
|
107
|
+
"<div>" + recoveryCodeListHTML + "</div>" +
|
108
|
+
"<p>" + ${JSON.stringify(msgStr("recovery-codes-download-file-description"))} + "</p>" +
|
109
|
+
"<p>" + ${JSON.stringify(msgStr("recovery-codes-download-file-date"))} + " " + formatCurrentDateTime() + "</p>" +
|
110
|
+
"</body></html>";
|
111
|
+
}
|
112
|
+
|
113
|
+
function printRecoveryCodes() {
|
114
|
+
var w = window.open();
|
115
|
+
w.document.write(buildPrintContent());
|
116
|
+
w.print();
|
117
|
+
w.close();
|
118
|
+
}
|
119
|
+
|
120
|
+
var printButton = document.getElementById("printRecoveryCodes");
|
121
|
+
printButton && printButton.addEventListener("click", printRecoveryCodes);
|
122
|
+
`
|
123
|
+
}
|
124
|
+
]
|
125
|
+
});
|
126
|
+
useEffect(() => {
|
127
|
+
if (isFetchingTranslations) {
|
128
|
+
return;
|
129
|
+
}
|
130
|
+
insertScriptTags();
|
131
|
+
}, [isFetchingTranslations]);
|
132
|
+
}
|
133
|
+
//# sourceMappingURL=LoginRecoveryAuthnCodeConfig.useScript.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"LoginRecoveryAuthnCodeConfig.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAO5E,MAAM,UAAU,SAAS,CAAC,MAAyD;IAC/E,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE/C,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,GAAG,EAAE,CAAC;;;;;kEAK+B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0EA+Bb,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;8BAwBjE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;;8BAE7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;8BAClE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;8EAsBX,qBAAqB;;;;;;;;;;sCAU7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;;sCAE7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;sCAClE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;;;;;;;;iBAahF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,gBAAgB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
@@ -12,7 +12,7 @@ export default function LoginUsername(props) {
|
|
12
12
|
const { social, realm, url, usernameHidden, login, registrationDisabled, messagesPerField } = kcContext;
|
13
13
|
const { msg, msgStr } = i18n;
|
14
14
|
const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
|
15
|
-
return (_jsx(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, displayMessage: !messagesPerField.existsError("username"), displayInfo: realm.password && realm.registrationAllowed && !registrationDisabled, infoNode: _jsx("div", Object.assign({ id: "kc-registration" }, { children: _jsxs("span", { children: [msg("noAccount"), _jsx("a", Object.assign({ tabIndex: 6, href: url.registrationUrl }, { children: msg("doRegister") }))] }) })), headerNode: msg("doLogIn"), socialProvidersNode: _jsx(_Fragment, { children: realm.password && social.providers !== undefined && social.providers.length !== 0 && (_jsxs("div", Object.assign({ id: "kc-social-providers", className: kcClsx("kcFormSocialAccountSectionClass") }, { children: [_jsx("hr", {}), _jsx("h2", { children: msg("identity-provider-login-label") }), _jsx("ul", Object.assign({ className: kcClsx("kcFormSocialAccountListClass", social.providers.length > 3 && "kcFormSocialAccountListGridClass") }, { children: social.providers.map((...[p, , providers]) => (_jsx("li", { children: _jsxs("a", Object.assign({ id: `social-${p.alias}`, className: kcClsx("kcFormSocialAccountListButtonClass", providers.length > 3 && "kcFormSocialAccountGridItem"), type: "button", href: p.loginUrl }, { children: [p.iconClasses && _jsx("i", { className: clsx(kcClsx("kcCommonLogoIdP"), p.iconClasses), "aria-hidden": "true" }), _jsx("span", Object.assign({ className: clsx(kcClsx("kcFormSocialAccountNameClass"), p.iconClasses && "kc-social-icon-text") }, { children: p.displayName }))] })) }, p.alias))) }))] }))) }) }, { children: _jsx("div", Object.assign({ id: "kc-form" }, { children: _jsx("div", Object.assign({ id: "kc-form-wrapper" }, { children: realm.password && (_jsxs("form", Object.assign({ id: "kc-form-login", onSubmit: () => {
|
15
|
+
return (_jsx(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, displayMessage: !messagesPerField.existsError("username"), displayInfo: realm.password && realm.registrationAllowed && !registrationDisabled, infoNode: _jsx("div", Object.assign({ id: "kc-registration" }, { children: _jsxs("span", { children: [msg("noAccount"), _jsx("a", Object.assign({ tabIndex: 6, href: url.registrationUrl }, { children: msg("doRegister") }))] }) })), headerNode: msg("doLogIn"), socialProvidersNode: _jsx(_Fragment, { children: realm.password && (social === null || social === void 0 ? void 0 : social.providers) !== undefined && social.providers.length !== 0 && (_jsxs("div", Object.assign({ id: "kc-social-providers", className: kcClsx("kcFormSocialAccountSectionClass") }, { children: [_jsx("hr", {}), _jsx("h2", { children: msg("identity-provider-login-label") }), _jsx("ul", Object.assign({ className: kcClsx("kcFormSocialAccountListClass", social.providers.length > 3 && "kcFormSocialAccountListGridClass") }, { children: social.providers.map((...[p, , providers]) => (_jsx("li", { children: _jsxs("a", Object.assign({ id: `social-${p.alias}`, className: kcClsx("kcFormSocialAccountListButtonClass", providers.length > 3 && "kcFormSocialAccountGridItem"), type: "button", href: p.loginUrl }, { children: [p.iconClasses && _jsx("i", { className: clsx(kcClsx("kcCommonLogoIdP"), p.iconClasses), "aria-hidden": "true" }), _jsx("span", Object.assign({ className: clsx(kcClsx("kcFormSocialAccountNameClass"), p.iconClasses && "kc-social-icon-text") }, { children: p.displayName }))] })) }, p.alias))) }))] }))) }) }, { children: _jsx("div", Object.assign({ id: "kc-form" }, { children: _jsx("div", Object.assign({ id: "kc-form-wrapper" }, { children: realm.password && (_jsxs("form", Object.assign({ id: "kc-form-login", onSubmit: () => {
|
16
16
|
setIsLoginButtonDisabled(true);
|
17
17
|
return true;
|
18
18
|
}, action: url.loginAction, method: "post" }, { children: [!usernameHidden && (_jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("label", Object.assign({ htmlFor: "username", className: kcClsx("kcLabelClass") }, { children: !realm.loginWithEmailAllowed
|