import { NextResponse } from "next/server"; import { prisma } from "@/lib/db"; import { hashPassword } from "@/lib/auth/password"; import { createSession } from "@/lib/auth/session"; import { apiRouteErrorResponse } from "@/lib/auth/api"; export async function POST(request: Request) { try { const body = (await request.json().catch(() => ({}))) as { email?: string; password?: string; name?: string; }; const email = body.email?.trim().toLowerCase(); const password = body.password ?? ""; const name = body.name?.trim() || null; if (!email || !password) { return NextResponse.json({ error: "請輸入 Email 與密碼" }, { status: 400 }); } if (password.length < 6) { return NextResponse.json({ error: "密碼至少 6 個字元" }, { status: 400 }); } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { return NextResponse.json({ error: "此 Email 已註冊" }, { status: 409 }); } const user = await prisma.user.create({ data: { email, name, passwordHash: hashPassword(password), }, }); await createSession(user.id); return NextResponse.json({ user: { id: user.id, email: user.email, name: user.name }, needsThreadsBind: true, }); } catch (error) { return apiRouteErrorResponse(error, "auth/register"); } }