diff --git a/src/login/KcContext/KcContext.ts b/src/login/KcContext/KcContext.ts index f7dcbbe5..6252a9df 100644 --- a/src/login/KcContext/KcContext.ts +++ b/src/login/KcContext/KcContext.ts @@ -208,9 +208,12 @@ export declare namespace KcContext { registrationAction: string; }; passwordRequired: boolean; - recaptchaRequired: boolean; + recaptchaRequired?: boolean; + recaptchaVisible?: boolean; recaptchaSiteKey?: string; + recaptchaAction?: string; termsAcceptanceRequired?: boolean; + messageHeader?: string; }; export type Info = Common & { diff --git a/src/login/pages/Register.tsx b/src/login/pages/Register.tsx index 27ad8b7e..b8c05327 100644 --- a/src/login/pages/Register.tsx +++ b/src/login/pages/Register.tsx @@ -1,6 +1,7 @@ import { useState } from "react"; import type { LazyOrNot } from "keycloakify/tools/LazyOrNot"; import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx"; +import { clsx } from "keycloakify/tools/clsx"; import type { UserProfileFormFieldsProps } from "keycloakify/login/UserProfileFormFieldsProps"; import type { PageProps } from "keycloakify/login/pages/PageProps"; import type { KcContext } from "../KcContext"; @@ -19,9 +20,10 @@ export default function Register(props: RegisterProps) { classes }); - const { url, messagesPerField, recaptchaRequired, recaptchaSiteKey, termsAcceptanceRequired } = kcContext; + const { messageHeader, url, messagesPerField, recaptchaRequired, recaptchaVisible, recaptchaSiteKey, recaptchaAction, termsAcceptanceRequired } = + kcContext; - const { msg, msgStr } = i18n; + const { msg, msgStr, advancedMsg } = i18n; const [isFormSubmittable, setIsFormSubmittable] = useState(false); const [areTermsAccepted, setAreTermsAccepted] = useState(false); @@ -32,7 +34,7 @@ export default function Register(props: RegisterProps) { i18n={i18n} doUseDefaultCss={doUseDefaultCss} classes={classes} - headerNode={msg("registerTitle")} + headerNode={messageHeader !== undefined ? advancedMsg(messageHeader) : msg("registerTitle")} displayMessage={messagesPerField.exists("global")} displayRequiredFields > @@ -53,10 +55,10 @@ export default function Register(props: RegisterProps) { onAreTermsAcceptedValueChange={setAreTermsAccepted} /> )} - {recaptchaRequired && ( + {recaptchaRequired && (recaptchaVisible || recaptchaAction === undefined) && (
-
+
)} @@ -68,14 +70,34 @@ export default function Register(props: RegisterProps) { -
- -
+ + {recaptchaRequired && !recaptchaVisible && recaptchaAction !== undefined ? ( +
+ +
+ ) : ( +
+ +
+ )}