51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
import { initDB, getDB } from './db.js';
|
|
import bcrypt from 'bcryptjs';
|
|
import readline from 'readline';
|
|
|
|
await initDB();
|
|
const db = getDB();
|
|
|
|
const rl = readline.createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout
|
|
});
|
|
|
|
const question = (q) => new Promise(resolve => rl.question(q, resolve));
|
|
|
|
console.log('=== 修改CMS管理员密码 ===\n');
|
|
|
|
const username = await question('用户名 (默认 admin): ') || 'admin';
|
|
const newPassword = await question('新密码: ');
|
|
const confirmPassword = await question('确认密码: ');
|
|
|
|
if (newPassword !== confirmPassword) {
|
|
console.error('❌ 两次密码不一致!');
|
|
process.exit(1);
|
|
}
|
|
|
|
if (newPassword.length < 6) {
|
|
console.error('❌ 密码长度至少6位!');
|
|
process.exit(1);
|
|
}
|
|
|
|
const hash = bcrypt.hashSync(newPassword, 10);
|
|
|
|
db.get(`SELECT id FROM admins WHERE username = ?`, [username], (err, row) => {
|
|
if (err || !row) {
|
|
console.error(`❌ 用户 "${username}" 不存在!`);
|
|
process.exit(1);
|
|
}
|
|
|
|
db.run(`UPDATE admins SET password_hash = ? WHERE username = ?`, [hash, username], (err) => {
|
|
if (err) {
|
|
console.error('❌ 修改失败:', err.message);
|
|
process.exit(1);
|
|
}
|
|
console.log(`\n✅ 密码修改成功!`);
|
|
console.log(` 用户名: ${username}`);
|
|
console.log(` 新密码: ${newPassword}`);
|
|
rl.close();
|
|
setTimeout(() => process.exit(0), 500);
|
|
});
|
|
});
|