f24f35d0fc
Co-authored-by: Cursor <cursoragent@cursor.com>
30 lines
1011 B
JavaScript
30 lines
1011 B
JavaScript
const bcrypt = require('bcryptjs');
|
|
const { query } = require('./db');
|
|
const { ROLES } = require('./constants/roles');
|
|
|
|
async function seedAdmin() {
|
|
const email = (process.env.ADMIN_EMAIL || 'admin@site.com').trim().toLowerCase();
|
|
const password = process.env.ADMIN_PASSWORD || 'admin';
|
|
const name = process.env.ADMIN_NAME || 'Администратор';
|
|
|
|
const { rows } = await query('SELECT id, role FROM users WHERE email = $1', [email]);
|
|
|
|
if (!rows[0]) {
|
|
const hash = bcrypt.hashSync(password, 10);
|
|
await query(
|
|
`INSERT INTO users (email, password_hash, name, role)
|
|
VALUES ($1, $2, $3, $4)`,
|
|
[email, hash, name, ROLES.ADMIN]
|
|
);
|
|
console.log('Создан администратор:', email);
|
|
return;
|
|
}
|
|
|
|
if (rows[0].role !== ROLES.ADMIN) {
|
|
await query('UPDATE users SET role = $1 WHERE id = $2', [ROLES.ADMIN, rows[0].id]);
|
|
console.log('Пользователю назначена роль admin:', email);
|
|
}
|
|
}
|
|
|
|
module.exports = { seedAdmin };
|