const User = require('../models/User'); /** * 전체 사용자 목록 조회 */ const getAllUsers = async (req, res) => { try { const users = await User.findAll({ attributes: { exclude: ['password'] }, order: [['createdAt', 'DESC']] }); res.json(users); } catch (error) { console.error('사용자 목록 조회 중 오류 발생:', error); res.status(500).json({ message: '사용자 목록을 가져오는 중 오류가 발생했습니다.' }); } }; /** * 단일 사용자 정보 조회 */ const getUser = async (req, res) => { try { const userId = req.params.id; const user = await User.findByPk(userId, { attributes: { exclude: ['password'] } }); if (!user) { return res.status(404).json({ message: '사용자를 찾을 수 없습니다.' }); } res.json(user); } catch (error) { console.error('사용자 정보 조회 중 오류 발생:', error); res.status(500).json({ message: '사용자 정보를 가져오는 중 오류가 발생했습니다.' }); } }; /** * 사용자 정보 수정 */ const updateUser = async (req, res) => { try { const userId = req.params.id; const { name, email, role, status } = req.body; const user = await User.findByPk(userId); if (!user) { return res.status(404).json({ message: '사용자를 찾을 수 없습니다.' }); } // 이메일 중복 확인 (이메일이 변경된 경우에만) if (email !== user.email) { const existingUser = await User.findOne({ where: { email } }); if (existingUser) { return res.status(400).json({ message: '이미 사용 중인 이메일입니다.' }); } } // 필수 필드 확인 if (!name || !email || !role || !status) { return res.status(400).json({ message: '필수 정보가 누락되었습니다.' }); } await user.update({ name, email, role, status, updatedAt: new Date() }); const updatedUser = await User.findByPk(userId, { attributes: { exclude: ['password'] } }); res.json(updatedUser); } catch (error) { console.error('사용자 정보 수정 중 오류 발생:', error); res.status(500).json({ message: '사용자 정보를 수정하는 중 오류가 발생했습니다.' }); } }; module.exports = { getAllUsers, getUser, updateUser };