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 | ❌ |
|
||||
| 3 | Auth end-to-end (KC callback) | ❌ |
|
||||
| 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