// ═══════════════════════════════════════════════════════════════════════════════ // V2 — Фронтенд пользователя (Express + EJS) // // ЭТО: Express-роутер, рендерит EJS-шаблоны. // НЕ: работа с БД (только через crud/). // // ШАБЛОН: views/v2/user.ejs — данные: entries, limit, used, companies, // activeClientId, user, includeDeleted, version. // ═══════════════════════════════════════════════════════════════════════════════ const express = require('express'); const crud = require('../crud'); const config = require('../config'); function createUserRouter() { const router = express.Router(); // ── GET / — список записей + форма ────────────────────────────────── router.get('/', async (req, res) => { try { const clId = req.clientId; const allCompanies = req.profiles.length > 0 ? req.profiles : [{ client_id: clId, company_name: req.companyName || clId }]; const includeDeleted = req.query.deleted === '1'; const { entries, used, limit } = await crud.list(clId, includeDeleted); // Переключение компании if (req.query.switchTo && allCompanies.find(c => c.client_id === req.query.switchTo)) { req.session.user.activeClientId = req.query.switchTo; return res.redirect('/app'); } res.render('v2/user', { entries, limit, used, companies: allCompanies, activeClientId: clId, user: req.user || {}, includeDeleted, version: config.version, }); } catch (e) { res.status(500).send('

Ошибка

' + e.message + '
Назад'); } }); // ── POST /add ─────────────────────────────────────────────────────── router.post('/add', async (req, res) => { try { const result = await crud.add(req.clientId, req.body.cidr || '', req.body.comment || '', req.email, req.impersonatedBy); const msg = result.wasNormalized ? 'Добавлено (адрес нормализован)' : 'Добавлено'; res.redirect('/app?msg=' + encodeURIComponent(msg)); } catch (e) { res.redirect('/app?error=' + encodeURIComponent(e.message)); } }); // ── POST /edit/:id ────────────────────────────────────────────────── router.post('/edit/:id', async (req, res) => { try { const result = await crud.edit(parseInt(req.params.id), req.clientId, req.body.cidr || '', req.body.comment || '', req.email, req.impersonatedBy); const msg = result.wasNormalized ? 'Изменено (адрес нормализован)' : 'Изменено'; res.redirect('/app?msg=' + encodeURIComponent(msg)); } catch (e) { res.redirect('/app?error=' + encodeURIComponent(e.message)); } }); // ── POST /delete/:id ──────────────────────────────────────────────── router.post('/delete/:id', async (req, res) => { try { await crud.remove(parseInt(req.params.id), req.clientId, req.email, req.impersonatedBy); res.redirect('/app?msg=Удалено'); } catch (e) { res.redirect('/app?error=' + encodeURIComponent(e.message)); } }); return router; } module.exports = { createUserRouter };