35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
const session = require('express-session');
|
||
const { db } = require('./db');
|
||
|
||
const sessionMiddleware = session({
|
||
secret: process.env.SESSION_SECRET || 'hotel-secret-key-change-me',
|
||
resave: false,
|
||
saveUninitialized: false,
|
||
cookie: { secure: false, httpOnly: true, maxAge: 24 * 60 * 60 * 1000 }
|
||
});
|
||
|
||
function ensureAdmin() {
|
||
const login = process.env.ADMIN_LOGIN || 'admin';
|
||
const password = process.env.ADMIN_PASSWORD || 'admin';
|
||
|
||
// Таблица admins уже создана в db.js, можно сразу искать
|
||
const admin = db.prepare('SELECT id FROM admins WHERE login = ?').get(login);
|
||
if (admin) {
|
||
// Обновить пароль при каждом старте
|
||
db.prepare('UPDATE admins SET password = ? WHERE login = ?').run(password, login);
|
||
console.log(`Пароль администратора "${login}" обновлён`);
|
||
} else {
|
||
// Создать запись
|
||
db.prepare('INSERT INTO admins (login, password) VALUES (?, ?)').run(login, password);
|
||
console.log(`Администратор "${login}" создан`);
|
||
}
|
||
}
|
||
|
||
function requireAdmin(req, res, next) {
|
||
if (req.session && req.session.isAdmin) {
|
||
return next();
|
||
}
|
||
res.status(401).json({ error: 'Не авторизован' });
|
||
}
|
||
|
||
module.exports = { sessionMiddleware, ensureAdmin, requireAdmin }; |