v2: документирование интеграции 0.5.98 — таблицы + impersonation
This commit is contained in:
@@ -748,3 +748,87 @@ WZ01112: entries=10 audit=10 dupes=False overLimit=False
|
|||||||
| 2 | EJS-шаблоны вместо inline HTML | ❌ |
|
| 2 | EJS-шаблоны вместо inline HTML | ❌ |
|
||||||
| 3 | Auth end-to-end (KC callback) | ❌ |
|
| 3 | Auth end-to-end (KC callback) | ❌ |
|
||||||
| 4 | Интеграция в основной код (убрать v2_) | ❌ |
|
| 4 | Интеграция в основной код (убрать v2_) | ❌ |
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Интеграция с основным проектом (0.5.98, 2026-06-15)
|
||||||
|
|
||||||
|
### Что изменилось
|
||||||
|
|
||||||
|
#### 1. Таблицы БД: v2_ → оригинальные имена
|
||||||
|
|
||||||
|
| Было (v2) | Стало |
|
||||||
|
|-----------|-------|
|
||||||
|
| `v2_companies` | `companies` |
|
||||||
|
| `v2_entries` | `whitelist_entries` |
|
||||||
|
| `v2_audit` | `audit_log` |
|
||||||
|
|
||||||
|
V2 теперь работает с ТЕМИ ЖЕ таблицами что и основной проект.
|
||||||
|
Старые v2_* таблицы больше не создаются.
|
||||||
|
|
||||||
|
**Файлы:** `v2/src/db/schema.js`, `v2/src/db/queries.js`
|
||||||
|
|
||||||
|
#### 2. Модуль impersonation/ (новый слой)
|
||||||
|
|
||||||
|
**Файл:** `v2/src/impersonation/index.js`
|
||||||
|
|
||||||
|
**Зачем:** когда админ имперсонирует в `tazet@narod.ru`, у этого юзера
|
||||||
|
должна быть не только своя компания но и админская.
|
||||||
|
|
||||||
|
**ENV-переменные:**
|
||||||
|
|
||||||
|
| Переменная | Пример | Описание |
|
||||||
|
|-----------|--------|---------|
|
||||||
|
| `IMPERSONATION_TARGET` | `tazet@narod.ru` | email юзера, которому добавляем компании |
|
||||||
|
| `IMPERSONATION_EXTRA_COMPANIES` | `WZ01112` | W-номера через запятую |
|
||||||
|
|
||||||
|
**Как работает:**
|
||||||
|
```
|
||||||
|
Браузер → nginx → Express
|
||||||
|
→ enhanceImpersonation (если email совпал → добавить компании в сессию)
|
||||||
|
→ resolveContext (сессия → req.clientId, req.allClientIds)
|
||||||
|
→ userRouter / adminRouter
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:** `tazet@narod.ru` видит в выпадающем списке свою компанию + WZ01112.
|
||||||
|
|
||||||
|
**Монтаж в server.js:**
|
||||||
|
```js
|
||||||
|
router.use('/app', enhanceImpersonation, resolveContext, createUserRouter());
|
||||||
|
router.use('/admin', enhanceImpersonation, resolveContext, createAdminRouter());
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. Архитектура — текущая
|
||||||
|
|
||||||
|
```
|
||||||
|
express HTTP
|
||||||
|
├── impersonation/ (расширение сессии) ← NEW
|
||||||
|
├── router/ (resolveContext)
|
||||||
|
├── user/ (фронт юзера)
|
||||||
|
├── admin/ (админка)
|
||||||
|
├── test/ (тестовый слой)
|
||||||
|
├── export/ (выгрузка CIDR)
|
||||||
|
│ ↓
|
||||||
|
├── crud/ (API БД + validate)
|
||||||
|
│ ↓
|
||||||
|
├── db/ (SQL: companies, whitelist_entries, audit_log)
|
||||||
|
│ ↓
|
||||||
|
└── PostgreSQL
|
||||||
|
```
|
||||||
|
|
||||||
|
### Что НЕ изменилось
|
||||||
|
|
||||||
|
- Старый код (`src/`, `ui/`, `views/`) — нетронут
|
||||||
|
- `server.js` — только 3 строки для v2
|
||||||
|
- Роуты `/v2/*` — остались под `/v2`
|
||||||
|
- EJS-шаблоны — `views/v2/`
|
||||||
|
- Тесты — все 170+ проходят
|
||||||
|
|
||||||
|
### Что дальше
|
||||||
|
|
||||||
|
| # | Задача | Статус |
|
||||||
|
|---|--------|--------|
|
||||||
|
| 1 | Интеграция в основной код | ✅ 0.5.98 |
|
||||||
|
| 2 | Auth (KC callback) | ⏸ заблокирован облаком |
|
||||||
|
| 3 | Убрать старые v2_* таблицы из БД | ⏸ после деплоя |
|
||||||
|
|||||||
Reference in New Issue
Block a user