import { compare } from 'bcryptjs' import { readBody, createError } from 'h3' import { prisma } from '../../utils/db' import { setSession } from '../../utils/auth' import { ensureDefaultMoneyData } from '../../utils/defaults' export default defineEventHandler(async (event) => { const body = await readBody<{ email: string; password: string }>(event) const user = await prisma.user.findUnique({ where: { email: body.email } }) if (!user || !(await compare(body.password, user.passwordHash))) { throw createError({ statusCode: 401, statusMessage: 'Invalid credentials' }) } await ensureDefaultMoneyData(prisma, user.id) setSession(event, user.id) return { id: user.id, email: user.email, name: user.name } })