diff --git a/packages/web/components/templates/auth/EmailForgotPassword.tsx b/packages/web/components/templates/auth/EmailForgotPassword.tsx new file mode 100644 index 000000000..760c43c43 --- /dev/null +++ b/packages/web/components/templates/auth/EmailForgotPassword.tsx @@ -0,0 +1,128 @@ +import { SpanBox, VStack } from '../../elements/LayoutPrimitives' +import { Button } from '../../elements/Button' +import { StyledText } from '../../elements/StyledText' +import { useEffect, useRef, useState } from 'react' +import { BorderedFormInput, FormLabel } from '../../elements/FormElements' +import { fetchEndpoint } from '../../../lib/appConfig' +import { logoutMutation } from '../../../lib/networking/mutations/logoutMutation' +import { useRouter } from 'next/router' +import { formatMessage } from '../../../locales/en/messages' +import { parseErrorCodes } from '../../../lib/queryParamParser' +import { Recaptcha } from '../../elements/Recaptcha' + +const ForgotPasswordForm = (): JSX.Element => { + const [email, setEmail] = useState() + + return ( + + + + Email + + { + e.preventDefault() + setEmail(e.target.value) + }} + /> + + + ) +} + +export function EmailForgotPassword(): JSX.Element { + const router = useRouter() + const [email, setEmail] = useState('') + const [errorMessage, setErrorMessage] = useState( + undefined + ) + const recaptchaTokenRef = useRef(null) + + useEffect(() => { + if (!router.isReady) return + const errorCode = parseErrorCodes(router.query) + const errorMsg = errorCode + ? formatMessage({ id: `error.${errorCode}` }) + : undefined + setErrorMessage(errorMsg) + }, [router.isReady, router.query]) + + return ( +
+ + + Reset your password + + + + + {process.env.NEXT_PUBLIC_RECAPTCHA_CHALLENGE_SITE_KEY && ( + <> + { + if (recaptchaTokenRef.current) { + recaptchaTokenRef.current.value = token + } else { + console.log('error updating recaptcha token') + } + }} + /> + + + )} + + {errorMessage && {errorMessage}} + + + +
+ ) +}