naeel
9c51e449ab
fix: remove canWrite from IAM — it is IAM RBAC, not our app logic
...
- IAM permissions.can_write defaults to false for all users
- Our app controls writes via adminMode + company membership
2026-06-11 16:01:55 +04:00
naeel
9a331eec82
feat: full IAM impersonation support — read-only + original user + canWrite
...
- src/auth.js: all impersonation fields + permissions.can_write
- src/routes/oidc.js: save all fields to session
- ui/index.js: canWrite, originalUserEmail in req.user
- ui/routes/entries.js: read-only guard on POST/PATCH/DELETE
- docs/PLAN-impersonation.md: updated with implemented items
2026-06-11 15:54:56 +04:00
naeel
a2cfd2c10f
feat: IAM impersonation support — isImpersonated flag + banner
...
- src/auth.js: fetchIamUser extract isImpersonated from response
- src/routes/oidc.js: save isImpersonated to session
- ui/index.js: isImpersonated in req.user
- ui/routes/entries.js: pass isImpersonated to render
- views/index.ejs: banner 'Режим имперсонации'
- docs/PLAN-impersonation.md: план дальнейших шагов (двойной аудит)
2026-06-11 15:34:19 +04:00
naeel
7b3dd8b4b3
fix: всегда показывать email залогиненного, не owner_email компании
...
- Убрано selectedCompany.owner_email из отображения «пользователь»
- Админ видит свой email, а не создателя компании
2026-06-11 15:16:59 +04:00
naeel
ce6b67e72a
fix: email from session.user first, not JWT payload
...
- req.session.user.email приоритетнее payload.email
- Исправляет отображение чужого email в header
2026-06-11 15:08:07 +04:00
naeel
9cb53df8b1
fix: toggle as pure HTML form — no JS, no fetch, just POST+redirect
...
- views/index.ejs: onclick+fetch → form method=POST с button
- ui/routes/auth.js: JSON → res.redirect(Referer)
- Текст меняется: «Администратор» ↔ «Выйти из админки»
2026-06-11 14:59:59 +04:00
naeel
fa4d5646fa
fix: toggle now works — JSON response + immediate CSS flip
...
- /toggle-admin returns JSON {ok, adminMode} instead of redirect
- onclick: toggle CSS instantly, then fetch, then reload on ok
2026-06-11 14:42:31 +04:00
naeel
f739754c3b
fix: pass canAdminMode to render + bump 0.5.47
2026-06-11 14:34:42 +04:00
naeel
cad6ebb4d6
release: bump 0.5.46
2026-06-11 14:24:46 +04:00
naeel
d54a72ca2c
debug: add resolveUser logging for canAdminMode diagnosis
2026-06-11 14:04:36 +04:00
naeel
4af34616f9
fix: canAdminMode по email ntazetdinov@nubes.ru вместо isAdmin
...
- ui/index.js: email берётся из сессии (IAM/Keycloak)
- canAdminMode: (isAdmin AND WZ01112) OR (ntazetdinov@nubes.ru AND WZ01112)
- Временно для тестов, убрать после настройки IAM isAdmin
2026-06-11 13:41:35 +04:00
naeel
13466ebd37
simplify: toggle adminMode, canAdminMode flag, remove getOrCreateCompany fallback
...
- ui/index.js: canAdminMode = isAdmin AND WZ01112 (временно || WZ01112)
- views/index.ejs: checkbox → toggle с JS fetch, условие canAdminMode
- ui/routes/entries.js: убран getOrCreateCompany-фоллбек для админа
- Админ без ?company= видит список компаний, без автозагрузки
- isAdmin теперь чисто из IAM (без || WZ01112)
2026-06-11 13:15:37 +04:00
naeel
1794610f77
fix: ownCo not found → getOrCreateCompany instead of companies[0]
...
- Убрал fallback на companies[0] — небезопасно
- Если компания админа не найдена — создаём через getOrCreateCompany
2026-06-11 11:18:59 +04:00
naeel
2acad33fd4
fix: admin without ?company= loads own company (no redirect)
...
- Убрал редирект на ?company=<id> — админ видит свою компанию по умолчанию
- ownCo ищется по clientId из сессии, если не найдена — первая из списка
- Больше не пишет ?company= в URL при первом входе
2026-06-11 11:16:37 +04:00
naeel
4f1f64dd6c
feat: adminMode — чек-бокс переключения админского интерфейса
...
Шаг 1: /toggle-admin роут в ui/routes/auth.js
- переключает req.session.adminMode
- canAdmin = isAdmin || clientId === WZ01112 (временно)
Шаг 2: resolveUser в ui/index.js
- req.user.adminMode из req.session.adminMode
- isAdmin = IAM.isAdmin || clientId === WZ01112 (временно)
Шаг 3: adminMode вместо isAdmin в интерфейсе
- ui/routes/entries.js: adminMode решает админский view
- ui/routes/admin.js: requireAdmin проверяет adminMode
Шаг 4: views/index.ejs
- чек-бокс «Администратор» (виден только если isAdmin)
- ссылки Аудит/Лимиты видны только при adminMode
- селектор компаний — при adminMode
2026-06-11 11:08:03 +04:00
naeel
8c1787df19
bump 0.5.37 — debug /debug-session endpoint
2026-06-11 10:49:54 +04:00
naeel
02859d6a7a
fix: replace regex constraint with LIKE '%/%' for PG compat
...
- constraint CHECK (value_cidr LIKE '%/%') instead of regex
- regex broke on managed PG with standard_conforming_strings=off
- ALTER TABLE adds constraint on existing tables
2026-06-10 11:51:08 +04:00
naeel
32cb0f4ac6
fix: block clientId login in OIDC mode (crash fix)
...
- ui/routes/auth.js: auth.isOidc → redirect to /login with error instead of
calling issueMockToken which throws 'Mock keypair not initialized'
- This was crashing the process via unhandled promise rejection
2026-06-10 11:42:50 +04:00
naeel
e22b7ac408
bump 0.5.34 — save idToken for logout
2026-06-09 22:37:05 +04:00
naeel
54f950b7d1
bump 0.5.33 — revert idToken, logout via KC config
2026-06-09 22:29:15 +04:00
naeel
9fc3665292
bump 0.5.32 — remove audience check from JWT verify
2026-06-09 22:17:23 +04:00
naeel
4a45546b0d
bump 0.5.31 — disable state check in production for SSO test
2026-06-09 22:01:26 +04:00
naeel
9b76333b22
bump 0.5.30 — restore state check, clean code
2026-06-09 21:59:26 +04:00
naeel
a39f97f3b4
bump 0.5.29 — add KC_BASE_URL to exchange error
2026-06-09 21:56:45 +04:00
naeel
6c5215513c
bump 0.5.28 — disable state check for SSO test
2026-06-09 21:53:07 +04:00
naeel
61361ec7e2
bump 0.5.27 — error handler: URL, user, clientId, stack
2026-06-09 21:01:33 +04:00
naeel
d0bfdab085
bump 0.5.26 — fix server.js error handler to show message
2026-06-09 21:01:00 +04:00
naeel
9c74479121
bump 0.5.25 — error details on 500 page, ensureSchema catch
...
- ui/index.js: 500 page shows error.message
- server.js: ensureSchema error logged, doesn't crash startup
2026-06-09 20:56:58 +04:00
naeel
51b6fdf132
bump 0.5.24
2026-06-09 20:51:33 +04:00
naeel
e3ebd8ba4e
Revert "bump 0.5.24"
...
This reverts commit f5141f652f .
2026-06-09 20:49:59 +04:00
naeel
f5141f652f
bump 0.5.24
2026-06-09 20:49:35 +04:00
naeel
e9bd94cea3
fix: 0.0.0.0/8 → blocked ranges + bump 0.5.23
2026-06-04 16:13:04 +03:00
naeel
c1df27d29d
fix: DeepSeek audit — header injection + IAM limit + bump 0.5.22
...
- src/api/routes/entries.js: санитизация filename в /api/v1/entries/export
- ui/routes/export.js: санитизация filename в UI /export
- src/auth.js: лимит 100KB для IAM-ответов
- src/api/routes/entries.js: fallback для пустого allowedIds
2026-06-04 15:48:16 +03:00
naeel
58e34042de
fix: header injection, api timeout, nginx duplicate + bump 0.5.21
...
- server.js: санитизация filename в /export (header injection)
- ui/api-client.js: req.setTimeout(15000) + try/catch JSON.parse
- docs/devops-deploy.md: убран дубль X-Forwarded-Proto
2026-06-04 15:41:03 +03:00
naeel
99796202cb
fix: IAM warning, nginx doc, fail-fast IAM_API_URL + bump 0.5.20
...
- src/routes/oidc.js: console.error при IAM fallback вместо warn
- server.js: проверка IAM_API_URL в production mode
- docs/devops-deploy.md: X-Forwarded-Proto в nginx config
2026-06-04 15:33:32 +03:00
naeel
7b66b94774
bump: 0.5.19 (redirect security fixes)
2026-06-04 15:27:17 +03:00
naeel
6edef60ed8
bump: 0.5.18 (IAM integration)
2026-06-04 15:11:53 +03:00
naeel
878e46287b
v0.5.17: owner_email в companies + универсальный парсер токенов + jwt.decode fallback
2026-06-03 15:17:56 +03:00
naeel
8e72fc4559
bump v0.5.13 → v0.5.14
2026-06-03 12:37:21 +03:00
naeel
ac0f151bcb
v0.5.13
2026-06-03 05:54:46 +03:00
naeel
0fd5b43a94
v0.5.12: доделки перед сдачей заказчику
...
§4.7: агрегация CIDR в публичном /export (aggregateCIDRs)
§5: клиентская JS-валидация (запрещённые диапазоны + нормализация)
§4.1: фильтр «показать удалённые» для admin (API + UI)
§5: уведомление о нормализации (уже работало, проверено)
Файлы:
- server.js: +aggregateCIDRs в /export
- views/index.ejs: JS-валидация + чек-бокс удалённых
- src/api/routes/entries.js: ?includeDeleted=true (admin only)
- ui/routes/entries.js: проброс includeDeleted
- docs/PLAN-predsdachey.md: план доделок
2026-06-02 19:04:24 +03:00
naeel
4694b7e8a6
v0.5.11: версия + фикс теста MOCK_USERS.length 3→4
2026-06-02 17:49:07 +03:00
naeel
51a003e078
v0.5.10: /export — attachment default, ?view=1 inline, ?filename=custom
2026-06-02 14:49:50 +03:00
naeel
66a52d9363
v0.5.9: fix tests IDs, revert dotenv abs paths, deploy-vm doc
2026-06-02 14:20:16 +03:00
naeel
b91b78ab04
v0.5.8: distinct MOCK_USERS (WZ88888=АЛЬФА, WZ77777=БЕТА)
2026-06-02 11:36:53 +03:00
naeel
f1416e6566
v0.5.7: unique company names in MOCK_USERS
2026-06-02 11:32:41 +03:00
naeel
ff4b35414c
v0.5.6: bump version
2026-06-02 11:30:23 +03:00
naeel
59ad0fa67e
v0.5.5: fix export client_id + multi-company tests (section O)
2026-06-02 11:17:23 +03:00
naeel
8ab2271ff9
v0.5.4: fix isolation — resolveUser syncs activeClientId from session
2026-06-02 11:11:20 +03:00
naeel
1b1b3b6bd7
v0.5.3: fix multi-company API isolation (client_id param)
2026-06-02 10:57:52 +03:00