/
h0tnanny
/
IotPlatform
Обзор
Документация
Войти
/
h0tnanny
/
IotPlatform
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
database/reset_admin_password.js
53 строки
2 KB
h0tnanny
Эмулирование устройств
07 фев 2026, 00:02
07 фев 2026, 00:02
074eca7
Код
Авторство
О чём код?
/** * Сбрасывает пароль учётной записи admin. * Запуск: node database/reset_admin_password.js * Новый пароль: RESET_ADMIN_PASSWORD=MyNewPass node database/reset_admin_password.js * Без переменной ставится пароль по умолчанию из конфига: Admin123! */ const { Pool } = require('pg'); const bcrypt = require('bcrypt'); const path = require('path'); require('dotenv').config({ path: path.join(__dirname, '..', '.env') }); const SALT_ROUNDS = 12; const DEFAULT_PASSWORD = 'Admin123!'; const pool = new Pool({ host: process.env.DB_HOST || 'localhost', port: parseInt(process.env.DB_PORT || '5432', 10), database: process.env.DB_NAME || 'iot_platform', user: process.env.DB_USER || 'postgres', password: process.env.DB_PASSWORD || 'postgres', }); async function run() { const newPassword = process.env.RESET_ADMIN_PASSWORD || DEFAULT_PASSWORD; const client = await pool.connect(); const adminRes = await client.query( "SELECT id FROM users WHERE username = 'admin' LIMIT 1" ); if (adminRes.rows.length === 0) { throw new Error('Пользователь admin не найден. Запустите сервер (npm run dev), чтобы создался admin.'); } const passwordHash = await bcrypt.hash(newPassword, SALT_ROUNDS); await client.query( "UPDATE users SET password_hash = $1, updated_at = NOW() WHERE username = 'admin'", [passwordHash] ); client.release(); await pool.end(); if (newPassword === DEFAULT_PASSWORD) { console.log('Пароль admin сброшен на значение по умолчанию: Admin123!'); } else { console.log('Пароль admin успешно обновлён (значение из RESET_ADMIN_PASSWORD).'); } } run().catch((err) => { console.error('Ошибка:', err.message); process.exit(1); });