Files
yunrui_asset/backend/unlock_user.js
T
zhang1106 63f0cb570e refactor: 统一代码风格并迁移至 ESLint 新配置
style(backend): 格式化模型文件代码
style(frontend): 调整组件代码格式
chore: 删除旧 ESLint 配置并添加新配置
refactor(backend): 重构模型定义语法
style: 统一箭头函数和对象属性简写
2026-03-27 19:12:16 +08:00

70 lines
1.8 KiB
JavaScript

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);