diff --git a/backend/server.js b/backend/server.js index b0ac7b7..8826da2 100644 --- a/backend/server.js +++ b/backend/server.js @@ -353,10 +353,11 @@ app.post('/api/admin/update-profile', } ); -// 修改当前用户密码(管理员直接修改,不需要验证当前密码) +// 修改当前用户密码(需要验证当前密码) app.post('/api/user/change-password', authMiddleware, [ + body('current_password').notEmpty().withMessage('当前密码不能为空'), body('new_password').isLength({ min: 6 }).withMessage('新密码至少6个字符') ], (req, res) => { @@ -369,9 +370,26 @@ app.post('/api/user/change-password', } try { - const { new_password } = req.body; + const { current_password, new_password } = req.body; - // 直接更新密码,不需要验证当前密码 + // 获取当前用户信息 + const user = UserDB.findById(req.user.id); + if (!user) { + return res.status(404).json({ + success: false, + message: '用户不存在' + }); + } + + // 验证当前密码 + if (!UserDB.verifyPassword(current_password, user.password)) { + return res.status(401).json({ + success: false, + message: '当前密码错误' + }); + } + + // 更新密码 UserDB.update(req.user.id, { password: new_password }); res.json({