87 lines
3.4 KiB
TypeScript
87 lines
3.4 KiB
TypeScript
|
|
||
|
import { memo } from "react";
|
||
|
import { Template } from "./Template";
|
||
|
import type { KcProps } from "./KcProps";
|
||
|
import { assert } from "../tools/assert";
|
||
|
import { kcContext } from "../kcContext";
|
||
|
import { useKcTranslation } from "../i18n/useKcTranslation";
|
||
|
import { cx } from "tss-react";
|
||
|
|
||
|
export const LoginResetPassword = memo((props: KcProps) => {
|
||
|
|
||
|
const { t, tStr } = useKcTranslation();
|
||
|
|
||
|
assert(
|
||
|
kcContext !== undefined &&
|
||
|
kcContext.pageId === "login-reset-password.ftl"
|
||
|
);
|
||
|
|
||
|
const {
|
||
|
url,
|
||
|
realm,
|
||
|
auth
|
||
|
} = kcContext;
|
||
|
|
||
|
return (
|
||
|
<Template
|
||
|
{...props}
|
||
|
displayMessage={false}
|
||
|
headerNode={t("emailForgotTitle")}
|
||
|
formNode={
|
||
|
<form id="kc-reset-password-form" className={cx(props.kcFormClass)} action={url.loginAction} method="post">
|
||
|
<div className={cx(props.kcFormGroupClass)}>
|
||
|
<div className={cx(props.kcLabelWrapperClass)}>
|
||
|
<label htmlFor="username" className={cx(props.kcLabelClass)}>
|
||
|
{
|
||
|
!realm.loginWithEmailAllowed ?
|
||
|
t("username")
|
||
|
:
|
||
|
!realm.registrationEmailAsUsername ?
|
||
|
t("usernameOrEmail") :
|
||
|
t("email")
|
||
|
}
|
||
|
</label>
|
||
|
</div>
|
||
|
<div className={cx(props.kcInputWrapperClass)}>
|
||
|
<input
|
||
|
type="text"
|
||
|
id="username"
|
||
|
name="username"
|
||
|
className={cx(props.kcInputClass)}
|
||
|
autoFocus
|
||
|
defaultValue={
|
||
|
auth !== undefined && auth.showUsername ?
|
||
|
auth.attemptedUsername : undefined
|
||
|
}
|
||
|
/>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div className={cx(props.kcFormGroupClass, props.kcFormSettingClass)}>
|
||
|
<div id="kc-form-options" className={cx(props.kcFormOptionsClass)}>
|
||
|
<div className={cx(props.kcFormOptionsWrapperClass)}>
|
||
|
<span>
|
||
|
<a href={url.loginUrl}>{t("backToLogin")}</a>
|
||
|
</span>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<div id="kc-form-buttons" className={cx(props.kcFormButtonsClass)}>
|
||
|
<input
|
||
|
className={cx(
|
||
|
props.kcButtonClass, props.kcButtonPrimaryClass,
|
||
|
props.kcButtonBlockClass, props.kcButtonLargeClass
|
||
|
)}
|
||
|
type="submit"
|
||
|
defaultValue={tStr("doSubmit")}
|
||
|
/>
|
||
|
</div>
|
||
|
</div>
|
||
|
</form>
|
||
|
}
|
||
|
infoNode={t("emailInstruction")}
|
||
|
/>
|
||
|
);
|
||
|
});
|
||
|
|
||
|
|