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