Some checks failed
🚀 Deploy - Demo / deployment (push) Has been cancelled
- 웹훅 URL을 https://admin.youtooplay.com/webhook로 변경 - Nginx 리버스 프록시 설정 파일 추가 - 배포 가이드 업데이트
74 lines
2.0 KiB
TypeScript
74 lines
2.0 KiB
TypeScript
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 || '로그인 중 오류가 발생했습니다.',
|
|
})
|
|
}
|
|
})
|