v2: user CRUD + schema автозапуск + router тесты — модуль пользователя готов
This commit is contained in:
@@ -75,3 +75,55 @@ CIDR validate, overlaps, cidrToRange, aggregateCIDRs, BLOCKED_RANGES.
|
||||
- Каждый модуль — отдельная папка в src/
|
||||
- env-переменные — через process.env, без .env/dotenv
|
||||
- Умолчания — хардкод, переопределяются через V2_* env
|
||||
|
||||
---
|
||||
|
||||
## Модуль router/ (0.5.75)
|
||||
|
||||
`resolveContext` middleware — определяет контекст из `req.session.v2_user`:
|
||||
|
||||
```
|
||||
нет сессии / нет v2_user → 302 /v2/login
|
||||
обычный юзер → req.v2_email, req.v2_clientId (activeClientId)
|
||||
юзер с несколькими компаниями → activeClientId из сессии
|
||||
админ + adminMode → req.v2_isAdmin = true
|
||||
админ без adminMode → req.v2_isAdmin = false (видит как юзер)
|
||||
имперсонация → email подменён на originalUserEmail
|
||||
clientId подменён на impersonatedCompanyId
|
||||
req.v2_impersonatedBy = реальный админ
|
||||
```
|
||||
|
||||
### Тесты (v2/src/router/test.js)
|
||||
|
||||
9 тестов, все пройдены ✅:
|
||||
|
||||
1. нет сессии → /v2/login
|
||||
2. нет v2_user → /v2/login
|
||||
3. обычный юзер 1 компания
|
||||
4. юзер 2 компании → activeClientId
|
||||
5. админ adminMode=true
|
||||
6. админ adminMode=false
|
||||
7. имперсонация с originalUserEmail
|
||||
8. имперсонация без originalUserEmail
|
||||
9. без activeClientId → fallback на clientId
|
||||
|
||||
### Ошибки при тестировании
|
||||
|
||||
- Причина: спешка. null вместо undefined, двойной префикс v2_v2_ в ключах.
|
||||
- Урок: сначала думать, потом писать.
|
||||
|
||||
## Текущая структура (0.5.75)
|
||||
|
||||
```
|
||||
v2/src/
|
||||
├── auth/index.js # fetchIamUser(), login(), exchangeCode()
|
||||
├── config/index.js # iamUrl, appUrl, version
|
||||
├── router/
|
||||
│ ├── index.js # resolveContext middleware
|
||||
│ └── test.js # 9 тестов
|
||||
├── user/index.js # createUserRouter (пустышка)
|
||||
├── admin/index.js # createAdminRouter (пустышка)
|
||||
├── crud/index.js # createCrudRouter (не монтирован)
|
||||
├── db/ # pool, queries, schema
|
||||
└── validators/index.js # CIDR validate
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user