47 lines
1.8 KiB
JavaScript
47 lines
1.8 KiB
JavaScript
const bcrypt = require('bcryptjs');
|
|
const db = require('./db');
|
|
|
|
async function fixUsers() {
|
|
const password = 'X123c321@';
|
|
const hash = bcrypt.hashSync(password, 12);
|
|
|
|
try {
|
|
await db.query('UPDATE users SET password = $1, password_hash = $2 WHERE username = $3', [password, hash, 'admin']);
|
|
console.log('admin密码已更新为: ' + password);
|
|
} catch (e) {
|
|
console.log('更新admin密码错误: ' + e.message);
|
|
}
|
|
|
|
const users = [
|
|
['finance', password, hash, '财务专员', 'finance@example.com', '', 'finance'],
|
|
['manager', password, hash, '项目经理', 'manager@example.com', '', 'manager'],
|
|
['employee', password, hash, '普通员工', 'employee@example.com', '', 'user']
|
|
];
|
|
|
|
for (const [username, pwd, pwdHash, name, email, phone, role] of users) {
|
|
try {
|
|
const existing = await db.query('SELECT id FROM users WHERE username = $1', [username]);
|
|
if (existing.rows.length > 0) {
|
|
await db.query('UPDATE users SET password = $1, password_hash = $2 WHERE username = $3', [pwd, pwdHash, username]);
|
|
console.log(username + ' 用户密码已更新');
|
|
} else {
|
|
await db.query(
|
|
'INSERT INTO users (username, password, password_hash, name, email, phone, role, created_at, updated_at) VALUES ($1, $2, $3, $4, $5, $6, $7, NOW(), NOW())',
|
|
[username, pwd, pwdHash, name, email, phone, role]
|
|
);
|
|
console.log(username + ' 用户已创建');
|
|
}
|
|
} catch (e) {
|
|
console.log(username + ' 错误: ' + e.message);
|
|
}
|
|
}
|
|
|
|
const result = await db.query('SELECT id, username, name, role FROM users ORDER BY id');
|
|
console.log('\n当前用户列表:');
|
|
result.rows.forEach(r => console.log(' ' + r.id + ': ' + r.username + ' (' + r.name + ') - ' + r.role));
|
|
|
|
process.exit(0);
|
|
}
|
|
|
|
fixUsers().catch(e => { console.error(e); process.exit(1); });
|