비밀번호 재설정, 변경

tpids·2024년 10월 29일

project2

목록 보기
14/17

비밀번호 변경

// 비밀번호 변경 API
router.post('/change-password', async (req, res) => {
    const { username, current_password, new_password, confirm_new_password } = req.body;

    // 모든 필드가 입력되었는지 확인
    if (!username || !current_password || !new_password || !confirm_new_password) {
        return res.status(400).json({ message: '모든 필드를 입력해주세요.' });
    }

    // 새 비밀번호와 확인 비밀번호 일치 여부 확인
    if (new_password !== confirm_new_password) {
        return res.status(400).json({ message: '새 비밀번호와 확인 비밀번호가 일치하지 않습니다.' });
    }

    const query = 'SELECT password FROM Users WHERE username = ?';
    try {
        const results = await db.executeQuery(query, [username]);

        if (results.length > 0) {
            const user = results[0];

            // 현재 비밀번호 확인
            const isMatch = await bcrypt.compare(current_password, user.password);
            if (!isMatch) {
                return res.status(401).json({ message: '현재 비밀번호가 올바르지 않습니다.' });
            }

            // 새 비밀번호 해시화
            const hashedNewPassword = await bcrypt.hash(new_password, 10);

            // 비밀번호 업데이트
            const updateQuery = 'UPDATE Users SET password = ? WHERE username = ?';
            await db.executeQuery(updateQuery, [hashedNewPassword, username]);

            return res.status(200).json({success: true, message: '비밀번호가 성공적으로 변경되었습니다.' });
        } else {
            return res.status(404).json({ message: '일치하는 사용자를 찾을 수 없습니다.' });
        }
    } catch (err) {
        console.error('데이터베이스 오류:', err); // 서버 콘솔에 에러 로그 추가
        return res.status(500).json({ message: '데이터베이스 오류' });
    }
});


profile
개발자

0개의 댓글