Files

70 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

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