"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { Alert, AlertTitle } from "@ui/components/alert"; import { Button } from "@ui/components/button"; import { AlertTriangleIcon, ArrowLeftIcon, MailboxIcon } from "lucide-react"; import { authClient } from "@repo/auth/client"; import { config } from "@repo/config"; import { useAuthErrorMessages } from "@saas/auth/hooks/errors-messages"; import { useSession } from "@saas/auth/hooks/use-session"; import { useRouter } from "@shared/hooks/router"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@ui/components/form"; import { PasswordInput } from "@ui/components/password-input"; import { useTranslations } from "next-intl"; import Link from "next/link"; import { useSearchParams } from "next/navigation"; import { useForm } from "react-hook-form"; import * as z from "zod"; const formSchema = z.object({ password: z.string().min(8), }); type FormValues = z.infer; export function ResetPasswordForm() { const t = useTranslations(); const { user } = useSession(); const router = useRouter(); const { getAuthErrorMessage } = useAuthErrorMessages(); const searchParams = useSearchParams(); const token = searchParams.get("token"); const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { password: "", }, }); const onSubmit = form.handleSubmit(async ({ password }) => { try { const { error } = await authClient.resetPassword({ token: token ?? undefined, newPassword: password, }); if (error) { throw error; } if (user) { router.push(config.auth.redirectAfterSignIn); } } catch (e) { form.setError("root", { message: getAuthErrorMessage( e && typeof e === "object" && "code" in e ? (e.code as string) : undefined, ), }); } }); return ( <>

{t("auth.resetPassword.title")}

{t("auth.resetPassword.message")}{" "}

{form.formState.isSubmitSuccessful ? ( {t("auth.resetPassword.hints.success")} ) : (
{form.formState.errors.root && ( {form.formState.errors.root.message} )} ( {t("auth.resetPassword.newPassword")} )} /> )}
{t("auth.resetPassword.backToSignin")}
); }