diff --git a/package.json b/package.json index 21b18b0..9eb1f80 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.5.93", + "version": "0.5.94", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/v2/server.js b/v2/server.js index 0f40145..ffe753e 100644 --- a/v2/server.js +++ b/v2/server.js @@ -1,16 +1,23 @@ // ═══════════════════════════════════════════════════════════════════════════════ -// V2 — роутер (монтируется в server.js как /v2) +// V2 — главный роутер (монтируется в server.js как /v2) // -// СЕЙЧАС: показывает IAM-данные из сессии основного приложения. -// Вход — через основной /login (production KC). +// ЭТО: createV2Router() — собирает все v2-роутеры в один. +// ЗАЧЕМ: единственная точка входа v2 в основное приложение. // -// ПОТОМ: будет свой /v2/login → /v2/callback через production KC. -// Тогда заработает login() из src/auth/index.js. +// МОНТАЖ В ОСНОВНОМ server.js: +// const { createV2Router } = require('./v2/server'); +// app.use('/v2', createV2Router()); // -// Модули: -// router/ — resolveContext: admin/user/impersonation → req.v2_* -// user/ — обычный CRUD (пустышка) -// admin/ — админка (пустышка) +// ПОРЯДОК МАРШРУТОВ (важен!): +// 1. /login — редирект на основной OIDC-вход +// 2. /iam — отладка IAM-данных из сессии +// 3. /app — CRUD юзера (resolveContext + user роутер) +// 4. /admin — админка (resolveContext + admin роутер) +// 5. /test — тестовый API (если ENABLE_TEST_API !== 'false') +// 6. /logout — редирект на основной выход +// +// ВАЖНО: роутеры /app и /admin используют resolveContext middleware, +// которое проверяет сессию и выставляет req.clientId, req.email, ... // ═══════════════════════════════════════════════════════════════════════════════ 'use strict'; @@ -25,26 +32,50 @@ const { pool } = require('./src/db'); const { ensureSchema } = require('./src/db/schema'); function createV2Router() { - // Автосоздание таблиц при старте + // Автосоздание таблиц v2_companies, v2_entries, v2_audit при старте ensureSchema(pool).catch(e => console.error('[v2:db] Schema error:', e.message)); const router = express.Router(); - // ── GET /v2/login — редирект на основной вход ────────────────────────── + // ── GET /v2/login — редирект на основной вход (KC OIDC) ───────────── router.get('/login', (req, res) => { res.redirect('/login?returnTo=' + encodeURIComponent('/v2/app')); }); - // ── GET /v2/app — показать IAM-данные из сессии ──────────────────────── + // ── GET /v2/iam — отладка: показать 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}
@@ -53,29 +84,7 @@ function createV2Router() {Компаний: ${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;
+