import { PrismaClient } from '@prisma/client' import bcrypt from 'bcryptjs' import jwt from 'jsonwebtoken' const prisma = new PrismaClient() export default defineEventHandler(async (event) => { const body = await readBody(event) const { user_id, password } = body console.log('로그인 요청:', { user_id, password: password ? '***' : 'undefined' }) if (!user_id || !password) { throw createError({ statusCode: 400, statusMessage: '아이디와 비밀번호를 입력해주세요.', }) } try { const user = await prisma.members.findUnique({ where: { user_id }, }) console.log('사용자 조회 결과:', user) if (!user) { throw createError({ statusCode: 401, statusMessage: '존재하지 않는 아이디입니다.', }) } // 비밀번호 비교 (평문 비밀번호로 저장되어 있으므로 직접 비교) if (user.password !== password) { console.log('비밀번호 불일치:', { 입력된비밀번호: password, 저장된비밀번호: user.password }) throw createError({ statusCode: 401, statusMessage: '비밀번호가 일치하지 않습니다.', }) } console.log('로그인 성공:', { user_id: user.user_id, name: user.name }) // JWT 토큰 생성 const token = jwt.sign( { id: user.id, user_id: user.user_id, name: user.name, role_level: user.role_level }, 'your-secret-key', // 실제 서비스에서는 환경 변수로 관리 { expiresIn: '24h' }, ) return { success: true, message: '로그인 성공', token, user: { id: user.id, user_id: user.user_id, name: user.name, role_level: user.role_level, }, } } catch (error: any) { console.error('로그인 오류:', error) throw createError({ statusCode: error.statusCode || 500, statusMessage: error.statusMessage || '로그인 중 오류가 발생했습니다.', }) } })