keycloakify 11.11.3 → 11.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +1 -0
  2. package/bin/375.index.js +1 -1
  3. package/bin/main.js +2 -2
  4. package/bin/shared/constants.d.ts +1 -1
  5. package/bin/shared/constants.js +1 -1
  6. package/bin/shared/constants.js.map +1 -1
  7. package/login/KcContext/KcContext.d.ts +20 -0
  8. package/login/KcContext/KcContext.js.map +1 -1
  9. package/login/KcContext/kcContextMocks.js +6 -2
  10. package/login/KcContext/kcContextMocks.js.map +1 -1
  11. package/login/pages/Login.js +20 -13
  12. package/login/pages/Login.js.map +1 -1
  13. package/login/pages/Login.useScript.d.ts +21 -0
  14. package/login/pages/Login.useScript.js +47 -0
  15. package/login/pages/Login.useScript.js.map +1 -0
  16. package/login/pages/LoginPassword.js +15 -8
  17. package/login/pages/LoginPassword.js.map +1 -1
  18. package/login/pages/LoginPassword.useScript.d.ts +21 -0
  19. package/login/pages/LoginPassword.useScript.js +47 -0
  20. package/login/pages/LoginPassword.useScript.js.map +1 -0
  21. package/login/pages/LoginUsername.js +3 -3
  22. package/login/pages/LoginUsername.js.map +1 -1
  23. package/login/pages/LoginUsername.useScript.d.ts +1 -1
  24. package/login/pages/LoginUsername.useScript.js +3 -3
  25. package/login/pages/LoginUsername.useScript.js.map +1 -1
  26. package/package.json +9 -1
  27. package/src/bin/shared/constants.ts +1 -1
  28. package/src/bin/start-keycloak/start-keycloak.ts +2 -2
  29. package/src/login/KcContext/KcContext.ts +20 -0
  30. package/src/login/KcContext/kcContextMocks.ts +22 -2
  31. package/src/login/pages/Login.tsx +45 -1
  32. package/src/login/pages/Login.useScript.tsx +71 -0
  33. package/src/login/pages/LoginPassword.tsx +44 -1
  34. package/src/login/pages/LoginPassword.useScript.tsx +71 -0
  35. package/src/login/pages/LoginUsername.tsx +6 -6
  36. package/src/login/pages/LoginUsername.useScript.tsx +4 -4
  37. package/vite-plugin/index.js +2 -2
package/README.md CHANGED
@@ -137,6 +137,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
137
137
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/rgrosjean"><img src="https://avatars.githubusercontent.com/u/39985706?v=4?s=100" width="100px;" alt="rgrosjean"/><br /><sub><b>rgrosjean</b></sub></a><br /><a href="https://github.com/keycloakify/keycloakify/commits?author=rgrosjean" title="Code">💻</a> <a href="https://github.com/keycloakify/keycloakify/commits?author=rgrosjean" title="Tests">⚠️</a></td>
138
138
  <td align="center" valign="top" width="14.28%"><a href="http://about.me/lleir"><img src="https://avatars.githubusercontent.com/u/34919?v=4?s=100" width="100px;" alt="Lleïr Borràs Metje"/><br /><sub><b>Lleïr Borràs Metje</b></sub></a><br /><a href="https://github.com/keycloakify/keycloakify/issues?q=author%3Alleirborras" title="Bug reports">🐛</a></td>
139
139
  <td align="center" valign="top" width="14.28%"><a href="https://waynekirimi.netlify.app/"><img src="https://avatars.githubusercontent.com/u/37283450?v=4?s=100" width="100px;" alt="Wayne Kirimi"/><br /><sub><b>Wayne Kirimi</b></sub></a><br /><a href="https://github.com/keycloakify/keycloakify/commits?author=waynemorphic" title="Code">💻</a></td>
140
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/discostur"><img src="https://avatars.githubusercontent.com/u/2615420?v=4?s=100" width="100px;" alt="Kilian Ries"/><br /><sub><b>Kilian Ries</b></sub></a><br /><a href="https://github.com/keycloakify/keycloakify/commits?author=discostur" title="Code">💻</a></td>
140
141
  </tr>
141
142
  </tbody>
142
143
  </table>
package/bin/375.index.js CHANGED
@@ -1727,7 +1727,7 @@ async function command(params) {
1727
1727
  ? (console.log(source_default().yellow("WARNING: With older version of keycloak your changes to the realm configuration are not persisted")),
1728
1728
  [])
1729
1729
  : [
1730
- (0,external_path_.join)((0,getThisCodebaseRootDirPath/* getThisCodebaseRootDirPath */.e)(), "src", "bin", "start-keycloak", constants/* KEYCLOAKIFY_LOGIN_JAR_BASENAME */.Tr)
1730
+ (0,external_path_.join)((0,getThisCodebaseRootDirPath/* getThisCodebaseRootDirPath */.e)(), "src", "bin", "start-keycloak", constants/* KEYCLOAKIFY_LOGGING_JAR_BASENAME */.mr)
1731
1731
  ]),
1732
1732
  ...(await Promise.all(buildContext.startKeycloakOptions.extensionJars.map(async (extensionJar) => {
1733
1733
  switch (extensionJar.type) {
package/bin/main.js CHANGED
@@ -803,12 +803,12 @@ function getBuildContext(params) {
803
803
  /* harmony export */ "PC": () => (/* binding */ KEYCLOAK_THEME),
804
804
  /* harmony export */ "Sz": () => (/* binding */ KEYCLOAKIFY_SPA_DEV_SERVER_PORT),
805
805
  /* harmony export */ "TE": () => (/* binding */ VITE_PLUGIN_SUB_SCRIPTS_ENV_NAMES),
806
- /* harmony export */ "Tr": () => (/* binding */ KEYCLOAKIFY_LOGIN_JAR_BASENAME),
807
806
  /* harmony export */ "XV": () => (/* binding */ LOGIN_THEME_PAGE_IDS),
808
807
  /* harmony export */ "_L": () => (/* binding */ FALLBACK_LANGUAGE_TAG),
809
808
  /* harmony export */ "_S": () => (/* binding */ CUSTOM_HANDLER_ENV_NAMES),
810
809
  /* harmony export */ "ac": () => (/* binding */ BUILD_FOR_KEYCLOAK_MAJOR_VERSION_ENV_NAME),
811
810
  /* harmony export */ "jp": () => (/* binding */ TEST_APP_URL),
811
+ /* harmony export */ "mr": () => (/* binding */ KEYCLOAKIFY_LOGGING_JAR_BASENAME),
812
812
  /* harmony export */ "sv": () => (/* binding */ CONTAINER_NAME),
813
813
  /* harmony export */ "yV": () => (/* binding */ ACCOUNT_THEME_PAGE_IDS)
814
814
  /* harmony export */ });
@@ -882,7 +882,7 @@ const CUSTOM_HANDLER_ENV_NAMES = {
882
882
  const KEYCLOAK_THEME = "keycloak-theme";
883
883
  const KEYCLOAKIFY_SPA_DEV_SERVER_PORT = "KEYCLOAKIFY_SPA_DEV_SERVER_PORT";
884
884
  const KEYCLOAKIFY_LOGGING_VERSION = "1.0.3";
885
- const KEYCLOAKIFY_LOGIN_JAR_BASENAME = `keycloakify-logging-${KEYCLOAKIFY_LOGGING_VERSION}.jar`;
885
+ const KEYCLOAKIFY_LOGGING_JAR_BASENAME = `keycloakify-logging-${KEYCLOAKIFY_LOGGING_VERSION}.jar`;
886
886
  const TEST_APP_URL = "https://my-theme.keycloakify.dev";
887
887
  //# sourceMappingURL=constants.js.map
888
888
 
@@ -24,5 +24,5 @@ export declare const CUSTOM_HANDLER_ENV_NAMES: {
24
24
  export declare const KEYCLOAK_THEME = "keycloak-theme";
25
25
  export declare const KEYCLOAKIFY_SPA_DEV_SERVER_PORT = "KEYCLOAKIFY_SPA_DEV_SERVER_PORT";
26
26
  export declare const KEYCLOAKIFY_LOGGING_VERSION = "1.0.3";
27
- export declare const KEYCLOAKIFY_LOGIN_JAR_BASENAME: string;
27
+ export declare const KEYCLOAKIFY_LOGGING_JAR_BASENAME: string;
28
28
  export declare const TEST_APP_URL = "https://my-theme.keycloakify.dev";
@@ -67,6 +67,6 @@ export const CUSTOM_HANDLER_ENV_NAMES = {
67
67
  export const KEYCLOAK_THEME = "keycloak-theme";
68
68
  export const KEYCLOAKIFY_SPA_DEV_SERVER_PORT = "KEYCLOAKIFY_SPA_DEV_SERVER_PORT";
69
69
  export const KEYCLOAKIFY_LOGGING_VERSION = "1.0.3";
70
- export const KEYCLOAKIFY_LOGIN_JAR_BASENAME = `keycloakify-logging-${KEYCLOAKIFY_LOGGING_VERSION}.jar`;
70
+ export const KEYCLOAKIFY_LOGGING_JAR_BASENAME = `keycloakify-logging-${KEYCLOAKIFY_LOGGING_VERSION}.jar`;
71
71
  export const TEST_APP_URL = "https://my-theme.keycloakify.dev";
72
72
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/bin/shared/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC1C,yBAAyB,EAAE,2BAA2B;IACtD,gBAAgB,EAAE,kBAAkB;IACpC,IAAI,EAAE,MAAM;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAIlE,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC7C,qBAAqB,EAAE,mCAAmC;IAC1D,mBAAmB,EAAE,iCAAiC;IACtD,wBAAwB,EAAE,sCAAsC;CAC1D,CAAC;AAEX,MAAM,CAAC,MAAM,yCAAyC,GAClD,8CAA8C,CAAC;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAChC,WAAW;IACX,oBAAoB;IACpB,oBAAoB;IACpB,2BAA2B;IAC3B,uBAAuB;IACvB,cAAc;IACd,UAAU;IACV,WAAW;IACX,0BAA0B;IAC1B,wBAAwB;IACxB,WAAW;IACX,0CAA0C;IAC1C,uBAAuB;IACvB,eAAe;IACf,0BAA0B;IAC1B,2BAA2B;IAC3B,4BAA4B;IAC5B,0BAA0B;IAC1B,wBAAwB;IACxB,uBAAuB;IACvB,oBAAoB;IACpB,6BAA6B;IAC7B,kBAAkB;IAClB,0BAA0B;IAC1B,oBAAoB;IACpB,uBAAuB;IACvB,UAAU;IACV,4BAA4B;IAC5B,yBAAyB;IACzB,sCAAsC;IACtC,qCAAqC;IACrC,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,6CAA6C;IAC7C,qCAAqC;IACrC,yBAAyB;CACnB,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,cAAc;IACd,aAAa;IACb,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,SAAS;IACT,uBAAuB;CACjB,CAAC;AAKX,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,YAAY,EAAE,0BAA0B;IACxC,aAAa,EAAE,2BAA2B;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE/C,MAAM,CAAC,MAAM,+BAA+B,GAAG,iCAAiC,CAAC;AAEjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAEnD,MAAM,CAAC,MAAM,8BAA8B,GAAG,uBAAuB,2BAA2B,MAAM,CAAC;AAEvG,MAAM,CAAC,MAAM,YAAY,GAAG,kCAAkC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/bin/shared/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC1C,yBAAyB,EAAE,2BAA2B;IACtD,gBAAgB,EAAE,kBAAkB;IACpC,IAAI,EAAE,MAAM;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAIlE,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC7C,qBAAqB,EAAE,mCAAmC;IAC1D,mBAAmB,EAAE,iCAAiC;IACtD,wBAAwB,EAAE,sCAAsC;CAC1D,CAAC;AAEX,MAAM,CAAC,MAAM,yCAAyC,GAClD,8CAA8C,CAAC;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAChC,WAAW;IACX,oBAAoB;IACpB,oBAAoB;IACpB,2BAA2B;IAC3B,uBAAuB;IACvB,cAAc;IACd,UAAU;IACV,WAAW;IACX,0BAA0B;IAC1B,wBAAwB;IACxB,WAAW;IACX,0CAA0C;IAC1C,uBAAuB;IACvB,eAAe;IACf,0BAA0B;IAC1B,2BAA2B;IAC3B,4BAA4B;IAC5B,0BAA0B;IAC1B,wBAAwB;IACxB,uBAAuB;IACvB,oBAAoB;IACpB,6BAA6B;IAC7B,kBAAkB;IAClB,0BAA0B;IAC1B,oBAAoB;IACpB,uBAAuB;IACvB,UAAU;IACV,4BAA4B;IAC5B,yBAAyB;IACzB,sCAAsC;IACtC,qCAAqC;IACrC,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,6CAA6C;IAC7C,qCAAqC;IACrC,yBAAyB;CACnB,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,cAAc;IACd,aAAa;IACb,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,SAAS;IACT,uBAAuB;CACjB,CAAC;AAKX,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,YAAY,EAAE,0BAA0B;IACxC,aAAa,EAAE,2BAA2B;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE/C,MAAM,CAAC,MAAM,+BAA+B,GAAG,iCAAiC,CAAC;AAEjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAEnD,MAAM,CAAC,MAAM,gCAAgC,GAAG,uBAAuB,2BAA2B,MAAM,CAAC;AAEzG,MAAM,CAAC,MAAM,YAAY,GAAG,kCAAkC,CAAC"}
@@ -147,6 +147,16 @@ export declare namespace KcContext {
147
147
  iconClasses?: string;
148
148
  }[];
149
149
  };
150
+ enableWebAuthnConditionalUI?: boolean;
151
+ authenticators?: {
152
+ authenticators: WebauthnAuthenticate.WebauthnAuthenticator[];
153
+ };
154
+ challenge: string;
155
+ userVerification: WebauthnAuthenticate["userVerification"];
156
+ rpId: string;
157
+ createTimeout: number | string;
158
+ isUserIdentified: "true" | "false";
159
+ shouldDisplayAuthenticators?: boolean;
150
160
  };
151
161
  type Register = Common & {
152
162
  pageId: "register.ftl";
@@ -291,6 +301,16 @@ export declare namespace KcContext {
291
301
  showTryAnotherWayLink?: boolean;
292
302
  attemptedUsername?: string;
293
303
  };
304
+ enableWebAuthnConditionalUI?: boolean;
305
+ authenticators?: {
306
+ authenticators: WebauthnAuthenticate.WebauthnAuthenticator[];
307
+ };
308
+ challenge: string;
309
+ userVerification: WebauthnAuthenticate["userVerification"];
310
+ rpId: string;
311
+ createTimeout: number | string;
312
+ isUserIdentified: "true" | "false";
313
+ shouldDisplayAuthenticators?: boolean;
294
314
  };
295
315
  type WebauthnAuthenticate = Common & {
296
316
  pageId: "webauthn-authenticate.ftl";
@@ -1 +1 @@
1
- {"version":3,"file":"KcContext.js","sourceRoot":"","sources":["../../src/login/KcContext/KcContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAgEtC,MAAM,EAA2D,CAAC;AAysBlE;IAOI,MAAM,EAA4B,CAAC;IACnC,MAAM,EAAiC,CAAC;CAC3C"}
1
+ {"version":3,"file":"KcContext.js","sourceRoot":"","sources":["../../src/login/KcContext/KcContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAgEtC,MAAM,EAA2D,CAAC;AA6tBlE;IAOI,MAAM,EAA4B,CAAC;IACnC,MAAM,EAAiC,CAAC;CAC3C"}
@@ -173,7 +173,9 @@ const loginUrl = Object.assign(Object.assign({}, kcContextCommonMock.url), { log
173
173
  export const kcContextMocks = [
174
174
  id(Object.assign(Object.assign({}, kcContextCommonMock), { pageId: "login.ftl", url: loginUrl, realm: Object.assign(Object.assign({}, kcContextCommonMock.realm), { loginWithEmailAllowed: true, rememberMe: true, password: true, resetPasswordAllowed: true, registrationAllowed: true }), auth: kcContextCommonMock.auth, social: {
175
175
  displayInfo: true
176
- }, usernameHidden: false, login: {}, registrationDisabled: false })),
176
+ }, usernameHidden: false, login: {}, registrationDisabled: false, enableWebAuthnConditionalUI: false, authenticators: {
177
+ authenticators: []
178
+ }, challenge: "", userVerification: "not specified", rpId: "", createTimeout: "0", isUserIdentified: "false", shouldDisplayAuthenticators: false })),
177
179
  id(Object.assign(Object.assign({}, kcContextCommonMock), { url: Object.assign(Object.assign({}, loginUrl), { registrationAction: "#" }), isAppInitiatedAction: false, passwordRequired: true, recaptchaRequired: false, pageId: "register.ftl", profile: {
178
180
  attributesByName
179
181
  }, scripts: [
@@ -225,7 +227,9 @@ export const kcContextMocks = [
225
227
  id(Object.assign(Object.assign({}, kcContextCommonMock), { pageId: "login-username.ftl", url: loginUrl, realm: Object.assign(Object.assign({}, kcContextCommonMock.realm), { loginWithEmailAllowed: true, rememberMe: true, password: true, resetPasswordAllowed: true, registrationAllowed: true }), social: {
226
228
  displayInfo: true
227
229
  }, usernameHidden: false, login: {}, registrationDisabled: false, challenge: "", userVerification: "not specified", rpId: "", createTimeout: "0", isUserIdentified: "false" })),
228
- id(Object.assign(Object.assign({}, kcContextCommonMock), { pageId: "login-password.ftl", url: loginUrl, realm: Object.assign(Object.assign({}, kcContextCommonMock.realm), { resetPasswordAllowed: true }) })),
230
+ id(Object.assign(Object.assign({}, kcContextCommonMock), { pageId: "login-password.ftl", url: loginUrl, realm: Object.assign(Object.assign({}, kcContextCommonMock.realm), { resetPasswordAllowed: true }), enableWebAuthnConditionalUI: false, authenticators: {
231
+ authenticators: []
232
+ }, challenge: "", userVerification: "not specified", rpId: "", createTimeout: "0", isUserIdentified: "false", shouldDisplayAuthenticators: false })),
229
233
  id(Object.assign(Object.assign({}, kcContextCommonMock), { pageId: "webauthn-authenticate.ftl", url: loginUrl, authenticators: {
230
234
  authenticators: []
231
235
  }, realm: Object.assign(Object.assign({}, kcContextCommonMock.realm), { password: true, registrationAllowed: true }), challenge: "", userVerification: "not specified", rpId: "", createTimeout: "0", isUserIdentified: "false", shouldDisplayAuthenticators: false })),
@@ -1 +1 @@
1
- {"version":3,"file":"kcContextMocks.js","sourceRoot":"","sources":["../../src/login/KcContext/kcContextMocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kcContextMocks.js","sourceRoot":"","sources":["../../src/login/KcContext/kcContextMocks.ts"],"names":[],"mappings":"AAAA,OAAO,sCAAsC,CAAC;AAE9C,OAAO,EACH,8BAA8B,EAEjC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAe,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CACvC,EAAE,CAAc;IACZ;QACI,UAAU,EAAE;YACR,MAAM,EAAE;gBACJ,oBAAoB,EAAE,IAAI;gBAC1B,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,KAAK;aACb;SACJ;QACD,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,UAAU;QACxB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,UAAU;KACnB;IACD;QACI,UAAU,EAAE;YACR,MAAM,EAAE;gBACJ,GAAG,EAAE,KAAK;gBACV,oBAAoB,EAAE,IAAI;aAC7B;YACD,KAAK,EAAE;gBACH,oBAAoB,EAAE,IAAI;aAC7B;YACD,OAAO,EAAE;gBACL,oBAAoB,EAAE,IAAI;gBAC1B,OAAO,EAAE,cAAc;aAC1B;SACJ;QACD,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,OAAO;KAChB;IACD;QACI,UAAU,EAAE;YACR,MAAM,EAAE;gBACJ,GAAG,EAAE,KAAK;gBACV,oBAAoB,EAAE,IAAI;aAC7B;SACJ;QACD,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,WAAW;KACpB;IACD;QACI,UAAU,EAAE;YACR,MAAM,EAAE;gBACJ,GAAG,EAAE,KAAK;gBACV,oBAAoB,EAAE,IAAI;aAC7B;SACJ;QACD,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,UAAU;KACnB;CACJ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CACnD,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,QAAQ,GAAG,8BAA8B,CAAC,yBAAyB,QAAQ,CAAC;AAErG,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACjD,YAAY,EAAE,OAAO;IACrB,kBAAkB,EAAE,OAAO;IAC3B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,eAAe;IAC1B,GAAG,EAAE;QACD,WAAW,EAAE,GAAG;QAChB,aAAa;QACb,mBAAmB,EAAE,GAAG,aAAa,IAAI,8BAA8B,CAAC,gBAAgB,EAAE;QAC1F,mBAAmB,EAAE,GAAG;QACxB,QAAQ,EAAE,GAAG;QACb,sBAAsB,EAAE,GAAG;KAC9B;IACD,KAAK,EAAE;QACH,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;QACtB,eAAe,EAAE,SAAS;QAC1B,2BAA2B,EAAE,IAAI;QACjC,2BAA2B,EAAE,KAAK;KACrC;IACD,gBAAgB,EAAE;QACd,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;QACb,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,aAAa,EAAE,UAAa,SAAiB,EAAE,IAAO;YAClD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,CAAC;QACD,MAAM,EAAE,UAAU,SAAS;YACvB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;QACD,aAAa,EAAE,UAAU,GAAG,UAAU;YAClC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAChC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;oBAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;iBAC9B;aACJ;YACD,OAAO,EAAE,CAAC;QACd,CAAC;KACJ;IACD,MAAM,EAAE;QACJ,SAAS,EACL;YACI,4BAA4B;YAC5B,CAAC,IAAI,EAAE,SAAS,CAAC;YACjB,CAAC,IAAI,EAAE,OAAO,CAAC;YACf,CAAC,IAAI,EAAE,SAAS,CAAC;YACjB,CAAC,IAAI,EAAE,SAAS,CAAC;YACjB,CAAC,OAAO,EAAE,oBAAoB,CAAC;YAC/B,CAAC,IAAI,EAAE,UAAU,CAAC;YAClB,CAAC,IAAI,EAAE,SAAS,CAAC;YACjB,CAAC,IAAI,EAAE,UAAU,CAAC;YAClB,CAAC,IAAI,EAAE,UAAU,CAAC;YAClB,CAAC,OAAO,EAAE,MAAM,CAAC;YACjB,CAAC,IAAI,EAAE,SAAS,CAAC;YACjB,CAAC,IAAI,EAAE,SAAS,CAAC;YACjB,CAAC,IAAI,EAAE,KAAK,CAAC;YACb,CAAC,IAAI,EAAE,YAAY,CAAC;YACpB,CAAC,IAAI,EAAE,QAAQ,CAAC;YAChB,CAAC,IAAI,EAAE,QAAQ,CAAC;YAChB,CAAC,IAAI,EAAE,YAAY,CAAC;YACpB,CAAC,IAAI,EAAE,QAAQ,CAAC;YAChB,CAAC,IAAI,EAAE,SAAS,CAAC;YACjB,CAAC,IAAI,EAAE,OAAO,CAAC;YACf,CAAC,IAAI,EAAE,UAAU,CAAC;YAClB,CAAC,IAAI,EAAE,OAAO,CAAC;YACf,CAAC,IAAI,EAAE,OAAO,CAAC;YACf,CAAC,IAAI,EAAE,QAAQ,CAAC;YAChB,CAAC,IAAI,EAAE,SAAS,CAAC;YACjB,CAAC,IAAI,EAAE,UAAU,CAAC;YAClB,CAAC,IAAI,EAAE,WAAW,CAAC;YACnB,CAAC,IAAI,EAAE,KAAK,CAAC;YACb,CAAC,IAAI,EAAE,YAAY,CAAC;YACpB,CAAC,OAAO,EAAE,MAAM,CAAC;YACjB,2BAA2B;SAElC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE;YAC3B;gBAOI,MAA8B,CAAC;gBAC/B,MAAiC,CAAC;aACrC;YAED,OAAO;gBACH,WAAW;gBACX,KAAK;gBACL,GAAG,EAAE,mEAAmE;aAClE,CAAC;QACf,CAAC,CAAC;QAEF,kBAAkB,EAAE,IAAI;KAC3B;IACD,IAAI,EAAE;QACF,YAAY,EAAE,KAAK;QACnB,oBAAoB,EAAE,KAAK;QAC3B,qBAAqB,EAAE,KAAK;KAC/B;IACD,MAAM,EAAE;QACJ,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,EAAE;KACjB;IACD,OAAO,EAAE,EAAE;IACX,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE,EAAE;IACd,eAAe,EAAE;QACb,QAAQ,EAAE,EAAE;KACf;CACJ,CAAC;AAEF,MAAM,QAAQ,mCACP,mBAAmB,CAAC,GAAG,KAC1B,wBAAwB,EAAE,GAAG,EAC7B,eAAe,EAAE,GAAG,EACpB,8BAA8B,EAAE,GAAG,EACnC,WAAW,EAAE,GAAG,GACnB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,EACb,KAAK,kCACE,mBAAmB,CAAC,KAAK,KAC5B,qBAAqB,EAAE,IAAI,EAC3B,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,oBAAoB,EAAE,IAAI,EAC1B,mBAAmB,EAAE,IAAI,KAE7B,IAAI,EAAE,mBAAmB,CAAC,IAAK,EAC/B,MAAM,EAAE;YACJ,WAAW,EAAE,IAAI;SACpB,EACD,cAAc,EAAE,KAAK,EACrB,KAAK,EAAE,EAAE,EACT,oBAAoB,EAAE,KAAK,EAC3B,2BAA2B,EAAE,KAAK,EAClC,cAAc,EAAE;YACZ,cAAc,EAAE,EAAE;SACrB,EACD,SAAS,EAAE,EAAE,EACb,gBAAgB,EAAE,eAAe,EACjC,IAAI,EAAE,EAAE,EACR,aAAa,EAAE,GAAG,EAClB,gBAAgB,EAAE,OAAO,EACzB,2BAA2B,EAAE,KAAK,IACpC;IACF,EAAE,iCACK,mBAAmB,KACtB,GAAG,kCACI,QAAQ,KACX,kBAAkB,EAAE,GAAG,KAE3B,oBAAoB,EAAE,KAAK,EAC3B,gBAAgB,EAAE,IAAI,EACtB,iBAAiB,EAAE,KAAK,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE;YACL,gBAAgB;SACnB,EACD,OAAO,EAAE;QACL,2CAA2C;SAC9C,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,kBAAkB,EACjC,eAAe,EAAE,SAAS,EAC1B,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,GAAG,EACd,MAAM,EAAE;YACJ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,EAAE;SACjB,EACD,OAAO,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EACH,oGAAoG;SAC3G,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE;YACJ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,EAAE;SACjB,EACD,OAAO,EAAE;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EACH,qGAAqG;SAC5G,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,0BAA0B,EAClC,KAAK,kCACE,mBAAmB,CAAC,KAAK,KAC5B,qBAAqB,EAAE,KAAK,EAC5B,sBAAsB,EAAE,KAAK,KAEjC,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,EAAE,IACV;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE;YACF,KAAK,EAAE,oBAAoB;SAC9B,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,WAAW,IACrB;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,0CAA0C,EAClD,GAAG,EAAE,QAAQ,IACf;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE;YACH,IAAI,EAAE,6CAA6C;YACnD,qBAAqB,EAAE;gBACnB,EAAE,iBAAiB,EAAE,4BAA4B,EAAE;gBACnD,EAAE,iBAAiB,EAAE,0BAA0B,EAAE;gBACjD,EAAE,iBAAiB,EAAE,0BAA0B,EAAE;aACpD;YACD,MAAM,EAAE,SAAS;SACpB,EACD,GAAG,EAAE,QAAQ,IACf;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE;YACN,kBAAkB,EAAE;gBAChB;oBACI,EAAE,EAAE,KAAK;oBACT,SAAS,EAAE,QAAQ;iBACtB;gBACD;oBACI,EAAE,EAAE,KAAK;oBACT,SAAS,EAAE,QAAQ;iBACtB;aACJ;SACJ,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE,QAAQ,EACb,KAAK,kCACE,mBAAmB,CAAC,KAAK,KAC5B,qBAAqB,EAAE,IAAI,EAC3B,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,oBAAoB,EAAE,IAAI,EAC1B,mBAAmB,EAAE,IAAI,KAE7B,MAAM,EAAE;YACJ,WAAW,EAAE,IAAI;SACpB,EACD,cAAc,EAAE,KAAK,EACrB,KAAK,EAAE,EAAE,EACT,oBAAoB,EAAE,KAAK,EAE3B,SAAS,EAAE,EAAE,EACb,gBAAgB,EAAE,eAAe,EACjC,IAAI,EAAE,EAAE,EACR,aAAa,EAAE,GAAG,EAClB,gBAAgB,EAAE,OAAO,IAC3B;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE,QAAQ,EACb,KAAK,kCACE,mBAAmB,CAAC,KAAK,KAC5B,oBAAoB,EAAE,IAAI,KAE9B,2BAA2B,EAAE,KAAK,EAClC,cAAc,EAAE;YACZ,cAAc,EAAE,EAAE;SACrB,EACD,SAAS,EAAE,EAAE,EACb,gBAAgB,EAAE,eAAe,EACjC,IAAI,EAAE,EAAE,EACR,aAAa,EAAE,GAAG,EAClB,gBAAgB,EAAE,OAAO,EACzB,2BAA2B,EAAE,KAAK,IACpC;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,2BAA2B,EACnC,GAAG,EAAE,QAAQ,EACb,cAAc,EAAE;YACZ,cAAc,EAAE,EAAE;SACrB,EACD,KAAK,kCACE,mBAAmB,CAAC,KAAK,KAC5B,QAAQ,EAAE,IAAI,EACd,mBAAmB,EAAE,IAAI,KAE7B,SAAS,EAAE,EAAE,EACb,gBAAgB,EAAE,eAAe,EACjC,IAAI,EAAE,EAAE,EACR,aAAa,EAAE,GAAG,EAClB,gBAAgB,EAAE,OAAO,EACzB,2BAA2B,EAAE,KAAK,IACpC;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,2BAA2B,IACrC;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,0BAA0B,EAClC,OAAO,EAAE;YACL,gBAAgB;SACnB,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,4BAA4B,EACpC,QAAQ,EAAE,eAAe,IAC3B;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,0BAA0B,EAClC,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE;YACX,QAAQ,EAAE,YAAY;SACzB,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,uBAAuB,EAC/B,IAAI,EAAE;YACF,iBAAiB,EAAE,yCAAyC;YAC5D,KAAK,EAAE,GAAG;YACV,gBAAgB,EACZ,8zBAA8zB;YACl0B,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,sBAAsB;YAClC,cAAc,EAAE,EAAE;YAClB,qBAAqB,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC;YAC1D,MAAM,EAAE;gBACJ,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,CAAC;gBACT,eAAe,EAAE,CAAC;gBAClB,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM;aAChC;SACJ,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,kCACI,mBAAmB,CAAC,GAAG,KAC1B,mBAAmB,EAAE,YAAY,KAErC,MAAM,EAAE;YACJ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,EAAE;SACjB,EACD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IACjD;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,6BAA6B,EACrC,OAAO,EAAE;YACL,gBAAgB;SACnB,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE;YACL,gBAAgB,EAAE;gBACd,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC;aACnC;SACJ,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,0BAA0B,EAClC,IAAI,EAAE;YACF,wBAAwB,EAAE;gBACtB;oBACI,UAAU,EAAE,sCAAsC;oBAClD,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE,eAAe;oBACzB,YAAY,EAAE,yBAAyB;iBAC1C;gBACD;oBACI,UAAU,EAAE,sCAAsC;oBAClD,WAAW,EAAE,uBAAuB;oBACpC,QAAQ,EAAE,oBAAoB;oBAC9B,YAAY,EAAE,8BAA8B;iBAC/C;aACJ;SACJ,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE;YACN,GAAG,EAAE,GAAG;SACX,IACH;IACF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,wBAAwB,IAClC;IAEF,EAAE,iCACK,mBAAmB,KACtB,MAAM,EAAE,yBAAyB,EACjC,MAAM,EAAE;YACJ,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,OAAO;oBACb,qBAAqB,EAAE,GAAG;iBAC7B;gBACD;oBACI,IAAI,EAAE,QAAQ;oBACd,qBAAqB,EAAE,GAAG;iBAC7B;aACJ;SACJ,IACH;IACF,EAAE,+BACE,MAAM,EAAE,uBAAuB,IAC5B,mBAAmB,KACtB,SAAS,EAAE,yBAAyB,EACpC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,SAAS,EACnB,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EACvC,YAAY,EAAE,cAAc,EAC5B,IAAI,EAAE,aAAa,EACnB,+BAA+B,EAAE,QAAQ,EACzC,uBAAuB,EAAE,UAAU,EACnC,kBAAkB,EAAE,UAAU,EAC9B,2BAA2B,EAAE,WAAW,EACxC,aAAa,EAAE,KAAK,EACpB,oBAAoB,EAAE,qBAAqB,EAC3C,UAAU,EAAE,KAAK,EACjB,oBAAoB,EAAE,IAAI,IAC5B;IACF,EAAE,+BACE,MAAM,EAAE,uBAAuB,IAC5B,mBAAmB,KACtB,eAAe,EAAE,cAAc,IACjC;IACF,EAAE,+BACE,MAAM,EAAE,UAAU,IACf,mBAAmB,KACtB,IAAI,EAAE;YACF,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,QAAQ;SACjB,IACH;IACF,EAAE,+BACE,MAAM,EAAE,4BAA4B,IACjC,mBAAmB,KACtB,kBAAkB,EAAE,IAAI,IAC1B;IACF,EAAE,+BACE,MAAM,EAAE,sCAAsC,IAC3C,mBAAmB,KACtB,4BAA4B,EAAE;YAC1B,+BAA+B,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAClE,mCAAmC,EAAE,2BAA2B;YAChE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;SACpC,IACH;IACF,EAAE,+BACE,MAAM,EAAE,qCAAqC,IAC1C,mBAAmB,KACtB,2BAA2B,EAAE;YACzB,UAAU,EAAE,IAAI;SACnB,IACH;IACF,EAAE,+BACE,MAAM,EAAE,qBAAqB,IAC1B,mBAAmB,KACtB,wBAAwB,EAAE;YACtB,kBAAkB,EAAE;gBAChB;oBACI,EAAE,EAAE,QAAQ;oBACZ,SAAS,EAAE,cAAc;iBAC5B;gBACD;oBACI,EAAE,EAAE,QAAQ;oBACZ,SAAS,EAAE,cAAc;iBAC5B;gBACD;oBACI,EAAE,EAAE,QAAQ;oBACZ,SAAS,EAAE,YAAY;iBAC1B;aACJ;YACD,oBAAoB,EAAE,QAAQ;SACjC,IACH;IACF,EAAE,+BACE,MAAM,EAAE,qBAAqB,IAC1B,mBAAmB,KACtB,IAAI,EAAE;YACF,QAAQ,EAAE;gBACN,SAAS,EAAE,mCAAmC;gBAC9C,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,SAAS;aACtB;SACJ,IACH;IACF,EAAE,+BACE,MAAM,EAAE,oBAAoB,IACzB,mBAAmB,KACtB,oBAAoB,EAAE,IAAI,IAC5B;IACF,EAAE,+BACE,MAAM,EAAE,6CAA6C,IAClD,mBAAmB,KACtB,GAAG,kCACI,mBAAmB,CAAC,GAAG,KAC1B,eAAe,EAAE,GAAG,KAExB,KAAK,kCACE,mBAAmB,CAAC,KAAK,KAC5B,QAAQ,EAAE,IAAI,EACd,mBAAmB,EAAE,IAAI,KAE7B,oBAAoB,EAAE,KAAK,EAC3B,gBAAgB,EAAE,OAAO,EACzB,SAAS,EAAE,EAAE,EACb,gBAAgB,EAAE,eAAe,EACjC,IAAI,EAAE,EAAE,EACR,aAAa,EAAE,CAAC,EAChB,cAAc,EAAE;YACZ,cAAc,EAAE,EAAE;SACrB,EACD,2BAA2B,EAAE,KAAK,EAClC,KAAK,EAAE,EAAE,IACX;IACF,EAAE,+BACE,MAAM,EAAE,qCAAqC,IAC1C,mBAAmB,KACtB,GAAG,kCACI,mBAAmB,CAAC,GAAG,KAC1B,mBAAmB,EAAE,GAAG,KAE5B,cAAc,EAAE,QAAQ,IAC1B;IACF,EAAE,+BACE,MAAM,EAAE,yBAAyB,IAC9B,mBAAmB,KACtB,IAAI,EAAE;YACF,aAAa,EAAE;gBACX;oBACI,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,mBAAmB;iBAC5B;gBACD;oBACI,KAAK,EAAE,mBAAmB;oBAC1B,IAAI,EAAE,mBAAmB;iBAC5B;gBACD;oBACI,KAAK,EAAE,cAAc;oBACrB,IAAI,EAAE,cAAc;iBACvB;gBACD;oBACI,KAAK,EAAE,iBAAiB;iBAC3B;aACJ;SACJ,IACH;CACL,CAAC;AAEF;IAOI,MAAM,EAA4B,CAAC;IACnC,MAAM,EAAiC,CAAC;CAC3C"}
@@ -4,6 +4,7 @@ import { kcSanitize } from "../../lib/kcSanitize";
4
4
  import { useIsPasswordRevealed } from "../../tools/useIsPasswordRevealed";
5
5
  import { clsx } from "../../tools/clsx";
6
6
  import { getKcClsx } from "../../login/lib/kcClsx";
7
+ import { useScript } from "../../login/pages/Login.useScript";
7
8
  export default function Login(props) {
8
9
  var _a;
9
10
  const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
@@ -11,21 +12,27 @@ export default function Login(props) {
11
12
  doUseDefaultCss,
12
13
  classes
13
14
  });
14
- const { social, realm, url, usernameHidden, login, auth, registrationDisabled, messagesPerField } = kcContext;
15
+ const { social, realm, url, usernameHidden, login, auth, registrationDisabled, messagesPerField, enableWebAuthnConditionalUI, authenticators } = kcContext;
15
16
  const { msg, msgStr } = i18n;
16
17
  const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
17
- 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: kcSanitize(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: () => {
18
- setIsLoginButtonDisabled(true);
19
- return true;
20
- }, 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
21
- ? msg("username")
22
- : !realm.registrationEmailAsUsername
23
- ? msg("usernameOrEmail")
24
- : msg("email") })), _jsx("input", { tabIndex: 2, id: "username", className: kcClsx("kcInputClass"), name: "username", defaultValue: (_a = login.username) !== null && _a !== void 0 ? _a : "", type: "text", autoFocus: true, autoComplete: "username", "aria-invalid": messagesPerField.existsError("username", "password") }), messagesPerField.existsError("username", "password") && (_jsx("span", { id: "input-error", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite", dangerouslySetInnerHTML: {
25
- __html: kcSanitize(messagesPerField.getFirstError("username", "password"))
26
- } }))] }))), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("label", Object.assign({ htmlFor: "password", className: kcClsx("kcLabelClass") }, { children: msg("password") })), _jsx(PasswordWrapper, Object.assign({ kcClsx: kcClsx, i18n: i18n, passwordInputId: "password" }, { children: _jsx("input", { tabIndex: 3, id: "password", className: kcClsx("kcInputClass"), name: "password", type: "password", autoComplete: "current-password", "aria-invalid": messagesPerField.existsError("username", "password") }) })), usernameHidden && messagesPerField.existsError("username", "password") && (_jsx("span", { id: "input-error", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite", dangerouslySetInnerHTML: {
27
- __html: kcSanitize(messagesPerField.getFirstError("username", "password"))
28
- } }))] })), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass", "kcFormSettingClass") }, { children: [_jsx("div", Object.assign({ id: "kc-form-options" }, { children: realm.rememberMe && !usernameHidden && (_jsx("div", Object.assign({ className: "checkbox" }, { children: _jsxs("label", { children: [_jsx("input", { tabIndex: 5, id: "rememberMe", name: "rememberMe", type: "checkbox", defaultChecked: !!login.rememberMe }), " ", msg("rememberMe")] }) }))) })), _jsx("div", Object.assign({ className: kcClsx("kcFormOptionsWrapperClass") }, { children: realm.resetPasswordAllowed && (_jsx("span", { children: _jsx("a", Object.assign({ tabIndex: 6, href: url.loginResetCredentialsUrl }, { children: msg("doForgotPassword") })) })) }))] })), _jsxs("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormGroupClass") }, { children: [_jsx("input", { type: "hidden", id: "id-hidden-input", name: "credentialId", value: auth.selectedCredential }), _jsx("input", { tabIndex: 7, disabled: isLoginButtonDisabled, className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), name: "login", id: "kc-login", type: "submit", value: msgStr("doLogIn") })] }))] }))) })) })) })));
18
+ const webAuthnButtonId = "authenticateWebAuthnButton";
19
+ useScript({
20
+ webAuthnButtonId,
21
+ kcContext,
22
+ i18n
23
+ });
24
+ return (_jsxs(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: kcSanitize(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: () => {
25
+ setIsLoginButtonDisabled(true);
26
+ return true;
27
+ }, 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
28
+ ? msg("username")
29
+ : !realm.registrationEmailAsUsername
30
+ ? msg("usernameOrEmail")
31
+ : msg("email") })), _jsx("input", { tabIndex: 2, id: "username", className: kcClsx("kcInputClass"), name: "username", defaultValue: (_a = login.username) !== null && _a !== void 0 ? _a : "", type: "text", autoFocus: true, autoComplete: "username", "aria-invalid": messagesPerField.existsError("username", "password") }), messagesPerField.existsError("username", "password") && (_jsx("span", { id: "input-error", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite", dangerouslySetInnerHTML: {
32
+ __html: kcSanitize(messagesPerField.getFirstError("username", "password"))
33
+ } }))] }))), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("label", Object.assign({ htmlFor: "password", className: kcClsx("kcLabelClass") }, { children: msg("password") })), _jsx(PasswordWrapper, Object.assign({ kcClsx: kcClsx, i18n: i18n, passwordInputId: "password" }, { children: _jsx("input", { tabIndex: 3, id: "password", className: kcClsx("kcInputClass"), name: "password", type: "password", autoComplete: "current-password", "aria-invalid": messagesPerField.existsError("username", "password") }) })), usernameHidden && messagesPerField.existsError("username", "password") && (_jsx("span", { id: "input-error", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite", dangerouslySetInnerHTML: {
34
+ __html: kcSanitize(messagesPerField.getFirstError("username", "password"))
35
+ } }))] })), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass", "kcFormSettingClass") }, { children: [_jsx("div", Object.assign({ id: "kc-form-options" }, { children: realm.rememberMe && !usernameHidden && (_jsx("div", Object.assign({ className: "checkbox" }, { children: _jsxs("label", { children: [_jsx("input", { tabIndex: 5, id: "rememberMe", name: "rememberMe", type: "checkbox", defaultChecked: !!login.rememberMe }), " ", msg("rememberMe")] }) }))) })), _jsx("div", Object.assign({ className: kcClsx("kcFormOptionsWrapperClass") }, { children: realm.resetPasswordAllowed && (_jsx("span", { children: _jsx("a", Object.assign({ tabIndex: 6, href: url.loginResetCredentialsUrl }, { children: msg("doForgotPassword") })) })) }))] })), _jsxs("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormGroupClass") }, { children: [_jsx("input", { type: "hidden", id: "id-hidden-input", name: "credentialId", value: auth.selectedCredential }), _jsx("input", { tabIndex: 7, disabled: isLoginButtonDisabled, className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), name: "login", id: "kc-login", type: "submit", value: msgStr("doLogIn") })] }))] }))) })) })), enableWebAuthnConditionalUI && (_jsxs(_Fragment, { 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" })] })), authenticators !== undefined && authenticators.authenticators.length !== 0 && (_jsx(_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))) })) })), _jsx("br", {}), _jsx("input", { id: webAuthnButtonId, type: "button", className: kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass"), value: msgStr("passkey-doAuthenticate") })] }))] })));
29
36
  }
30
37
  function PasswordWrapper(props) {
31
38
  const { kcClsx, i18n, passwordInputId, children } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/login/pages/Login.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/login/pages/Login.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAe,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,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,2BAA2B,EAAE,cAAc,EAAE,GAC1I,SAAS,CAAC;IAEd,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1E,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;IAEtD,SAAS,CAAC;QACN,gBAAgB;QAChB,SAAS;QACT,IAAI;KACP,CAAC,CAAC;IAEH,OAAO,CACH,MAAC,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,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,MAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CACnF,6BAAK,EAAE,EAAC,qBAAqB,EAAC,SAAS,EAAE,MAAM,CAAC,iCAAiC,CAAC,iBAC9E,cAAM,EACN,uBAAK,GAAG,CAAC,+BAA+B,CAAC,GAAM,EAC/C,2BAAI,SAAS,EAAE,MAAM,CAAC,8BAA8B,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,kCAAkC,CAAC,gBACnH,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,AAAD,EAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAC3C,uBACI,2BACI,EAAE,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,CACb,oCAAoC,EACpC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,6BAA6B,CACxD,EACD,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,CAAC,CAAC,QAAQ,iBAEf,CAAC,CAAC,WAAW,IAAI,YAAG,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,iBAAc,MAAM,GAAK,EACvG,eACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,WAAW,IAAI,qBAAqB,CAAC,EAC/F,uBAAuB,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,GAC1D,KACR,IAfC,CAAC,CAAC,KAAK,CAgBX,CACR,CAAC,IACD,KACH,CACT,GACF,iBAGP,4BAAK,EAAE,EAAC,SAAS,gBACb,4BAAK,EAAE,EAAC,iBAAiB,gBACpB,KAAK,CAAC,QAAQ,IAAI,CACf,8BACI,EAAE,EAAC,eAAe,EAClB,QAAQ,EAAE,GAAG,EAAE;4BACX,wBAAwB,CAAC,IAAI,CAAC,CAAC;4BAC/B,OAAO,IAAI,CAAC;wBAChB,CAAC,EACD,MAAM,EAAE,GAAG,CAAC,WAAW,EACvB,MAAM,EAAC,MAAM,iBAEZ,CAAC,cAAc,IAAI,CAChB,6BAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,iBACtC,8BAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,gBACtD,CAAC,KAAK,CAAC,qBAAqB;4CACzB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;4CACjB,CAAC,CAAC,CAAC,KAAK,CAAC,2BAA2B;gDAClC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;gDACxB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAChB,EACR,gBACI,QAAQ,EAAE,CAAC,EACX,EAAE,EAAC,UAAU,EACb,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EACjC,IAAI,EAAC,UAAU,EACf,YAAY,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,EAAE,EAClC,IAAI,EAAC,MAAM,EACX,SAAS,QACT,YAAY,EAAC,UAAU,kBACT,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,GACpE,EACD,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CACrD,eACI,EAAE,EAAC,aAAa,EAChB,SAAS,EAAE,MAAM,CAAC,0BAA0B,CAAC,eACnC,QAAQ,EAClB,uBAAuB,EAAE;4CACrB,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;yCAC7E,GACH,CACL,KACC,CACT,EAED,6BAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,iBACtC,8BAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,gBACtD,GAAG,CAAC,UAAU,CAAC,IACZ,EACR,KAAC,eAAe,kBAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAC,UAAU,gBACnE,gBACI,QAAQ,EAAE,CAAC,EACX,EAAE,EAAC,UAAU,EACb,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EACjC,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,UAAU,EACf,YAAY,EAAC,kBAAkB,kBACjB,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,GACpE,IACY,EACjB,cAAc,IAAI,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CACvE,eACI,EAAE,EAAC,aAAa,EAChB,SAAS,EAAE,MAAM,CAAC,0BAA0B,CAAC,eACnC,QAAQ,EAClB,uBAAuB,EAAE;4CACrB,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;yCAC7E,GACH,CACL,KACC,EAEN,6BAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,iBAC5D,4BAAK,EAAE,EAAC,iBAAiB,gBACpB,KAAK,CAAC,UAAU,IAAI,CAAC,cAAc,IAAI,CACpC,4BAAK,SAAS,EAAC,UAAU,gBACrB,4BACI,gBACI,QAAQ,EAAE,CAAC,EACX,EAAE,EAAC,YAAY,EACf,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,UAAU,EACf,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,GACpC,EAAC,GAAG,EACL,GAAG,CAAC,YAAY,CAAC,IACd,IACN,CACT,IACC,EACN,4BAAK,SAAS,EAAE,MAAM,CAAC,2BAA2B,CAAC,gBAC9C,KAAK,CAAC,oBAAoB,IAAI,CAC3B,yBACI,0BAAG,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,wBAAwB,gBAC7C,GAAG,CAAC,kBAAkB,CAAC,IACxB,GACD,CACV,IACC,KACJ,EAEN,6BAAK,EAAE,EAAC,iBAAiB,EAAC,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,iBAC3D,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,iBAAiB,EAAC,IAAI,EAAC,cAAc,EAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,GAAI,EAChG,gBACI,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,EACtG,IAAI,EAAC,OAAO,EACZ,EAAE,EAAC,UAAU,EACb,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GAC1B,KACA,KACH,CACV,IACC,IACJ,EACL,2BAA2B,IAAI,CAC5B,8BACI,8BAAM,EAAE,EAAC,SAAS,EAAC,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBACrD,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,gBAAgB,EAAC,IAAI,EAAC,gBAAgB,GAAG,EACjE,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,mBAAmB,EAAC,IAAI,EAAC,mBAAmB,GAAG,EACvE,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,WAAW,EAAC,IAAI,EAAC,WAAW,GAAG,EACvD,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,cAAc,EAAC,IAAI,EAAC,cAAc,GAAG,EAC7D,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,YAAY,EAAC,IAAI,EAAC,YAAY,GAAG,EACzD,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,GAAG,KAC5C,EAEN,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,CAC3E,4BACI,6BAAM,EAAE,EAAC,cAAc,EAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,gBACnD,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,CACrD,gBAAe,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,eAAe,EAAC,QAAQ,QAAC,KAAK,EAAE,aAAa,CAAC,YAAY,IAAhF,CAAC,CAAmF,CACnG,CAAC,IACC,GACR,CACN,EACD,cAAM,EAEN,gBACI,EAAE,EAAE,gBAAgB,EACpB,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,EACtG,KAAK,EAAE,MAAM,CAAC,wBAAwB,CAAC,GACzC,IACH,CACN,KACM,CACd,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,KAAqF;IAC1G,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE1D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,MAAM,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,GAAG,qBAAqB,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;IAEpG,OAAO,CACH,6BAAK,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,iBACjC,QAAQ,EACT,+BACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,qCAAqC,CAAC,gBAC5C,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,mBACzD,eAAe,EAC9B,OAAO,EAAE,wBAAwB,gBAEjC,YAAG,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,kCAAkC,CAAC,wBAAgB,IAC7H,KACP,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { KcContext } from "../../login/KcContext/KcContext";
2
+ type KcContextLike = {
3
+ url: {
4
+ resourcesPath: string;
5
+ };
6
+ isUserIdentified: "true" | "false";
7
+ challenge: string;
8
+ userVerification: KcContext.WebauthnAuthenticate["userVerification"];
9
+ rpId: string;
10
+ createTimeout: number | string;
11
+ };
12
+ type I18nLike = {
13
+ msgStr: (key: "webauthn-unsupported-browser-text") => string;
14
+ isFetchingTranslations: boolean;
15
+ };
16
+ export declare function useScript(params: {
17
+ webAuthnButtonId: string;
18
+ kcContext: KcContextLike;
19
+ i18n: I18nLike;
20
+ }): void;
21
+ export {};
@@ -0,0 +1,47 @@
1
+ import { useEffect } from "react";
2
+ import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
3
+ import { assert } from "../../tools/assert";
4
+ import { waitForElementMountedOnDom } from "../../tools/waitForElementMountedOnDom";
5
+ assert();
6
+ assert();
7
+ export function useScript(params) {
8
+ const { webAuthnButtonId, kcContext, i18n } = params;
9
+ const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = kcContext;
10
+ const { msgStr, isFetchingTranslations } = i18n;
11
+ const { insertScriptTags } = useInsertScriptTags({
12
+ componentOrHookName: "Login",
13
+ scriptTags: [
14
+ {
15
+ type: "module",
16
+ textContent: () => `
17
+
18
+ import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
19
+ const authButton = document.getElementById('${webAuthnButtonId}');
20
+ authButton.addEventListener("click", function() {
21
+ const input = {
22
+ isUserIdentified : ${isUserIdentified},
23
+ challenge : '${challenge}',
24
+ userVerification : '${userVerification}',
25
+ rpId : '${rpId}',
26
+ createTimeout : ${createTimeout},
27
+ errmsg : ${JSON.stringify(msgStr("webauthn-unsupported-browser-text"))}
28
+ };
29
+ authenticateByWebAuthn(input);
30
+ });
31
+ `
32
+ }
33
+ ]
34
+ });
35
+ useEffect(() => {
36
+ if (isFetchingTranslations) {
37
+ return;
38
+ }
39
+ (async () => {
40
+ await waitForElementMountedOnDom({
41
+ elementId: webAuthnButtonId
42
+ });
43
+ insertScriptTags();
44
+ })();
45
+ }, [isFetchingTranslations]);
46
+ }
47
+ //# sourceMappingURL=Login.useScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Login.useScript.js","sourceRoot":"","sources":["../../src/login/pages/Login.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;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAa1F,MAAM,EAAoE,CAAC;AAC3E,MAAM,EAAwD,CAAC;AAO/D,MAAM,UAAU,SAAS,CAAC,MAA8E;IACpG,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAErD,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,OAAO;QAC5B,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;;8DAE2B,GAAG,CAAC,aAAa;kEACb,gBAAgB;;;iDAGjC,gBAAgB;2CACtB,SAAS;kDACF,gBAAgB;sCAC5B,IAAI;8CACI,aAAa;uCACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,CAAC,KAAK,IAAI,EAAE;YACR,MAAM,0BAA0B,CAAC;gBAC7B,SAAS,EAAE,gBAAgB;aAC9B,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
@@ -1,24 +1,31 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { kcSanitize } from "../../lib/kcSanitize";
4
4
  import { clsx } from "../../tools/clsx";
5
5
  import { useIsPasswordRevealed } from "../../tools/useIsPasswordRevealed";
6
6
  import { getKcClsx } from "../../login/lib/kcClsx";
7
+ import { useScript } from "../../login/pages/LoginPassword.useScript";
7
8
  export default function LoginPassword(props) {
8
9
  const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
9
10
  const { kcClsx } = getKcClsx({
10
11
  doUseDefaultCss,
11
12
  classes
12
13
  });
13
- const { realm, url, messagesPerField } = kcContext;
14
+ const { realm, url, messagesPerField, enableWebAuthnConditionalUI, authenticators } = kcContext;
14
15
  const { msg, msgStr } = i18n;
15
16
  const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
16
- return (_jsx(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, headerNode: msg("doLogIn"), displayMessage: !messagesPerField.existsError("password") }, { children: _jsx("div", Object.assign({ id: "kc-form" }, { children: _jsx("div", Object.assign({ id: "kc-form-wrapper" }, { children: _jsxs("form", Object.assign({ id: "kc-form-login", onSubmit: () => {
17
- setIsLoginButtonDisabled(true);
18
- return true;
19
- }, action: url.loginAction, method: "post" }, { children: [_jsxs("div", Object.assign({ className: clsx(kcClsx("kcFormGroupClass"), "no-bottom-margin") }, { children: [_jsx("hr", {}), _jsx("label", Object.assign({ htmlFor: "password", className: kcClsx("kcLabelClass") }, { children: msg("password") })), _jsx(PasswordWrapper, Object.assign({ kcClsx: kcClsx, i18n: i18n, passwordInputId: "password" }, { children: _jsx("input", { tabIndex: 2, id: "password", className: kcClsx("kcInputClass"), name: "password", type: "password", autoFocus: true, autoComplete: "on", "aria-invalid": messagesPerField.existsError("username", "password") }) })), messagesPerField.existsError("password") && (_jsx("span", { id: "input-error-password", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite", dangerouslySetInnerHTML: {
20
- __html: kcSanitize(messagesPerField.get("password"))
21
- } }))] })), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass", "kcFormSettingClass") }, { children: [_jsx("div", { id: "kc-form-options" }), _jsx("div", Object.assign({ className: kcClsx("kcFormOptionsWrapperClass") }, { children: realm.resetPasswordAllowed && (_jsx("span", { children: _jsx("a", Object.assign({ tabIndex: 5, href: url.loginResetCredentialsUrl }, { children: msg("doForgotPassword") })) })) }))] })), _jsx("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormGroupClass") }, { children: _jsx("input", { tabIndex: 4, className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), name: "login", id: "kc-login", type: "submit", value: msgStr("doLogIn"), disabled: isLoginButtonDisabled }) }))] })) })) })) })));
17
+ const webAuthnButtonId = "authenticateWebAuthnButton";
18
+ useScript({
19
+ webAuthnButtonId,
20
+ kcContext,
21
+ i18n
22
+ });
23
+ return (_jsxs(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, headerNode: msg("doLogIn"), displayMessage: !messagesPerField.existsError("password") }, { children: [_jsx("div", Object.assign({ id: "kc-form" }, { children: _jsx("div", Object.assign({ id: "kc-form-wrapper" }, { children: _jsxs("form", Object.assign({ id: "kc-form-login", onSubmit: () => {
24
+ setIsLoginButtonDisabled(true);
25
+ return true;
26
+ }, action: url.loginAction, method: "post" }, { children: [_jsxs("div", Object.assign({ className: clsx(kcClsx("kcFormGroupClass"), "no-bottom-margin") }, { children: [_jsx("hr", {}), _jsx("label", Object.assign({ htmlFor: "password", className: kcClsx("kcLabelClass") }, { children: msg("password") })), _jsx(PasswordWrapper, Object.assign({ kcClsx: kcClsx, i18n: i18n, passwordInputId: "password" }, { children: _jsx("input", { tabIndex: 2, id: "password", className: kcClsx("kcInputClass"), name: "password", type: "password", autoFocus: true, autoComplete: "on", "aria-invalid": messagesPerField.existsError("username", "password") }) })), messagesPerField.existsError("password") && (_jsx("span", { id: "input-error-password", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite", dangerouslySetInnerHTML: {
27
+ __html: kcSanitize(messagesPerField.get("password"))
28
+ } }))] })), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass", "kcFormSettingClass") }, { children: [_jsx("div", { id: "kc-form-options" }), _jsx("div", Object.assign({ className: kcClsx("kcFormOptionsWrapperClass") }, { children: realm.resetPasswordAllowed && (_jsx("span", { children: _jsx("a", Object.assign({ tabIndex: 5, href: url.loginResetCredentialsUrl }, { children: msg("doForgotPassword") })) })) }))] })), _jsx("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormGroupClass") }, { children: _jsx("input", { tabIndex: 4, className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), name: "login", id: "kc-login", type: "submit", value: msgStr("doLogIn"), disabled: isLoginButtonDisabled }) }))] })) })) })), enableWebAuthnConditionalUI && (_jsxs(_Fragment, { 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" })] })), authenticators !== undefined && authenticators.authenticators.length !== 0 && (_jsx(_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))) })) })), _jsx("br", {}), _jsx("input", { id: webAuthnButtonId, type: "button", className: kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass"), value: msgStr("passkey-doAuthenticate") })] }))] })));
22
29
  }
23
30
  function PasswordWrapper(props) {
24
31
  const { kcClsx, i18n, passwordInputId, children } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"LoginPassword.js","sourceRoot":"","sources":["../../src/login/pages/LoginPassword.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoginPassword.js","sourceRoot":"","sources":["../../src/login/pages/LoginPassword.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { KcContext } from "../../login/KcContext/KcContext";
2
+ type KcContextLike = {
3
+ url: {
4
+ resourcesPath: string;
5
+ };
6
+ isUserIdentified: "true" | "false";
7
+ challenge: string;
8
+ userVerification: KcContext.WebauthnAuthenticate["userVerification"];
9
+ rpId: string;
10
+ createTimeout: number | string;
11
+ };
12
+ type I18nLike = {
13
+ msgStr: (key: "webauthn-unsupported-browser-text") => string;
14
+ isFetchingTranslations: boolean;
15
+ };
16
+ export declare function useScript(params: {
17
+ webAuthnButtonId: string;
18
+ kcContext: KcContextLike;
19
+ i18n: I18nLike;
20
+ }): void;
21
+ export {};
@@ -0,0 +1,47 @@
1
+ import { useEffect } from "react";
2
+ import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
3
+ import { assert } from "../../tools/assert";
4
+ import { waitForElementMountedOnDom } from "../../tools/waitForElementMountedOnDom";
5
+ assert();
6
+ assert();
7
+ export function useScript(params) {
8
+ const { webAuthnButtonId, kcContext, i18n } = params;
9
+ const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = kcContext;
10
+ const { msgStr, isFetchingTranslations } = i18n;
11
+ const { insertScriptTags } = useInsertScriptTags({
12
+ componentOrHookName: "LoginPassword",
13
+ scriptTags: [
14
+ {
15
+ type: "module",
16
+ textContent: () => `
17
+
18
+ import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
19
+ const authButton = document.getElementById('${webAuthnButtonId}');
20
+ authButton.addEventListener("click", function() {
21
+ const input = {
22
+ isUserIdentified : ${isUserIdentified},
23
+ challenge : '${challenge}',
24
+ userVerification : '${userVerification}',
25
+ rpId : '${rpId}',
26
+ createTimeout : ${createTimeout},
27
+ errmsg : ${JSON.stringify(msgStr("webauthn-unsupported-browser-text"))}
28
+ };
29
+ authenticateByWebAuthn(input);
30
+ });
31
+ `
32
+ }
33
+ ]
34
+ });
35
+ useEffect(() => {
36
+ if (isFetchingTranslations) {
37
+ return;
38
+ }
39
+ (async () => {
40
+ await waitForElementMountedOnDom({
41
+ elementId: webAuthnButtonId
42
+ });
43
+ insertScriptTags();
44
+ })();
45
+ }, [isFetchingTranslations]);
46
+ }
47
+ //# sourceMappingURL=LoginPassword.useScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginPassword.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginPassword.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;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAa1F,MAAM,EAA4E,CAAC;AACnF,MAAM,EAAgE,CAAC;AAOvE,MAAM,UAAU,SAAS,CAAC,MAA8E;IACpG,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAErD,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,eAAe;QACpC,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;;8DAE2B,GAAG,CAAC,aAAa;kEACb,gBAAgB;;;iDAGjC,gBAAgB;2CACtB,SAAS;kDACF,gBAAgB;sCAC5B,IAAI;8CACI,aAAa;uCACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,CAAC,KAAK,IAAI,EAAE;YACR,MAAM,0BAA0B,CAAC;gBAC7B,SAAS,EAAE,gBAAgB;aAC9B,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
@@ -13,9 +13,9 @@ export default function LoginUsername(props) {
13
13
  const { social, realm, url, usernameHidden, login, registrationDisabled, messagesPerField, enableWebAuthnConditionalUI, authenticators } = kcContext;
14
14
  const { msg, msgStr } = i18n;
15
15
  const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
16
- const authButtonId = "authenticateWebAuthnButton";
16
+ const webAuthnButtonId = "authenticateWebAuthnButton";
17
17
  useScript({
18
- authButtonId,
18
+ webAuthnButtonId,
19
19
  kcContext,
20
20
  i18n
21
21
  });
@@ -26,6 +26,6 @@ export default function LoginUsername(props) {
26
26
  ? msg("username")
27
27
  : !realm.registrationEmailAsUsername
28
28
  ? msg("usernameOrEmail")
29
- : msg("email") })), _jsx("input", { tabIndex: 2, id: "username", className: kcClsx("kcInputClass"), name: "username", defaultValue: (_a = login.username) !== null && _a !== void 0 ? _a : "", type: "text", autoFocus: true, autoComplete: "username", "aria-invalid": messagesPerField.existsError("username") }), messagesPerField.existsError("username") && (_jsx("span", Object.assign({ id: "input-error", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite" }, { children: messagesPerField.getFirstError("username") })))] }))), _jsx("div", Object.assign({ className: kcClsx("kcFormGroupClass", "kcFormSettingClass") }, { children: _jsx("div", Object.assign({ id: "kc-form-options" }, { children: realm.rememberMe && !usernameHidden && (_jsx("div", Object.assign({ className: "checkbox" }, { children: _jsxs("label", { children: [_jsx("input", { tabIndex: 3, id: "rememberMe", name: "rememberMe", type: "checkbox", defaultChecked: !!login.rememberMe }), " ", msg("rememberMe")] }) }))) })) })), _jsx("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormGroupClass") }, { children: _jsx("input", { tabIndex: 4, disabled: isLoginButtonDisabled, className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), name: "login", id: "kc-login", type: "submit", value: msgStr("doLogIn") }) }))] }))) })) })), enableWebAuthnConditionalUI && (_jsxs(_Fragment, { 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" })] })), authenticators !== undefined && Object.keys(authenticators).length !== 0 && (_jsx(_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))) })) })), _jsx("br", {}), _jsx("input", { id: authButtonId, type: "button", className: kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass"), value: msgStr("passkey-doAuthenticate") })] }))] })));
29
+ : msg("email") })), _jsx("input", { tabIndex: 2, id: "username", className: kcClsx("kcInputClass"), name: "username", defaultValue: (_a = login.username) !== null && _a !== void 0 ? _a : "", type: "text", autoFocus: true, autoComplete: "username", "aria-invalid": messagesPerField.existsError("username") }), messagesPerField.existsError("username") && (_jsx("span", Object.assign({ id: "input-error", className: kcClsx("kcInputErrorMessageClass"), "aria-live": "polite" }, { children: messagesPerField.getFirstError("username") })))] }))), _jsx("div", Object.assign({ className: kcClsx("kcFormGroupClass", "kcFormSettingClass") }, { children: _jsx("div", Object.assign({ id: "kc-form-options" }, { children: realm.rememberMe && !usernameHidden && (_jsx("div", Object.assign({ className: "checkbox" }, { children: _jsxs("label", { children: [_jsx("input", { tabIndex: 3, id: "rememberMe", name: "rememberMe", type: "checkbox", defaultChecked: !!login.rememberMe }), " ", msg("rememberMe")] }) }))) })) })), _jsx("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormGroupClass") }, { children: _jsx("input", { tabIndex: 4, disabled: isLoginButtonDisabled, className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), name: "login", id: "kc-login", type: "submit", value: msgStr("doLogIn") }) }))] }))) })) })), enableWebAuthnConditionalUI && (_jsxs(_Fragment, { 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" })] })), authenticators !== undefined && authenticators.authenticators.length !== 0 && (_jsx(_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))) })) })), _jsx("br", {}), _jsx("input", { id: webAuthnButtonId, type: "button", className: kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass"), value: msgStr("passkey-doAuthenticate") })] }))] })));
30
30
  }
31
31
  //# sourceMappingURL=LoginUsername.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoginUsername.js","sourceRoot":"","sources":["../../src/login/pages/LoginUsername.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoginUsername.js","sourceRoot":"","sources":["../../src/login/pages/LoginUsername.tsx"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ type I18nLike = {
14
14
  isFetchingTranslations: boolean;
15
15
  };
16
16
  export declare function useScript(params: {
17
- authButtonId: string;
17
+ webAuthnButtonId: string;
18
18
  kcContext: KcContextLike;
19
19
  i18n: I18nLike;
20
20
  }): void;
@@ -5,7 +5,7 @@ import { waitForElementMountedOnDom } from "../../tools/waitForElementMountedOnD
5
5
  assert();
6
6
  assert();
7
7
  export function useScript(params) {
8
- const { authButtonId, kcContext, i18n } = params;
8
+ const { webAuthnButtonId, kcContext, i18n } = params;
9
9
  const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = kcContext;
10
10
  const { msgStr, isFetchingTranslations } = i18n;
11
11
  const { insertScriptTags } = useInsertScriptTags({
@@ -16,7 +16,7 @@ export function useScript(params) {
16
16
  textContent: () => `
17
17
 
18
18
  import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
19
- const authButton = document.getElementById('${authButtonId}');
19
+ const authButton = document.getElementById('${webAuthnButtonId}');
20
20
  authButton.addEventListener("click", function() {
21
21
  const input = {
22
22
  isUserIdentified : ${isUserIdentified},
@@ -38,7 +38,7 @@ export function useScript(params) {
38
38
  }
39
39
  (async () => {
40
40
  await waitForElementMountedOnDom({
41
- elementId: authButtonId
41
+ elementId: webAuthnButtonId
42
42
  });
43
43
  insertScriptTags();
44
44
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"LoginUsername.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginUsername.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;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAa1F,MAAM,EAA4E,CAAC;AACnF,MAAM,EAAgE,CAAC;AAOvE,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,eAAe;QACpC,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;;8DAE2B,GAAG,CAAC,aAAa;kEACb,YAAY;;;iDAG7B,gBAAgB;2CACtB,SAAS;kDACF,gBAAgB;sCAC5B,IAAI;8CACI,aAAa;uCACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,CAAC,KAAK,IAAI,EAAE;YACR,MAAM,0BAA0B,CAAC;gBAC7B,SAAS,EAAE,YAAY;aAC1B,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"LoginUsername.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginUsername.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;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAa1F,MAAM,EAA4E,CAAC;AACnF,MAAM,EAAgE,CAAC;AAOvE,MAAM,UAAU,SAAS,CAAC,MAA8E;IACpG,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAErD,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,eAAe;QACpC,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;;8DAE2B,GAAG,CAAC,aAAa;kEACb,gBAAgB;;;iDAGjC,gBAAgB;2CACtB,SAAS;kDACF,gBAAgB;sCAC5B,IAAI;8CACI,aAAa;uCACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,CAAC,KAAK,IAAI,EAAE;YACR,MAAM,0BAA0B,CAAC;gBAC7B,SAAS,EAAE,gBAAgB;aAC9B,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keycloakify",
3
- "version": "11.11.3",
3
+ "version": "11.12.0",
4
4
  "description": "Framework to create custom Keycloak UIs",
5
5
  "repository": {
6
6
  "type": "git",
@@ -394,6 +394,9 @@
394
394
  "login/pages/Login.d.ts",
395
395
  "login/pages/Login.js",
396
396
  "login/pages/Login.js.map",
397
+ "login/pages/Login.useScript.d.ts",
398
+ "login/pages/Login.useScript.js",
399
+ "login/pages/Login.useScript.js.map",
397
400
  "login/pages/LoginConfigTotp.d.ts",
398
401
  "login/pages/LoginConfigTotp.js",
399
402
  "login/pages/LoginConfigTotp.js.map",
@@ -427,6 +430,9 @@
427
430
  "login/pages/LoginPassword.d.ts",
428
431
  "login/pages/LoginPassword.js",
429
432
  "login/pages/LoginPassword.js.map",
433
+ "login/pages/LoginPassword.useScript.d.ts",
434
+ "login/pages/LoginPassword.useScript.js",
435
+ "login/pages/LoginPassword.useScript.js.map",
430
436
  "login/pages/LoginRecoveryAuthnCodeConfig.d.ts",
431
437
  "login/pages/LoginRecoveryAuthnCodeConfig.js",
432
438
  "login/pages/LoginRecoveryAuthnCodeConfig.js.map",
@@ -842,6 +848,7 @@
842
848
  "src/login/pages/IdpReviewUserProfile.tsx",
843
849
  "src/login/pages/Info.tsx",
844
850
  "src/login/pages/Login.tsx",
851
+ "src/login/pages/Login.useScript.tsx",
845
852
  "src/login/pages/LoginConfigTotp.tsx",
846
853
  "src/login/pages/LoginIdpLinkConfirm.tsx",
847
854
  "src/login/pages/LoginIdpLinkConfirmOverride.tsx",
@@ -853,6 +860,7 @@
853
860
  "src/login/pages/LoginPasskeysConditionalAuthenticate.tsx",
854
861
  "src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx",
855
862
  "src/login/pages/LoginPassword.tsx",
863
+ "src/login/pages/LoginPassword.useScript.tsx",
856
864
  "src/login/pages/LoginRecoveryAuthnCodeConfig.tsx",
857
865
  "src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx",
858
866
  "src/login/pages/LoginRecoveryAuthnCodeInput.tsx",
@@ -85,6 +85,6 @@ export const KEYCLOAKIFY_SPA_DEV_SERVER_PORT = "KEYCLOAKIFY_SPA_DEV_SERVER_PORT"
85
85
 
86
86
  export const KEYCLOAKIFY_LOGGING_VERSION = "1.0.3";
87
87
 
88
- export const KEYCLOAKIFY_LOGIN_JAR_BASENAME = `keycloakify-logging-${KEYCLOAKIFY_LOGGING_VERSION}.jar`;
88
+ export const KEYCLOAKIFY_LOGGING_JAR_BASENAME = `keycloakify-logging-${KEYCLOAKIFY_LOGGING_VERSION}.jar`;
89
89
 
90
90
  export const TEST_APP_URL = "https://my-theme.keycloakify.dev";
@@ -3,7 +3,7 @@ import { exclude } from "tsafe/exclude";
3
3
  import {
4
4
  CONTAINER_NAME,
5
5
  KEYCLOAKIFY_SPA_DEV_SERVER_PORT,
6
- KEYCLOAKIFY_LOGIN_JAR_BASENAME,
6
+ KEYCLOAKIFY_LOGGING_JAR_BASENAME,
7
7
  TEST_APP_URL,
8
8
  ThemeType
9
9
  } from "../shared/constants";
@@ -346,7 +346,7 @@ export async function command(params: {
346
346
  "src",
347
347
  "bin",
348
348
  "start-keycloak",
349
- KEYCLOAKIFY_LOGIN_JAR_BASENAME
349
+ KEYCLOAKIFY_LOGGING_JAR_BASENAME
350
350
  )
351
351
  ]),
352
352
  ...(await Promise.all(
@@ -205,6 +205,16 @@ export declare namespace KcContext {
205
205
  iconClasses?: string;
206
206
  }[];
207
207
  };
208
+ enableWebAuthnConditionalUI?: boolean;
209
+ authenticators?: {
210
+ authenticators: WebauthnAuthenticate.WebauthnAuthenticator[];
211
+ };
212
+ challenge: string;
213
+ userVerification: WebauthnAuthenticate["userVerification"];
214
+ rpId: string;
215
+ createTimeout: number | string;
216
+ isUserIdentified: "true" | "false";
217
+ shouldDisplayAuthenticators?: boolean;
208
218
  };
209
219
 
210
220
  export type Register = Common & {
@@ -363,6 +373,16 @@ export declare namespace KcContext {
363
373
  showTryAnotherWayLink?: boolean;
364
374
  attemptedUsername?: string;
365
375
  };
376
+ enableWebAuthnConditionalUI?: boolean;
377
+ authenticators?: {
378
+ authenticators: WebauthnAuthenticate.WebauthnAuthenticator[];
379
+ };
380
+ challenge: string;
381
+ userVerification: WebauthnAuthenticate["userVerification"];
382
+ rpId: string;
383
+ createTimeout: number | string;
384
+ isUserIdentified: "true" | "false";
385
+ shouldDisplayAuthenticators?: boolean;
366
386
  };
367
387
 
368
388
  export type WebauthnAuthenticate = Common & {
@@ -217,7 +217,17 @@ export const kcContextMocks = [
217
217
  },
218
218
  usernameHidden: false,
219
219
  login: {},
220
- registrationDisabled: false
220
+ registrationDisabled: false,
221
+ enableWebAuthnConditionalUI: false,
222
+ authenticators: {
223
+ authenticators: []
224
+ },
225
+ challenge: "",
226
+ userVerification: "not specified",
227
+ rpId: "",
228
+ createTimeout: "0",
229
+ isUserIdentified: "false",
230
+ shouldDisplayAuthenticators: false
221
231
  }),
222
232
  id<KcContext.Register>({
223
233
  ...kcContextCommonMock,
@@ -357,7 +367,17 @@ export const kcContextMocks = [
357
367
  realm: {
358
368
  ...kcContextCommonMock.realm,
359
369
  resetPasswordAllowed: true
360
- }
370
+ },
371
+ enableWebAuthnConditionalUI: false,
372
+ authenticators: {
373
+ authenticators: []
374
+ },
375
+ challenge: "",
376
+ userVerification: "not specified",
377
+ rpId: "",
378
+ createTimeout: "0",
379
+ isUserIdentified: "false",
380
+ shouldDisplayAuthenticators: false
361
381
  }),
362
382
  id<KcContext.WebauthnAuthenticate>({
363
383
  ...kcContextCommonMock,
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Combined Username + Password login page (login.ftl) with optional WebAuthn passkey support.
3
+ * Renders standard login form plus conditional passkey authenticator section.
4
+ */
1
5
  import type { JSX } from "keycloakify/tools/JSX";
2
6
  import { useState } from "react";
3
7
  import { kcSanitize } from "keycloakify/lib/kcSanitize";
@@ -7,6 +11,7 @@ import type { PageProps } from "keycloakify/login/pages/PageProps";
7
11
  import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx";
8
12
  import type { KcContext } from "../KcContext";
9
13
  import type { I18n } from "../i18n";
14
+ import { useScript } from "keycloakify/login/pages/Login.useScript";
10
15
 
11
16
  export default function Login(props: PageProps<Extract<KcContext, { pageId: "login.ftl" }>, I18n>) {
12
17
  const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
@@ -16,12 +21,21 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
16
21
  classes
17
22
  });
18
23
 
19
- const { social, realm, url, usernameHidden, login, auth, registrationDisabled, messagesPerField } = kcContext;
24
+ const { social, realm, url, usernameHidden, login, auth, registrationDisabled, messagesPerField, enableWebAuthnConditionalUI, authenticators } =
25
+ kcContext;
20
26
 
21
27
  const { msg, msgStr } = i18n;
22
28
 
23
29
  const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
24
30
 
31
+ const webAuthnButtonId = "authenticateWebAuthnButton";
32
+
33
+ useScript({
34
+ webAuthnButtonId,
35
+ kcContext,
36
+ i18n
37
+ });
38
+
25
39
  return (
26
40
  <Template
27
41
  kcContext={kcContext}
@@ -191,6 +205,36 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
191
205
  )}
192
206
  </div>
193
207
  </div>
208
+ {enableWebAuthnConditionalUI && (
209
+ <>
210
+ <form id="webauth" action={url.loginAction} method="post">
211
+ <input type="hidden" id="clientDataJSON" name="clientDataJSON" />
212
+ <input type="hidden" id="authenticatorData" name="authenticatorData" />
213
+ <input type="hidden" id="signature" name="signature" />
214
+ <input type="hidden" id="credentialId" name="credentialId" />
215
+ <input type="hidden" id="userHandle" name="userHandle" />
216
+ <input type="hidden" id="error" name="error" />
217
+ </form>
218
+
219
+ {authenticators !== undefined && authenticators.authenticators.length !== 0 && (
220
+ <>
221
+ <form id="authn_select" className={kcClsx("kcFormClass")}>
222
+ {authenticators.authenticators.map((authenticator, i) => (
223
+ <input key={i} type="hidden" name="authn_use_chk" readOnly value={authenticator.credentialId} />
224
+ ))}
225
+ </form>
226
+ </>
227
+ )}
228
+ <br />
229
+
230
+ <input
231
+ id={webAuthnButtonId}
232
+ type="button"
233
+ className={kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass")}
234
+ value={msgStr("passkey-doAuthenticate")}
235
+ />
236
+ </>
237
+ )}
194
238
  </Template>
195
239
  );
196
240
  }
@@ -0,0 +1,71 @@
1
+ import { useEffect } from "react";
2
+ import { useInsertScriptTags } from "keycloakify/tools/useInsertScriptTags";
3
+ import { assert } from "keycloakify/tools/assert";
4
+ import { KcContext } from "keycloakify/login/KcContext/KcContext";
5
+ import { waitForElementMountedOnDom } from "keycloakify/tools/waitForElementMountedOnDom";
6
+
7
+ type KcContextLike = {
8
+ url: {
9
+ resourcesPath: string;
10
+ };
11
+ isUserIdentified: "true" | "false";
12
+ challenge: string;
13
+ userVerification: KcContext.WebauthnAuthenticate["userVerification"];
14
+ rpId: string;
15
+ createTimeout: number | string;
16
+ };
17
+
18
+ assert<keyof KcContextLike extends keyof KcContext.Login ? true : false>();
19
+ assert<KcContext.Login extends KcContextLike ? true : false>();
20
+
21
+ type I18nLike = {
22
+ msgStr: (key: "webauthn-unsupported-browser-text") => string;
23
+ isFetchingTranslations: boolean;
24
+ };
25
+
26
+ export function useScript(params: { webAuthnButtonId: string; kcContext: KcContextLike; i18n: I18nLike }) {
27
+ const { webAuthnButtonId, kcContext, i18n } = params;
28
+
29
+ const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = kcContext;
30
+
31
+ const { msgStr, isFetchingTranslations } = i18n;
32
+
33
+ const { insertScriptTags } = useInsertScriptTags({
34
+ componentOrHookName: "Login",
35
+ scriptTags: [
36
+ {
37
+ type: "module",
38
+ textContent: () => `
39
+
40
+ import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
41
+ const authButton = document.getElementById('${webAuthnButtonId}');
42
+ authButton.addEventListener("click", function() {
43
+ const input = {
44
+ isUserIdentified : ${isUserIdentified},
45
+ challenge : '${challenge}',
46
+ userVerification : '${userVerification}',
47
+ rpId : '${rpId}',
48
+ createTimeout : ${createTimeout},
49
+ errmsg : ${JSON.stringify(msgStr("webauthn-unsupported-browser-text"))}
50
+ };
51
+ authenticateByWebAuthn(input);
52
+ });
53
+ `
54
+ }
55
+ ]
56
+ });
57
+
58
+ useEffect(() => {
59
+ if (isFetchingTranslations) {
60
+ return;
61
+ }
62
+
63
+ (async () => {
64
+ await waitForElementMountedOnDom({
65
+ elementId: webAuthnButtonId
66
+ });
67
+
68
+ insertScriptTags();
69
+ })();
70
+ }, [isFetchingTranslations]);
71
+ }
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Password step (login-password.ftl) for flows where username is already captured.
3
+ * Adds conditional WebAuthn passkey authenticate section when enabled.
4
+ */
1
5
  import type { JSX } from "keycloakify/tools/JSX";
2
6
  import { useState } from "react";
3
7
  import { kcSanitize } from "keycloakify/lib/kcSanitize";
@@ -7,6 +11,7 @@ import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx";
7
11
  import type { PageProps } from "keycloakify/login/pages/PageProps";
8
12
  import type { KcContext } from "../KcContext";
9
13
  import type { I18n } from "../i18n";
14
+ import { useScript } from "keycloakify/login/pages/LoginPassword.useScript";
10
15
 
11
16
  export default function LoginPassword(props: PageProps<Extract<KcContext, { pageId: "login-password.ftl" }>, I18n>) {
12
17
  const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
@@ -16,12 +21,20 @@ export default function LoginPassword(props: PageProps<Extract<KcContext, { page
16
21
  classes
17
22
  });
18
23
 
19
- const { realm, url, messagesPerField } = kcContext;
24
+ const { realm, url, messagesPerField, enableWebAuthnConditionalUI, authenticators } = kcContext;
20
25
 
21
26
  const { msg, msgStr } = i18n;
22
27
 
23
28
  const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
24
29
 
30
+ const webAuthnButtonId = "authenticateWebAuthnButton";
31
+
32
+ useScript({
33
+ webAuthnButtonId,
34
+ kcContext,
35
+ i18n
36
+ });
37
+
25
38
  return (
26
39
  <Template
27
40
  kcContext={kcContext}
@@ -98,6 +111,36 @@ export default function LoginPassword(props: PageProps<Extract<KcContext, { page
98
111
  </form>
99
112
  </div>
100
113
  </div>
114
+ {enableWebAuthnConditionalUI && (
115
+ <>
116
+ <form id="webauth" action={url.loginAction} method="post">
117
+ <input type="hidden" id="clientDataJSON" name="clientDataJSON" />
118
+ <input type="hidden" id="authenticatorData" name="authenticatorData" />
119
+ <input type="hidden" id="signature" name="signature" />
120
+ <input type="hidden" id="credentialId" name="credentialId" />
121
+ <input type="hidden" id="userHandle" name="userHandle" />
122
+ <input type="hidden" id="error" name="error" />
123
+ </form>
124
+
125
+ {authenticators !== undefined && authenticators.authenticators.length !== 0 && (
126
+ <>
127
+ <form id="authn_select" className={kcClsx("kcFormClass")}>
128
+ {authenticators.authenticators.map((authenticator, i) => (
129
+ <input key={i} type="hidden" name="authn_use_chk" readOnly value={authenticator.credentialId} />
130
+ ))}
131
+ </form>
132
+ </>
133
+ )}
134
+ <br />
135
+
136
+ <input
137
+ id={webAuthnButtonId}
138
+ type="button"
139
+ className={kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass")}
140
+ value={msgStr("passkey-doAuthenticate")}
141
+ />
142
+ </>
143
+ )}
101
144
  </Template>
102
145
  );
103
146
  }
@@ -0,0 +1,71 @@
1
+ import { useEffect } from "react";
2
+ import { useInsertScriptTags } from "keycloakify/tools/useInsertScriptTags";
3
+ import { assert } from "keycloakify/tools/assert";
4
+ import { KcContext } from "keycloakify/login/KcContext/KcContext";
5
+ import { waitForElementMountedOnDom } from "keycloakify/tools/waitForElementMountedOnDom";
6
+
7
+ type KcContextLike = {
8
+ url: {
9
+ resourcesPath: string;
10
+ };
11
+ isUserIdentified: "true" | "false";
12
+ challenge: string;
13
+ userVerification: KcContext.WebauthnAuthenticate["userVerification"];
14
+ rpId: string;
15
+ createTimeout: number | string;
16
+ };
17
+
18
+ assert<keyof KcContextLike extends keyof KcContext.LoginPassword ? true : false>();
19
+ assert<KcContext.LoginPassword extends KcContextLike ? true : false>();
20
+
21
+ type I18nLike = {
22
+ msgStr: (key: "webauthn-unsupported-browser-text") => string;
23
+ isFetchingTranslations: boolean;
24
+ };
25
+
26
+ export function useScript(params: { webAuthnButtonId: string; kcContext: KcContextLike; i18n: I18nLike }) {
27
+ const { webAuthnButtonId, kcContext, i18n } = params;
28
+
29
+ const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = kcContext;
30
+
31
+ const { msgStr, isFetchingTranslations } = i18n;
32
+
33
+ const { insertScriptTags } = useInsertScriptTags({
34
+ componentOrHookName: "LoginPassword",
35
+ scriptTags: [
36
+ {
37
+ type: "module",
38
+ textContent: () => `
39
+
40
+ import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
41
+ const authButton = document.getElementById('${webAuthnButtonId}');
42
+ authButton.addEventListener("click", function() {
43
+ const input = {
44
+ isUserIdentified : ${isUserIdentified},
45
+ challenge : '${challenge}',
46
+ userVerification : '${userVerification}',
47
+ rpId : '${rpId}',
48
+ createTimeout : ${createTimeout},
49
+ errmsg : ${JSON.stringify(msgStr("webauthn-unsupported-browser-text"))}
50
+ };
51
+ authenticateByWebAuthn(input);
52
+ });
53
+ `
54
+ }
55
+ ]
56
+ });
57
+
58
+ useEffect(() => {
59
+ if (isFetchingTranslations) {
60
+ return;
61
+ }
62
+
63
+ (async () => {
64
+ await waitForElementMountedOnDom({
65
+ elementId: webAuthnButtonId
66
+ });
67
+
68
+ insertScriptTags();
69
+ })();
70
+ }, [isFetchingTranslations]);
71
+ }
@@ -21,10 +21,10 @@ export default function LoginUsername(props: PageProps<Extract<KcContext, { page
21
21
 
22
22
  const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
23
23
 
24
- const authButtonId = "authenticateWebAuthnButton";
24
+ const webAuthnButtonId = "authenticateWebAuthnButton";
25
25
 
26
26
  useScript({
27
- authButtonId,
27
+ webAuthnButtonId,
28
28
  kcContext,
29
29
  i18n
30
30
  });
@@ -164,7 +164,7 @@ export default function LoginUsername(props: PageProps<Extract<KcContext, { page
164
164
  <input type="hidden" id="error" name="error" />
165
165
  </form>
166
166
 
167
- {authenticators !== undefined && Object.keys(authenticators).length !== 0 && (
167
+ {authenticators !== undefined && authenticators.authenticators.length !== 0 && (
168
168
  <>
169
169
  <form id="authn_select" className={kcClsx("kcFormClass")}>
170
170
  {authenticators.authenticators.map((authenticator, i) => (
@@ -174,13 +174,13 @@ export default function LoginUsername(props: PageProps<Extract<KcContext, { page
174
174
  </>
175
175
  )}
176
176
  <br />
177
-
177
+
178
178
  <input
179
- id={authButtonId}
179
+ id={webAuthnButtonId}
180
180
  type="button"
181
181
  className={kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass")}
182
182
  value={msgStr("passkey-doAuthenticate")}
183
- />
183
+ />
184
184
  </>
185
185
  )}
186
186
  </Template>
@@ -23,8 +23,8 @@ type I18nLike = {
23
23
  isFetchingTranslations: boolean;
24
24
  };
25
25
 
26
- export function useScript(params: { authButtonId: string; kcContext: KcContextLike; i18n: I18nLike }) {
27
- const { authButtonId, kcContext, i18n } = params;
26
+ export function useScript(params: { webAuthnButtonId: string; kcContext: KcContextLike; i18n: I18nLike }) {
27
+ const { webAuthnButtonId, kcContext, i18n } = params;
28
28
 
29
29
  const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = kcContext;
30
30
 
@@ -38,7 +38,7 @@ export function useScript(params: { authButtonId: string; kcContext: KcContextLi
38
38
  textContent: () => `
39
39
 
40
40
  import { authenticateByWebAuthn } from "${url.resourcesPath}/js/webauthnAuthenticate.js";
41
- const authButton = document.getElementById('${authButtonId}');
41
+ const authButton = document.getElementById('${webAuthnButtonId}');
42
42
  authButton.addEventListener("click", function() {
43
43
  const input = {
44
44
  isUserIdentified : ${isUserIdentified},
@@ -62,7 +62,7 @@ export function useScript(params: { authButtonId: string; kcContext: KcContextLi
62
62
 
63
63
  (async () => {
64
64
  await waitForElementMountedOnDom({
65
- elementId: authButtonId
65
+ elementId: webAuthnButtonId
66
66
  });
67
67
 
68
68
  insertScriptTags();
@@ -1018,8 +1018,8 @@ __nccwpck_require__.r(__webpack_exports__);
1018
1018
  /* harmony export */ "CONTAINER_NAME": () => (/* binding */ CONTAINER_NAME),
1019
1019
  /* harmony export */ "CUSTOM_HANDLER_ENV_NAMES": () => (/* binding */ CUSTOM_HANDLER_ENV_NAMES),
1020
1020
  /* harmony export */ "FALLBACK_LANGUAGE_TAG": () => (/* binding */ FALLBACK_LANGUAGE_TAG),
1021
+ /* harmony export */ "KEYCLOAKIFY_LOGGING_JAR_BASENAME": () => (/* binding */ KEYCLOAKIFY_LOGGING_JAR_BASENAME),
1021
1022
  /* harmony export */ "KEYCLOAKIFY_LOGGING_VERSION": () => (/* binding */ KEYCLOAKIFY_LOGGING_VERSION),
1022
- /* harmony export */ "KEYCLOAKIFY_LOGIN_JAR_BASENAME": () => (/* binding */ KEYCLOAKIFY_LOGIN_JAR_BASENAME),
1023
1023
  /* harmony export */ "KEYCLOAKIFY_SPA_DEV_SERVER_PORT": () => (/* binding */ KEYCLOAKIFY_SPA_DEV_SERVER_PORT),
1024
1024
  /* harmony export */ "KEYCLOAK_THEME": () => (/* binding */ KEYCLOAK_THEME),
1025
1025
  /* harmony export */ "LOGIN_THEME_PAGE_IDS": () => (/* binding */ LOGIN_THEME_PAGE_IDS),
@@ -1097,7 +1097,7 @@ const CUSTOM_HANDLER_ENV_NAMES = {
1097
1097
  const KEYCLOAK_THEME = "keycloak-theme";
1098
1098
  const KEYCLOAKIFY_SPA_DEV_SERVER_PORT = "KEYCLOAKIFY_SPA_DEV_SERVER_PORT";
1099
1099
  const KEYCLOAKIFY_LOGGING_VERSION = "1.0.3";
1100
- const KEYCLOAKIFY_LOGIN_JAR_BASENAME = `keycloakify-logging-${KEYCLOAKIFY_LOGGING_VERSION}.jar`;
1100
+ const KEYCLOAKIFY_LOGGING_JAR_BASENAME = `keycloakify-logging-${KEYCLOAKIFY_LOGGING_VERSION}.jar`;
1101
1101
  const TEST_APP_URL = "https://my-theme.keycloakify.dev";
1102
1102
  //# sourceMappingURL=constants.js.map
1103
1103