import { NextResponse } from "next/server"; import bcrypt from "bcryptjs"; import { prisma } from "@/lib/db"; import { createSession } from "@/lib/auth"; import { loginSchema } from "@/lib/validations"; export async function POST(request: Request) { let body: unknown; try { body = await request.json(); } catch { return NextResponse.json({ error: "Ungültige Anfrage." }, { status: 400 }); } const parsed = loginSchema.safeParse(body); if (!parsed.success) { return NextResponse.json({ error: "Ungültige Eingabe." }, { status: 400 }); } const { email, password } = parsed.data; const admin = await prisma.admin.findUnique({ where: { email } }); if (!admin) { return NextResponse.json({ error: "Zugangsdaten falsch." }, { status: 401 }); } const ok = await bcrypt.compare(password, admin.passwordHash); if (!ok) { return NextResponse.json({ error: "Zugangsdaten falsch." }, { status: 401 }); } await createSession({ sub: admin.id, email: admin.email }); return NextResponse.json({ ok: true }); }