feat(auth): 添加账户解锁功能

在登录页面增加账户解锁功能,当账户被锁定后可以通过输入正确凭证解锁
后端添加/auth/unlock接口处理解锁逻辑
前端添加解锁表单和状态切换
更新API文档和CHANGELOG记录新功能
This commit is contained in:
zhang1106
2026-01-21 15:21:46 +08:00
parent 7f000a8ee2
commit de49c5ff52
9 changed files with 2933 additions and 2037 deletions
+53
View File
@@ -338,4 +338,57 @@ router.post('/check-admin', async (req, res) => {
}
});
router.post('/unlock', async (req, res) => {
try {
const { username, password } = req.body;
if (!username || !password) {
return res.status(400).json({
success: false,
message: '用户名和密码不能为空'
});
}
const user = await User.findOne({ where: { username } });
if (!user) {
return res.status(401).json({
success: false,
message: '用户名或密码错误'
});
}
if (user.status !== 'locked') {
return res.status(400).json({
success: false,
message: '账户未被锁定'
});
}
const isPasswordValid = await bcrypt.compare(password, user.password);
if (!isPasswordValid) {
return res.status(401).json({
success: false,
message: '用户名或密码错误'
});
}
// 解锁账户
user.status = 'active';
user.loginCount = 0;
await user.save();
res.json({
success: true,
message: '账户解锁成功'
});
} catch (error) {
console.error('解锁账户错误:', error);
res.status(500).json({
success: false,
message: '解锁失败',
error: error.message
});
}
});
module.exports = router;