"use server"; import { redirect } from "next/navigation"; import { createSession, hashPassword } from "../../../lib/auth"; import { getDb } from "../../../lib/db"; import { MIN_WACHTWOORD_LENGTE, findInvite, markInviteUsed } from "../../../lib/experts"; export async function setPassword(formData: FormData) { const token = (formData.get("token") as string) ?? ""; const password = (formData.get("password") as string) ?? ""; const herhaal = (formData.get("password_herhaal") as string) ?? ""; const invite = findInvite(token); if (!invite) redirect(`/uitnodiging/${encodeURIComponent(token)}`); if (password.length < MIN_WACHTWOORD_LENGTE) redirect(`/uitnodiging/${encodeURIComponent(token)}?error=kort`); if (password !== herhaal) redirect(`/uitnodiging/${encodeURIComponent(token)}?error=verschil`); getDb().prepare("UPDATE users SET password_hash = ? WHERE id = ? AND role = 'expert'").run(hashPassword(password), invite.user_id); markInviteUsed(invite.id); await createSession({ userId: invite.user_id, email: invite.email, name: invite.name }); redirect("/expert"); }