import { data } from "react-router"; import type { Route } from "./+types/api.auth.register"; import { startRegistration, finishRegistration, createSession } from "~/lib/auth.server"; export async function action({ request }: Route.ActionArgs) { const body = await request.json(); const { step, email, username, response, challenge, userId } = body; try { if (step === "start") { const result = await startRegistration(email, username); return data({ step: "challenge", options: result.options, userId: result.userId }); } if (step === "finish") { const newUserId = await finishRegistration(userId, email, username, response, challenge); const cookie = await createSession(newUserId, request); return data({ step: "done" }, { headers: { "Set-Cookie": cookie } }); } return data({ error: "Invalid step" }, { status: 400 }); } catch (e) { return data({ error: (e as Error).message }, { status: 400 }); } }