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 || '로그인 중 오류가 발생했습니다.',
    })
  }
})
