import { cookies } from "next/headers"; import Link from "next/link"; import { Header, Footer } from "@/components/Shell"; import { PasswordForm } from "@/components/PasswordForm"; import { authClient, user } from "@/lib/supabase"; import { recoveryCookie, verifyRecoveryGrant } from "@/lib/password-recovery"; export const metadata = { title: "Reset password" }; export default async function ResetPassword() { const [account, jar, client] = await Promise.all([ user(), cookies(), authClient(), ]); const { data } = account ? await client.auth.getClaims() : { data: null }; const sessionId = data?.claims.session_id; const valid = account && typeof sessionId === "string" && verifyRecoveryGrant( jar.get(recoveryCookie)?.value, account.id, sessionId, process.env.SUPABASE_SECRET_KEY!, ); return ( <>
ACCOUNT RECOVERY

A fresh start.

{valid ? ( <>

Choose a new password for your account.

) : ( <>

This reset link has expired or has already been used. Request a fresh link to continue.

Request a new reset link → )}