사용자 로직 수정

This commit is contained in:
2025-06-09 23:15:42 +09:00
parent 7e1bbcede0
commit 9764a96918
4 changed files with 75 additions and 44 deletions
+25 -15
View File
@@ -10,26 +10,26 @@ require('dotenv').config();
// 로그인
exports.login = async (req, res) => {
try {
const { email, password } = req.body;
const { username, password } = req.body;
// 이메일 필수 확인
if (!email) {
return res.status(400).json({ message: '이메일은 필수 항목입니다.' });
// 사용자명 필수 확인
if (!username) {
return res.status(400).json({ message: '사용자명은 필수 항목입니다.' });
}
// 사용자 조회
const user = await User.findOne({ where: { email } });
const user = await User.findOne({ where: { username } });
// 사용자가 존재하지 않는 경우
if (!user) {
return res.status(401).json({ message: '이메일 또는 비밀번호가 올바르지 않습니다.' });
return res.status(401).json({ message: '사용자명 또는 비밀번호가 올바르지 않습니다.' });
}
// 비밀번호 검증
const isPasswordValid = await user.validatePassword(password);
if (!isPasswordValid) {
return res.status(401).json({ message: '이메일 또는 비밀번호가 올바르지 않습니다.' });
return res.status(401).json({ message: '사용자명 또는 비밀번호가 올바르지 않습니다.' });
}
// 마지막 로그인 시간 업데이트
@@ -39,6 +39,7 @@ exports.login = async (req, res) => {
const token = jwt.sign(
{
id: user.id,
username: user.username,
email: user.email,
role: user.role,
name: user.name
@@ -70,6 +71,7 @@ exports.login = async (req, res) => {
const userData = {
id: user.id,
name: user.name,
username: user.username,
email: user.email,
role: user.role,
status: user.status,
@@ -90,26 +92,33 @@ exports.login = async (req, res) => {
// 회원가입
exports.register = async (req, res) => {
try {
const { name, email, password, role, status } = req.body;
const { name, email, username, password, role, status } = req.body;
// 필수 필드 검증
if (!name || !email || !password) {
return res.status(400).json({ message: '이름, 이메일, 비밀번호는 필수 항목입니다.' });
if (!name || !email || !username || !password) {
return res.status(400).json({ message: '이름, 이메일, 사용자명, 비밀번호는 필수 항목입니다.' });
}
// 이메일 중복 확인
const existingUser = await User.findOne({ where: { email } });
const existingEmail = await User.findOne({ where: { email } });
if (existingUser) {
if (existingEmail) {
return res.status(400).json({ message: '이미 등록된 이메일입니다.' });
}
// 사용자명 중복 확인
const existingUsername = await User.findOne({ where: { username } });
if (existingUsername) {
return res.status(400).json({ message: '이미 사용 중인 사용자명입니다.' });
}
// 사용자 생성
const newUser = await User.create({
name,
email,
username,
password,
username: email,
role: role || 'user',
status: status || 'active'
});
@@ -118,6 +127,7 @@ exports.register = async (req, res) => {
const userResponse = {
id: newUser.id,
name: newUser.name,
username: newUser.username,
email: newUser.email,
role: newUser.role,
status: newUser.status,
@@ -197,8 +207,8 @@ exports.updateProfile = async (req, res) => {
// 프로필 업데이트
const updateData = {
name: name || user.name,
email: email || user.email,
username: email || user.email // username도 이메일과 동일하게 업데이트
email: email || user.email
// username은 변경하지 않음 - 로그인 식별자로 사용되기 때문
};
// 비밀번호가 제공된 경우에만 업데이트