import { Pool } from 'pg' import bcrypt from 'bcryptjs' const pool = new Pool({ user: 'musicuser', host: 'localhost', database: 'musicdb', password: 'Tjqjqhdks$321', port: 5432, }) export default defineEventHandler(async (event) => { try { const body = await readBody(event) const { user_id, password, name, role_level } = body if (!user_id || !password || !name || !role_level) { throw createError({ statusCode: 400, statusMessage: '모든 필드를 입력해주세요.' }) } // 권한 등급 검증 (1~3) if (role_level < 1 || role_level > 3) { throw createError({ statusCode: 400, statusMessage: '권한 등급은 1~3 사이여야 합니다.' }) } // 아이디 중복 확인 const existingUser = await pool.query( 'SELECT user_id FROM members WHERE user_id = $1', [user_id] ) if (existingUser.rows.length > 0) { throw createError({ statusCode: 409, statusMessage: '이미 존재하는 아이디입니다.' }) } // 비밀번호 해시화 (현재는 평문 저장, 추후 bcrypt로 변경) // const hashedPassword = await bcrypt.hash(password, 10) // 사용자 등록 const result = await pool.query( 'INSERT INTO members (user_id, password, name, role_level) VALUES ($1, $2, $3, $4) RETURNING *', [user_id, password, name, role_level] ) const newUser = result.rows[0] return { success: true, message: '회원가입이 완료되었습니다.', user: { id: newUser.id, user_id: newUser.user_id, name: newUser.name, role_level: newUser.role_level } } } catch (error) { console.error('Register error:', error) throw error } })