Make of doMakeUserConfirmPassword a prop of UserProfileFormFields
This commit is contained in:
parent
b48dbd99cf
commit
9c123f37c8
@ -42,6 +42,7 @@ const WebauthnError = lazy(() => import("keycloakify/login/pages/WebauthnError")
|
|||||||
|
|
||||||
type FallbackProps = PageProps<KcContext> & {
|
type FallbackProps = PageProps<KcContext> & {
|
||||||
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
||||||
|
doMakeUserConfirmPassword: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function Fallback(props: FallbackProps) {
|
export default function Fallback(props: FallbackProps) {
|
||||||
|
@ -15,6 +15,7 @@ export type UserProfileFormFieldsProps = {
|
|||||||
kcContext: KcContextLike;
|
kcContext: KcContextLike;
|
||||||
kcClsx: KcClsx;
|
kcClsx: KcClsx;
|
||||||
onIsFormSubmittableValueChange: (isFormSubmittable: boolean) => void;
|
onIsFormSubmittableValueChange: (isFormSubmittable: boolean) => void;
|
||||||
|
doMakeUserConfirmPassword: boolean;
|
||||||
BeforeField?: (props: BeforeAfterFieldProps) => JSX.Element | null;
|
BeforeField?: (props: BeforeAfterFieldProps) => JSX.Element | null;
|
||||||
AfterField?: (props: BeforeAfterFieldProps) => JSX.Element | null;
|
AfterField?: (props: BeforeAfterFieldProps) => JSX.Element | null;
|
||||||
};
|
};
|
||||||
@ -28,11 +29,8 @@ type BeforeAfterFieldProps = {
|
|||||||
i18n: I18n;
|
i18n: I18n;
|
||||||
};
|
};
|
||||||
|
|
||||||
// NOTE: Enabled by default but it's a UX best practice to set it to false.
|
|
||||||
const doMakeUserConfirmPassword = true;
|
|
||||||
|
|
||||||
export default function UserProfileFormFields(props: UserProfileFormFieldsProps) {
|
export default function UserProfileFormFields(props: UserProfileFormFieldsProps) {
|
||||||
const { kcContext, kcClsx, onIsFormSubmittableValueChange, BeforeField, AfterField } = props;
|
const { kcContext, kcClsx, onIsFormSubmittableValueChange, doMakeUserConfirmPassword, BeforeField, AfterField } = props;
|
||||||
|
|
||||||
const { advancedMsg } = useI18n({ kcContext });
|
const { advancedMsg } = useI18n({ kcContext });
|
||||||
|
|
||||||
|
@ -8,10 +8,11 @@ import { useI18n } from "../i18n";
|
|||||||
|
|
||||||
type IdpReviewUserProfileProps = PageProps<Extract<KcContext, { pageId: "idp-review-user-profile.ftl" }>> & {
|
type IdpReviewUserProfileProps = PageProps<Extract<KcContext, { pageId: "idp-review-user-profile.ftl" }>> & {
|
||||||
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
||||||
|
doMakeUserConfirmPassword: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function IdpReviewUserProfile(props: IdpReviewUserProfileProps) {
|
export default function IdpReviewUserProfile(props: IdpReviewUserProfileProps) {
|
||||||
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields } = props;
|
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields, doMakeUserConfirmPassword } = props;
|
||||||
|
|
||||||
const { kcClsx } = getKcClsx({
|
const { kcClsx } = getKcClsx({
|
||||||
doUseDefaultCss,
|
doUseDefaultCss,
|
||||||
@ -34,7 +35,12 @@ export default function IdpReviewUserProfile(props: IdpReviewUserProfileProps) {
|
|||||||
headerNode={msg("loginIdpReviewProfileTitle")}
|
headerNode={msg("loginIdpReviewProfileTitle")}
|
||||||
>
|
>
|
||||||
<form id="kc-idp-review-profile-form" className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
|
<form id="kc-idp-review-profile-form" className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
|
||||||
<UserProfileFormFields kcContext={kcContext} onIsFormSubmittableValueChange={setIsFomSubmittable} kcClsx={kcClsx} />
|
<UserProfileFormFields
|
||||||
|
kcContext={kcContext}
|
||||||
|
onIsFormSubmittableValueChange={setIsFomSubmittable}
|
||||||
|
kcClsx={kcClsx}
|
||||||
|
doMakeUserConfirmPassword={doMakeUserConfirmPassword}
|
||||||
|
/>
|
||||||
<div className={kcClsx("kcFormGroupClass")}>
|
<div className={kcClsx("kcFormGroupClass")}>
|
||||||
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
||||||
<div className={kcClsx("kcFormOptionsWrapperClass")} />
|
<div className={kcClsx("kcFormOptionsWrapperClass")} />
|
||||||
|
@ -8,10 +8,11 @@ import { useI18n } from "../i18n";
|
|||||||
|
|
||||||
type LoginUpdateProfileProps = PageProps<Extract<KcContext, { pageId: "login-update-profile.ftl" }>> & {
|
type LoginUpdateProfileProps = PageProps<Extract<KcContext, { pageId: "login-update-profile.ftl" }>> & {
|
||||||
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
||||||
|
doMakeUserConfirmPassword: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function LoginUpdateProfile(props: LoginUpdateProfileProps) {
|
export default function LoginUpdateProfile(props: LoginUpdateProfileProps) {
|
||||||
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields } = props;
|
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields, doMakeUserConfirmPassword } = props;
|
||||||
|
|
||||||
const { kcClsx } = getKcClsx({
|
const { kcClsx } = getKcClsx({
|
||||||
doUseDefaultCss,
|
doUseDefaultCss,
|
||||||
@ -33,7 +34,12 @@ export default function LoginUpdateProfile(props: LoginUpdateProfileProps) {
|
|||||||
headerNode={msg("loginProfileTitle")}
|
headerNode={msg("loginProfileTitle")}
|
||||||
>
|
>
|
||||||
<form id="kc-update-profile-form" className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
|
<form id="kc-update-profile-form" className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
|
||||||
<UserProfileFormFields kcContext={kcContext} kcClsx={kcClsx} onIsFormSubmittableValueChange={setIsFormSubmittable} />
|
<UserProfileFormFields
|
||||||
|
kcContext={kcContext}
|
||||||
|
kcClsx={kcClsx}
|
||||||
|
onIsFormSubmittableValueChange={setIsFormSubmittable}
|
||||||
|
doMakeUserConfirmPassword={doMakeUserConfirmPassword}
|
||||||
|
/>
|
||||||
<div className={kcClsx("kcFormGroupClass")}>
|
<div className={kcClsx("kcFormGroupClass")}>
|
||||||
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
||||||
<div className={kcClsx("kcFormOptionsWrapperClass")} />
|
<div className={kcClsx("kcFormOptionsWrapperClass")} />
|
||||||
|
@ -10,10 +10,11 @@ import { useI18n, type I18n } from "../i18n";
|
|||||||
|
|
||||||
type RegisterProps = PageProps<Extract<KcContext, { pageId: "register.ftl" }>> & {
|
type RegisterProps = PageProps<Extract<KcContext, { pageId: "register.ftl" }>> & {
|
||||||
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
||||||
|
doMakeUserConfirmPassword: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function Register(props: RegisterProps) {
|
export default function Register(props: RegisterProps) {
|
||||||
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields } = props;
|
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields, doMakeUserConfirmPassword } = props;
|
||||||
|
|
||||||
const { kcClsx } = getKcClsx({
|
const { kcClsx } = getKcClsx({
|
||||||
doUseDefaultCss,
|
doUseDefaultCss,
|
||||||
@ -30,7 +31,12 @@ export default function Register(props: RegisterProps) {
|
|||||||
return (
|
return (
|
||||||
<Template kcContext={kcContext} doUseDefaultCss={doUseDefaultCss} classes={classes} headerNode={msg("registerTitle")} displayRequiredFields>
|
<Template kcContext={kcContext} doUseDefaultCss={doUseDefaultCss} classes={classes} headerNode={msg("registerTitle")} displayRequiredFields>
|
||||||
<form id="kc-register-form" className={kcClsx("kcFormClass")} action={url.registrationAction} method="post">
|
<form id="kc-register-form" className={kcClsx("kcFormClass")} action={url.registrationAction} method="post">
|
||||||
<UserProfileFormFields kcContext={kcContext} kcClsx={kcClsx} onIsFormSubmittableValueChange={setIsFormSubmittable} />
|
<UserProfileFormFields
|
||||||
|
kcContext={kcContext}
|
||||||
|
kcClsx={kcClsx}
|
||||||
|
onIsFormSubmittableValueChange={setIsFormSubmittable}
|
||||||
|
doMakeUserConfirmPassword={doMakeUserConfirmPassword}
|
||||||
|
/>
|
||||||
{termsAcceptanceRequired && <TermsAcceptance i18n={i18n} kcClsx={kcClsx} messagesPerField={messagesPerField} />}
|
{termsAcceptanceRequired && <TermsAcceptance i18n={i18n} kcClsx={kcClsx} messagesPerField={messagesPerField} />}
|
||||||
{recaptchaRequired && (
|
{recaptchaRequired && (
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
|
@ -8,10 +8,11 @@ import { useI18n, type I18n } from "../i18n";
|
|||||||
|
|
||||||
type UpdateEmailProps = PageProps<Extract<KcContext, { pageId: "update-email.ftl" }>> & {
|
type UpdateEmailProps = PageProps<Extract<KcContext, { pageId: "update-email.ftl" }>> & {
|
||||||
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
||||||
|
doMakeUserConfirmPassword: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function UpdateEmail(props: UpdateEmailProps) {
|
export default function UpdateEmail(props: UpdateEmailProps) {
|
||||||
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields } = props;
|
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields, doMakeUserConfirmPassword } = props;
|
||||||
|
|
||||||
const { kcClsx } = getKcClsx({
|
const { kcClsx } = getKcClsx({
|
||||||
doUseDefaultCss,
|
doUseDefaultCss,
|
||||||
@ -35,7 +36,12 @@ export default function UpdateEmail(props: UpdateEmailProps) {
|
|||||||
headerNode={msg("updateEmailTitle")}
|
headerNode={msg("updateEmailTitle")}
|
||||||
>
|
>
|
||||||
<form id="kc-update-email-form" className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
|
<form id="kc-update-email-form" className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
|
||||||
<UserProfileFormFields kcContext={kcContext} kcClsx={kcClsx} onIsFormSubmittableValueChange={setIsFormSubmittable} />
|
<UserProfileFormFields
|
||||||
|
kcContext={kcContext}
|
||||||
|
kcClsx={kcClsx}
|
||||||
|
onIsFormSubmittableValueChange={setIsFormSubmittable}
|
||||||
|
doMakeUserConfirmPassword={doMakeUserConfirmPassword}
|
||||||
|
/>
|
||||||
|
|
||||||
<div className={kcClsx("kcFormGroupClass")}>
|
<div className={kcClsx("kcFormGroupClass")}>
|
||||||
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
||||||
|
@ -33,5 +33,13 @@ export default function KcApp(props: { kcContext: KcContext }) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return <Fallback kcContext={kcContext} Template={Template} UserProfileFormFields={UserProfileFormFields} doUseDefaultCss={true} />;
|
return (
|
||||||
|
<Fallback
|
||||||
|
kcContext={kcContext}
|
||||||
|
Template={Template}
|
||||||
|
doUseDefaultCss={true}
|
||||||
|
UserProfileFormFields={UserProfileFormFields}
|
||||||
|
doMakeUserConfirmPassword={true}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user