You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
46 lines
1.4 KiB
import Layout from "app/core/layouts/Layout" |
|
import { LabeledTextField } from "app/core/components/LabeledTextField" |
|
import { Form, FORM_ERROR } from "app/core/components/Form" |
|
import { ForgotPassword } from "app/auth/validations" |
|
import forgotPassword from "app/auth/mutations/forgotPassword" |
|
import { useMutation } from "@blitzjs/rpc" |
|
import { BlitzPage } from "@blitzjs/next" |
|
|
|
const ForgotPasswordPage: BlitzPage = () => { |
|
const [forgotPasswordMutation, { isSuccess }] = useMutation(forgotPassword) |
|
|
|
return ( |
|
<Layout title="Forgot Your Password?"> |
|
<h1>Forgot your password?</h1> |
|
|
|
{isSuccess ? ( |
|
<div> |
|
<h2>Request Submitted</h2> |
|
<p> |
|
If your email is in our system, you will receive instructions to reset your password |
|
shortly. |
|
</p> |
|
</div> |
|
) : ( |
|
<Form |
|
submitText="Send Reset Password Instructions" |
|
schema={ForgotPassword} |
|
initialValues={{ email: "" }} |
|
onSubmit={async (values) => { |
|
try { |
|
await forgotPasswordMutation(values) |
|
} catch (error: any) { |
|
return { |
|
[FORM_ERROR]: "Sorry, we had an unexpected error. Please try again.", |
|
} |
|
} |
|
}} |
|
> |
|
<LabeledTextField name="email" label="Email" placeholder="Email" /> |
|
</Form> |
|
)} |
|
</Layout> |
|
) |
|
} |
|
|
|
export default ForgotPasswordPage
|
|
|