Skip to content
Snippets Groups Projects
Select Git revision
  • af906d5fde7801fcb48f9dc5c603bcc2962adf6d
  • master default protected
  • deploy
  • develop
4 results

pushServer.js

Blame
  • userManagementController.js 3.37 KiB
    const express = require('express');
    const User = require('../models/user');
    const Trip = require('../models/trips');
    const Review = require('../models/review');
    const bcrypt = require('bcrypt');
    const path = require('path'); // 경로 처리 모듈 추가
    
    const router = express.Router();
    
    // router.get('/change', (req, res) => {
    
    //     // 닉네임 변경 HTML 파일 반환
    //     res.sendFile(path.join(__dirname, '../public/conf_name.html')); // HTML 파일 경로 설정
    // });
    
    //사용자 이름 변경(닉네임)
    exports.changeName = async (req, res) => {
        const { email, newName } = req.body;
    
        const user = await User.findOne({ email });
    
        try {
            if (!email || !newName) {
                return res.status(400).json({message: '유효하지 않은 요청입니다.'});
            }
    
    
            user.name = newName;
            await user.save();
    
            res.status(200).json({ message: ' 이름이 성공적으로 변경되었습니다.', user});
            console.log('이름 변경 완료', user);
        } catch(error) {
            console.error('이름 변경 오류', error);
            res.status(500).json({ message: '서버 오류가 발생했습니다.'});
        }
    };
    
    
    // 비밀번호 변경 
    exports.changePassword = async (req, res) => {
        const { email, oldPassword, newPassword } = req.body;
    
        try {
            const user = await User.findOne({ email });
            if (!user || !user.password) {
                return res.status(400).json({ message: '사용자를 찾을 수 없거나 잘못된 요청입니다.' });
            }
    
            const isMatch = await bcrypt.compare(oldPassword, user.password);
            if (!isMatch) {
                return res.status(400).json({ message: '기존 비밀번호가 일치하지 않습니다.' });
            }
    
            const hashedPassword = await bcrypt.hash(newPassword, 10);
            user.password = hashedPassword;
    
            await user.save();
            res.status(200).json({ message: '비밀번호가 성공적으로 변경되었습니다.' });
            console.log('비밀번호 변경 완료',user);
        } catch (error) {
            console.error('비밀번호 변경 오류:', error);
            res.status(500).json({ message: '서버 오류가 발생했습니다.' });
        }
    };
    
    // 사용자 삭제
    exports.deleteUser = async (req, res) => {
        const { userId } = req.params;
    
        try {
            // 사용자 삭제
            const user = await User.findByIdAndDelete(userId);
            if (!user) {
                return res.status(404).json({ message: '사용자를 찾을 수 없습니다.' });
            }
    
            // 사용자가 생성한 여행 데이터 삭제 또는 상태 변경
            await Trip.deleteMany({ create_by: userId });
            //사용자가 작성한 리뷰 제거
            await Review.deleteMany({ create_by: userId});
    
            // 사용자가 공동 작업자로 포함된 경우 업데이트
            await Trip.updateMany(
                { collaborators: userId }, //필터링 - 지우려는 유저 아이디가 공동 작업자로 포함된경우
                { $pull: { collaborators: userId } } // 공동 작업자 목록에서 제거
            );
            console.log('이 사용자를 삭제합니다: ',user);
            res.status(200).json({ message: '사용자가 성공적으로 삭제되었습니다.' });
        } catch (error) {
            console.error('사용자 삭제 오류:', error);
            res.status(500).json({ message: '서버 오류가 발생했습니다.' });
        }
    };