import { NextResponse } from 'next/server'; import { prisma } from '../../../../lib/prisma'; export async function POST(req: Request) { try { const body = await req.json(); const token = String(body.token ?? '').trim(); if (!token) { return NextResponse.json({ error: 'Token is required' }, { status: 400 }); } const record = await prisma.verificationToken.findUnique({ where: { token }, include: { user: true } }); if (!record) { return NextResponse.json({ error: 'Invalid token' }, { status: 400 }); } if (record.consumedAt) { return NextResponse.json({ error: 'Token already used' }, { status: 400 }); } if (record.expiresAt < new Date()) { return NextResponse.json({ error: 'Token expired' }, { status: 400 }); } await prisma.$transaction([ prisma.user.update({ where: { id: record.userId }, data: { emailVerifiedAt: new Date() }, }), prisma.verificationToken.update({ where: { id: record.id }, data: { consumedAt: new Date() }, }), ]); return NextResponse.json({ ok: true }); } catch (error) { console.error('Verify error', error); return NextResponse.json({ error: 'Verification failed' }, { status: 500 }); } }