diff --git a/src/login/KcContext/KcContext.ts b/src/login/KcContext/KcContext.ts index 6252a9df..68a685de 100644 --- a/src/login/KcContext/KcContext.ts +++ b/src/login/KcContext/KcContext.ts @@ -357,10 +357,9 @@ export declare namespace KcContext { // I hate this: userVerification: UserVerificationRequirement | "not specified"; rpId: string; - createTimeout: string; + createTimeout: string | number; isUserIdentified: "true" | "false"; shouldDisplayAuthenticators: boolean; - login: {}; realm: { password: boolean; registrationAllowed: boolean; @@ -395,7 +394,7 @@ export declare namespace KcContext { authenticatorAttachment: string; requireResidentKey: string; userVerificationRequirement: string; - createTimeout: number; + createTimeout: number | string; excludeCredentialIds: string; isSetRetry?: boolean; isAppInitiatedAction?: boolean; @@ -586,7 +585,7 @@ export declare namespace KcContext { challenge: string; userVerification: string; rpId: string; - createTimeout: number; + createTimeout: number | string; authenticators?: { authenticators: WebauthnAuthenticate.WebauthnAuthenticator[]; diff --git a/src/login/pages/WebauthnAuthenticate.tsx b/src/login/pages/WebauthnAuthenticate.tsx index 0a185b8e..280e4909 100644 --- a/src/login/pages/WebauthnAuthenticate.tsx +++ b/src/login/pages/WebauthnAuthenticate.tsx @@ -1,8 +1,7 @@ -import { useEffect, Fragment } from "react"; -import { assert } from "keycloakify/tools/assert"; +import { Fragment } from "react"; import { clsx } from "keycloakify/tools/clsx"; -import { useInsertScriptTags } from "keycloakify/tools/useInsertScriptTags"; import { getKcClsx } from "keycloakify/login/lib/kcClsx"; +import { useScript } from "keycloakify/login/pages/WebauthnAuthenticate.useScript"; import type { PageProps } from "keycloakify/login/pages/PageProps"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; @@ -12,136 +11,25 @@ export default function WebauthnAuthenticate(props: PageProps { - window.result = result; - - let clientDataJSON = result.response.clientDataJSON; - let authenticatorData = result.response.authenticatorData; - let signature = result.response.signature; - - $("#clientDataJSON").val(base64url.encode(new Uint8Array(clientDataJSON), { pad: false })); - $("#authenticatorData").val(base64url.encode(new Uint8Array(authenticatorData), { pad: false })); - $("#signature").val(base64url.encode(new Uint8Array(signature), { pad: false })); - $("#credentialId").val(result.id); - if(result.response.userHandle) { - $("#userHandle").val(base64url.encode(new Uint8Array(result.response.userHandle), { pad: false })); - } - $("#webauth").submit(); - }) - .catch((err) => { - $("#error").val(err); - $("#webauth").submit(); - }) - ; - } - - ` - } - ] + useScript({ + authButtonId, + kcContext, + i18n }); - useEffect(() => { - insertScriptTags(); - }, []); - return (