// ═══════════════════════════════════════════════════════════════════════════════ // V2 — роутер (монтируется в server.js как /v2) // // СЕЙЧАС: показывает IAM-данные из сессии основного приложения. // Вход — через основной /login (production KC). // // ПОТОМ: будет свой /v2/login → /v2/callback через production KC. // Тогда заработает login() из src/auth/index.js. // // Модули: // router/ — resolveContext: admin/user/impersonation → req.v2_* // user/ — обычный CRUD (пустышка) // admin/ — админка (пустышка) // ═══════════════════════════════════════════════════════════════════════════════ 'use strict'; const express = require('express'); const config = require('./src/config'); const auth = require('./src/auth'); const { resolveContext } = require('./src/router'); const { createUserRouter } = require('./src/user'); const { createAdminRouter } = require('./src/admin'); const { pool } = require('./src/db'); const { ensureSchema } = require('./src/db/schema'); function createV2Router() { // Автосоздание таблиц при старте ensureSchema(pool).catch(e => console.error('[v2:db] Schema error:', e.message)); const router = express.Router(); // ── GET /v2/login — редирект на основной вход ────────────────────────── router.get('/login', (req, res) => { res.redirect('/login?returnTo=' + encodeURIComponent('/v2/app')); }); // ── GET /v2/app — показать IAM-данные из сессии ──────────────────────── router.get('/iam', (req, res) => { const u = req.session && req.session.user; if (!u) return res.send('
Email: ${u.email}
clientId: ${u.clientId}
Компания: ${u.companyName}
isAdmin: ${u.isAdmin}
ФИО: ${(u.fio && u.fio.fullName) || u.fio || '—'}
Компаний: ${u.allClientIds ? u.allClientIds.length : 0} — ${(u.allClientIds || []).join(', ')}
${JSON.stringify(u, null, 2)}
`);
});
// ── /v2/app — обычный CRUD (только для авторизованных) ─────────────────
router.use('/app', resolveContext, createUserRouter());
// ── /v2/admin — админка (только для авторизованных) ────────────────────
router.use('/admin', resolveContext, createAdminRouter());
// ── GET /v2/ ─────────────────────────────────────────────────────────────
router.get('/', (req, res) => res.redirect('/v2/app'));
// ── /v2/test — тестовый эндпоинт (отключить: ENABLE_TEST_API=false) ──
if (process.env.ENABLE_TEST_API !== 'false') {
const { createTestRouter } = require('./src/test');
router.use('/test', createTestRouter());
}
// ── GET /v2/logout ───────────────────────────────────────────────────────
router.get('/logout', (req, res) => res.redirect('/logout'));
return router;
}
module.exports = { createV2Router };