import React, { useEffect } from 'react'; import { observer } from 'mobx-react-lite'; import { useStore } from 'App/mstore'; import ReCAPTCHA from 'react-google-recaptcha'; import { Form, Input, Loader, Icon, Message } from 'UI'; import { Button } from 'antd'; import { validatePassword } from 'App/validate'; import { PASSWORD_POLICY } from 'App/constants'; import stl from './forgotPassword.module.css'; import { useTranslation } from 'react-i18next'; const recaptchaRef = React.createRef(); const ERROR_DONT_MATCH = (t) => t("Passwords don't match."); const CAPTCHA_ENABLED = window.env.CAPTCHA_ENABLED === 'true'; const { CAPTCHA_SITE_KEY } = window.env; interface Props { params: any; } function CreatePassword(props: Props) { const { t } = useTranslation(); const { params } = props; const { userStore } = useStore(); const { loading } = userStore; const { resetPassword } = userStore; const [error, setError] = React.useState(null); const [validationError, setValidationError] = React.useState( null, ); const [updated, setUpdated] = React.useState(false); const [passwordRepeat, setPasswordRepeat] = React.useState(''); const [password, setPassword] = React.useState(''); const pass = params.get('pass'); const invitation = params.get('invitation'); const handleSubmit = () => { if (!validatePassword(password)) { return; } void resetPassword({ invitation, pass, password }); }; const onSubmit = (e: any) => { e.preventDefault(); if (CAPTCHA_ENABLED && recaptchaRef.current) { recaptchaRef.current.execute(); } else if (!CAPTCHA_ENABLED) { handleSubmit(); } }; const write = (e: any) => { const { name, value } = e.target; if (name === 'password') setPassword(value); if (name === 'passwordRepeat') setPasswordRepeat(value); }; useEffect(() => { if (passwordRepeat.length > 0 && passwordRepeat !== password) { setValidationError(ERROR_DONT_MATCH(t)); } else if (passwordRepeat.length > 0 && !validatePassword(password)) { setValidationError(PASSWORD_POLICY(t)); } else { setValidationError(null); } }, [passwordRepeat, password]); return (
{!error && ( <>
{CAPTCHA_ENABLED && (
handleSubmit(token)} />
)}
{t('Your password has been updated successfully.')}
{validationError && {validationError}} {updated ? null : ( )} )} {error && (
{error}
)}
); } export default observer(CreatePassword);