Migrate project from typing_practiceweb
This commit is contained in:
64
scripts/resetPassword.js
Normal file
64
scripts/resetPassword.js
Normal file
@@ -0,0 +1,64 @@
|
||||
const bcrypt = require('bcrypt');
|
||||
const { MongoClient } = require('mongodb');
|
||||
|
||||
// 配置
|
||||
const MONGODB_URI = 'mongodb://localhost:27017/typeskill';
|
||||
const USERNAME = 'bobcoc';
|
||||
const NEW_PASSWORD = 'Admin123'; // 新密码
|
||||
const SALT_ROUNDS = 10;
|
||||
|
||||
async function resetPassword() {
|
||||
let client;
|
||||
|
||||
try {
|
||||
client = new MongoClient(MONGODB_URI);
|
||||
await client.connect();
|
||||
console.log('Connected to MongoDB');
|
||||
|
||||
const db = client.db();
|
||||
const users = db.collection('users');
|
||||
|
||||
// 查找用户
|
||||
const user = await users.findOne({ username: USERNAME });
|
||||
|
||||
if (!user) {
|
||||
console.error(`用户 "${USERNAME}" 不存在`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 生成新的密码哈希
|
||||
const passwordHash = await bcrypt.hash(NEW_PASSWORD, SALT_ROUNDS);
|
||||
|
||||
// 更新用户密码
|
||||
const result = await users.updateOne(
|
||||
{ username: USERNAME },
|
||||
{ $set: { password: passwordHash } }
|
||||
);
|
||||
|
||||
if (result.modifiedCount === 1) {
|
||||
console.log(`已成功重置 "${USERNAME}" 的密码为 "${NEW_PASSWORD}"`);
|
||||
|
||||
// 输出用户信息
|
||||
const updatedUser = await users.findOne({ username: USERNAME });
|
||||
console.log('用户信息:', {
|
||||
_id: updatedUser._id,
|
||||
username: updatedUser.username,
|
||||
email: updatedUser.email,
|
||||
isAdmin: updatedUser.isAdmin,
|
||||
updatedAt: updatedUser.updatedAt
|
||||
});
|
||||
} else {
|
||||
console.log('密码重置失败,请重试');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('重置密码时出错:', error);
|
||||
} finally {
|
||||
if (client) {
|
||||
await client.close();
|
||||
console.log('MongoDB 连接已关闭');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 执行密码重置
|
||||
resetPassword();
|
||||
Reference in New Issue
Block a user