v0.5.111: админка — лимиты и аудит (/v2/admin), кнопка ⚙️
This commit is contained in:
+13
-24
@@ -1,33 +1,36 @@
|
||||
// ═══════════════════════════════════════════════════════════════════════════════
|
||||
// V2 — Админка (Express + EJS)
|
||||
// V2 — Админка: лимиты и аудит (Express + EJS)
|
||||
//
|
||||
// ЭТО: Express-роутер для админа, рендерит EJS-шаблоны.
|
||||
// НЕ: доступно обычным юзерам (middleware: req.isAdmin).
|
||||
// ЭТО: Express-роутер для админа.
|
||||
// НЕ: доступно обычным юзерам (middleware: req.canAdmin).
|
||||
//
|
||||
// ШАБЛОНЫ:
|
||||
// views/v2/admin.ejs — дашборд (companies, user, version)
|
||||
// views/v2/admin-audit.ejs — аудит (audit, company, version)
|
||||
// views/v2/admin-entries.ejs — записи (entries, company, used, limit, ...)
|
||||
// views/v2/admin.ejs — компании + лимиты
|
||||
// views/v2/admin-audit.ejs — аудит
|
||||
// ═══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
const express = require('express');
|
||||
const q = require('../db/queries');
|
||||
const crud = require('../crud');
|
||||
const config = require('../config');
|
||||
|
||||
function createAdminRouter() {
|
||||
const router = express.Router();
|
||||
|
||||
router.use((req, res, next) => {
|
||||
if (!req.isAdmin) return res.redirect('/v2/app');
|
||||
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 / — дашборд ─────────────────────────────────────────────────
|
||||
// ── GET / — дашборд: компании + лимиты ─────────────────────────────
|
||||
router.get('/', async (req, res) => {
|
||||
try {
|
||||
const companies = await q.getAllCompanies();
|
||||
res.render('v2/admin', { companies, user: req.user || {}, version: config.version });
|
||||
res.render('v2/admin', { companies, user: req.adminUser, version: config.version });
|
||||
} catch (e) {
|
||||
res.status(500).send('<h2>Ошибка</h2><pre>' + e.message + '</pre>');
|
||||
}
|
||||
@@ -58,20 +61,6 @@ function createAdminRouter() {
|
||||
}
|
||||
});
|
||||
|
||||
// ── GET /entries ────────────────────────────────────────────────────
|
||||
router.get('/entries', async (req, res) => {
|
||||
try {
|
||||
const companyId = parseInt(req.query.companyId);
|
||||
const company = companyId ? await q.getCompanyById(companyId) : null;
|
||||
if (!company) return res.redirect('/v2/admin');
|
||||
const includeDeleted = req.query.deleted === '1';
|
||||
const { entries, used, limit } = await crud.list(company.client_id, includeDeleted);
|
||||
res.render('v2/admin-entries', { entries, company, used, limit, includeDeleted, version: config.version });
|
||||
} catch (e) {
|
||||
res.status(500).send('<h2>Ошибка</h2><pre>' + e.message + '</pre>');
|
||||
}
|
||||
});
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user