Some checks failed
🚀 Deploy - Demo / deployment (push) Has been cancelled
- 웹훅 URL을 https://admin.youtooplay.com/webhook로 변경 - Nginx 리버스 프록시 설정 파일 추가 - 배포 가이드 업데이트
72 lines
1.8 KiB
TypeScript
72 lines
1.8 KiB
TypeScript
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
|
|
}
|
|
})
|