Improve MineGeo exploration and mapping features
This commit is contained in:
56
app/auth/reset-password/page.tsx
Normal file
56
app/auth/reset-password/page.tsx
Normal file
@@ -0,0 +1,56 @@
|
||||
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 (
|
||||
<>
|
||||
<Header />
|
||||
<main className="section page-content">
|
||||
<section className="auth-card reset-card">
|
||||
<span className="eyebrow">ACCOUNT RECOVERY</span>
|
||||
<h1>A fresh start.</h1>
|
||||
{valid ? (
|
||||
<>
|
||||
<p className="muted">Choose a new password for your account.</p>
|
||||
<PasswordForm recovery />
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<p>
|
||||
This reset link has expired or has already been used. Request a
|
||||
fresh link to continue.
|
||||
</p>
|
||||
<Link
|
||||
className="button primary"
|
||||
href={account ? "/settings" : "/log-in"}
|
||||
>
|
||||
Request a new reset link →
|
||||
</Link>
|
||||
</>
|
||||
)}
|
||||
</section>
|
||||
</main>
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user