chore: initialize deployable website and CMS
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user