// ═══════════════════════════════════════════════════════════════════════════════ // V2 — Админка: лимиты и аудит (Express + EJS) // // ЭТО: Express-роутер для админа. // НЕ: доступно обычным юзерам (middleware: req.canAdmin). // // ШАБЛОНЫ: // views/v2/admin.ejs — компании + лимиты // views/v2/admin-audit.ejs — аудит // ═══════════════════════════════════════════════════════════════════════════════ const express = require('express'); const q = require('../db/queries'); const config = require('../config'); function createAdminRouter() { const router = express.Router(); router.use((req, res, next) => { if (!req.canAdmin) return res.redirect('/v2/app'); // user для шаблонов req.adminUser = { email: req.email, fio: (req.session && req.session.user && req.session.user.fio) || null, }; next(); }); // ── GET / — дашборд: компании + лимиты ───────────────────────────── router.get('/', async (req, res) => { try { const companies = await q.getAllCompanies(); res.render('v2/admin', { companies, user: req.adminUser, version: config.version }); } catch (e) { res.status(500).send('

Ошибка

' + e.message + '
'); } }); // ── GET /audit ────────────────────────────────────────────────────── router.get('/audit', async (req, res) => { try { const companyId = req.query.companyId ? parseInt(req.query.companyId) : null; const audit = await q.getAudit(companyId); const company = companyId ? await q.getCompanyById(companyId) : null; res.render('v2/admin-audit', { audit, company, version: config.version }); } catch (e) { res.status(500).send('

Ошибка

' + e.message + '
'); } }); // ── POST /limit ───────────────────────────────────────────────────── router.post('/limit', async (req, res) => { try { const companyId = parseInt(req.body.companyId); const newLimit = parseInt(req.body.limit); if (!companyId || !newLimit || newLimit < 1) throw new Error('Неверные параметры'); await q.setLimit(companyId, newLimit); res.redirect('/v2/admin?msg=' + encodeURIComponent('Лимит установлен: ' + newLimit)); } catch (e) { res.redirect('/v2/admin?error=' + encodeURIComponent(e.message)); } }); return router; } module.exports = { createAdminRouter };