skl/resources/js/Pages/Auth/ResetPassword.tsx

132 lines
4.4 KiB
TypeScript

import { FormEventHandler, useEffect } from "react";
import GuestLayout from "@/Layouts/GuestLayout";
import { Head, useForm } from "@inertiajs/react";
import { Label } from "@/Components/ui/label";
import { Input } from "@/Components/ui/input";
import { InputError } from "@/Components/ui/InputError";
import { Button } from "@/Components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/Components/ui/card";
export default function ResetPassword({
token,
email,
}: {
token: string;
email: string;
}) {
const { data, setData, post, processing, errors, reset } = useForm({
token: token,
email: email,
password: "",
password_confirmation: "",
});
useEffect(() => {
return () => {
reset("password", "password_confirmation");
};
}, []);
const submit: FormEventHandler = (e) => {
e.preventDefault();
post(route("password.store"));
};
return (
<GuestLayout>
<Head title="Reset Password" />
<form onSubmit={submit}>
<Card>
<CardHeader>
<CardTitle>Reset Password</CardTitle>
<CardDescription>
Enter your new password
</CardDescription>
</CardHeader>
<CardContent>
<div>
<Label htmlFor="email">Email</Label>
<Input
id="email"
type="email"
name="email"
value={data.email}
className="mt-1 block w-full"
autoComplete="username"
onChange={(e) =>
setData("email", e.target.value)
}
/>
<InputError
message={errors.email}
className="mt-2"
/>
</div>
<div className="mt-4">
<Label htmlFor="password">Password</Label>
<Input
id="password"
type="password"
name="password"
value={data.password}
className="mt-1 block w-full"
autoComplete="new-password"
onChange={(e) =>
setData("password", e.target.value)
}
/>
<InputError
message={errors.password}
className="mt-2"
/>
</div>
<div className="mt-4">
<Label htmlFor="password_confirmation">
Confirm Password
</Label>
<Input
type="password"
name="password_confirmation"
value={data.password_confirmation}
className="mt-1 block w-full"
autoComplete="new-password"
onChange={(e) =>
setData(
"password_confirmation",
e.target.value
)
}
/>
<InputError
message={errors.password_confirmation}
className="mt-2"
/>
</div>
</CardContent>
<CardFooter className="justify-end">
<Button disabled={processing}>Reset Password</Button>
</CardFooter>
</Card>
</form>
</GuestLayout>
);
}