feat(用户管理): 添加用户锁定/解锁功能

- 新增 unlock_user.js 脚本用于解锁被锁定的用户
- 在用户管理页面添加锁定/解锁操作按钮
- 移除不再使用的 compression 依赖
- 添加 winston 日志库用于后续日志记录
This commit is contained in:
zhang1106
2026-01-21 12:20:51 +08:00
parent dfd3d67ca0
commit 7f000a8ee2
4 changed files with 365 additions and 53 deletions
+69
View File
@@ -0,0 +1,69 @@
const { sequelize } = require('./db');
const User = require('./models/User');
async function unlockUser(username = null) {
try {
await sequelize.authenticate();
console.log('数据库连接成功!\n');
let users;
if (username) {
// 解锁指定用户
users = await User.findAll({
where: {
username,
status: 'locked'
}
});
if (users.length === 0) {
console.log(`未找到被锁定的用户: ${username}`);
const user = await User.findOne({ where: { username } });
if (user) {
console.log(`该用户当前状态: ${user.status}`);
}
await sequelize.close();
return;
}
} else {
// 解锁所有被锁定的用户
users = await User.findAll({
where: { status: 'locked' }
});
if (users.length === 0) {
console.log('没有被锁定的用户');
await sequelize.close();
return;
}
}
console.log('准备解锁以下用户:');
users.forEach(user => {
console.log(`- ${user.username} (${user.userId})`);
});
console.log('');
// 执行解锁操作
for (const user of users) {
user.status = 'active';
user.loginCount = 0;
await user.save();
console.log(`✓ 已解锁: ${user.username}`);
}
console.log('\n========================================');
console.log(`解锁完成!共解锁 ${users.length} 个用户`);
console.log('========================================');
await sequelize.close();
} catch (error) {
console.error('解锁过程中发生错误:', error.message);
await sequelize.close();
}
}
// 获取命令行参数
const username = process.argv[2] || null;
unlockUser(username);