“Naeel”
|
ba2d44da57
|
v2: fix switch case in test API (был сломан sed-ом)
|
2026-06-12 22:29:24 +04:00 |
|
“Naeel”
|
7333cf705a
|
v2: switch + chaos тесты (50/54 pass, switch ждёт redeploy)
|
2026-06-12 22:23:09 +04:00 |
|
“Naeel”
|
abb2e6ad8f
|
v2: test API — action=switch для переключения компаний
|
2026-06-12 22:02:12 +04:00 |
|
“Naeel”
|
70a03c9a95
|
v2: 47 CRUD-тестов — все ТЗ, нагрузка, БД, имперсонация — ALL PASS
|
2026-06-12 22:01:13 +04:00 |
|
“Naeel”
|
1434257d32
|
v2: фикс тестов — URL-encoding кириллицы
|
2026-06-12 21:56:36 +04:00 |
|
“Naeel”
|
c9491bcb7d
|
v2: /v2/test/api — CRUD эндпоинт + внешние тесты curl
|
2026-06-12 21:43:28 +04:00 |
|
“Naeel”
|
922784781d
|
v2: встроенные CRUD-тесты — /v2/test/crud (production-база)
|
2026-06-12 21:40:22 +04:00 |
|
“Naeel”
|
5c29c49e75
|
v2: /v2/login → returnTo=/v2/app
|
2026-06-12 21:21:16 +04:00 |
|
“Naeel”
|
12f1fcd53c
|
v2: убран v2_ префикс из req.* — роутер и модули согласованы
|
2026-06-12 21:19:43 +04:00 |
|
“Naeel”
|
e17dd9cd36
|
v2: убраны v2_ префиксы сессии — user/adminMode/token как в основном коде
|
2026-06-12 21:13:15 +04:00 |
|
“Naeel”
|
7b4e69bd0c
|
v2: resolveContext — копирует session.user → v2_user если нет своей
|
2026-06-12 21:10:36 +04:00 |
|
“Naeel”
|
fd461a5879
|
v2: user CRUD + schema автозапуск + router тесты — модуль пользователя готов
|
2026-06-12 21:09:30 +04:00 |
|
“Naeel”
|
e45f4a74c7
|
v2: роутер по роли + пустышки user/admin — resolveContext middleware
|
2026-06-12 21:03:41 +04:00 |
|
“Naeel”
|
6dbb76b736
|
v2: fio — строка (fullName), не объект
|
2026-06-12 20:54:48 +04:00 |
|
“Naeel”
|
c25b5e9d7f
|
v2: минимум — /v2/login→основной, /v2/iam→IAM-данные из сессии
|
2026-06-12 20:42:14 +04:00 |
|
“Naeel”
|
4422fcd0de
|
v2: откат auth/config/server к 8e225e1 — чистый модуль аутентификации
|
2026-06-12 20:15:02 +04:00 |
|
“Naeel”
|
8fd94736a8
|
v2: ⚠️ КОСТЫЛЬ /v2/test — вход с TEST_TOKEN (WZ01112) в обход Keycloak
|
2026-06-12 17:37:32 +04:00 |
|
“Naeel”
|
e8bf24d1c9
|
v2: версия 0.5.70 — отображается в /v2 и /v2/app
|
2026-06-12 17:08:46 +04:00 |
|
“Naeel”
|
2ee54fd997
|
v2: schema создаётся внутри v2, основной server.js не трогаем
|
2026-06-12 17:05:48 +04:00 |
|
“Naeel”
|
65ca65fd84
|
v2: отдельный модуль schema.js — автосоздание таблиц при старте
|
2026-06-12 17:04:25 +04:00 |
|
“Naeel”
|
d2c20c4142
|
v2: CRUD-модуль — /v2/app с выбором компании, добавление/изменение/удаление записей
|
2026-06-12 16:53:33 +04:00 |
|
“Naeel”
|
00690881e0
|
v2: документирован конфиг — тестовый KC vs production, инструкция перехода
|
2026-06-12 16:43:20 +04:00 |
|
“Naeel”
|
9795902049
|
v2: убран JWT fallback — IAM обязателен, нет IAM = ошибка
|
2026-06-12 16:41:39 +04:00 |
|
“Naeel”
|
1b6df63945
|
v2: IAM fallback — JWT claims если IAM недоступен
|
2026-06-12 16:31:18 +04:00 |
|
“Naeel”
|
4ae695f026
|
v2: детальное логирование postForm + exchangeCode
|
2026-06-12 16:26:17 +04:00 |
|
“Naeel”
|
08d25831a4
|
v2: отладка exchangeCode — логируем ответ Keycloak
|
2026-06-12 16:08:10 +04:00 |
|
“Naeel”
|
f97d57bafd
|
v2: конфиг — process.env с умолчаниями, без dotenv и .env
|
2026-06-12 16:00:34 +04:00 |
|
“Naeel”
|
5821020aaa
|
v2: хардкод конфиг — без env, без V2_*, без .env
|
2026-06-12 15:59:25 +04:00 |
|
“Naeel”
|
b25199d386
|
v2: изоляция — свои V2_* env, v2/.env, не трогает основные переменные
|
2026-06-12 15:58:17 +04:00 |
|
“Naeel”
|
8e225e1e10
|
v2: модуль аутентификации Keycloak + IAM, роутер /v2
- v2/src/auth/index.js — login(), fetchIamUser(), exchangeCode(), buildAuthUrl()
- v2/src/config/index.js — приоритет V2_* → KC_* → умолчания
- v2/server.js — createV2Router(), монтируется в server.js как /v2
- server.js — app.use('/v2', createV2Router()) перед UI-роутером
- bump 0.5.57 → 0.5.58
|
2026-06-12 15:47:32 +04:00 |
|
“Naeel”
|
b2f1cae37d
|
docs: session history 2026-06-11 with remaining tasks
|
2026-06-12 13:43:25 +04:00 |
|
“Naeel”
|
2993f95b8d
|
tz
|
2026-06-11 21:38:19 +04:00 |
|
“Naeel”
|
199585be67
|
docs: add actual TOR (ТЗ-факт) based on implemented features
|
2026-06-11 21:36:40 +04:00 |
|
“Naeel”
|
f818f454a3
|
fix: deleted entries shown with strikethrough + opacity, edit/delete hidden
|
2026-06-11 21:26:05 +04:00 |
|
“Naeel”
|
bc209aeab8
|
release: bump 0.5.57
|
2026-06-11 21:15:45 +04:00 |
|
“Naeel”
|
a601570a4a
|
fix: return includeDeleted checkbox + submit button for admin filter (no JS)
|
2026-06-11 21:07:59 +04:00 |
|
“Naeel”
|
5781b37882
|
fix: audit table has impersonated_by column + filter uses button submit (no JS)
|
2026-06-11 20:47:03 +04:00 |
|
“Naeel”
|
ffdc12bdf8
|
fix: syntax error in /debug-session — missing closing brace
|
2026-06-11 20:39:30 +04:00 |
|
“Naeel”
|
001db2a556
|
debug: /debug-session shows last audit log entries (impersonated_by)
|
2026-06-11 20:32:23 +04:00 |
|
“Naeel”
|
447acba762
|
fix: impersonation banner shows activeClientId instead of raw JWT clientId
|
2026-06-11 20:27:08 +04:00 |
|
“Naeel”
|
8f9e0a96ad
|
fix: reject client_id when allowedIds list is empty (no IAM, no JWT claims)
|
2026-06-11 20:18:55 +04:00 |
|
“Naeel”
|
68ea44a81d
|
fix: X-Imp-* headers bridge UI→API impersonation + timezone GMT+4
|
2026-06-11 20:17:07 +04:00 |
|
“Naeel”
|
d0a0fdc264
|
chore: exclude sonnet analysis files from git
|
2026-06-11 20:03:08 +04:00 |
|
“Naeel”
|
1350f0dbba
|
security: fix OIDC state check bypass + open redirect in login-token
- oidc.js: remove || true — state check now works in all environments
- auth.js: wrap returnTo in safeReturn (was unprotected on line 166)
|
2026-06-11 20:02:49 +04:00 |
|
“Naeel”
|
351cb6afe6
|
feat: test impersonation via IMPERSONATION_ORIGINAL/TARGET/COMPANY env vars
- ui/index.js: resolveUser checks env vars, only for matching email
- Закомментировать блок 'TEST IMPERSONATION' для прода
|
2026-06-11 19:25:11 +04:00 |
|
“Naeel”
|
e0cbf4bf35
|
fix: /export defaults to JSON, ?format=txt for plain text
|
2026-06-11 16:32:19 +04:00 |
|
“Naeel”
|
e3c4c738aa
|
feat: /export?format=json — JSON export for admin
|
2026-06-11 16:29:24 +04:00 |
|
“Naeel”
|
3bc285dc93
|
fix: /export only for adminMode users, not public
|
2026-06-11 16:28:15 +04:00 |
|
“Naeel”
|
6025d84959
|
fix: add ALTER TABLE migration for impersonated_by column
|
2026-06-11 16:20:52 +04:00 |
|
“Naeel”
|
7758d70dcf
|
feat: double audit — impersonated_by in audit_log
- db.js: add impersonated_by column to audit_log
- queries.js: logAudit accepts impersonatedBy, all CRUD pass it
- api/routes/entries.js: pass req.user.originalUserEmail as impersonatedBy
- При имперсонации: created_by=импактируемый, impersonated_by=админ
|
2026-06-11 16:10:41 +04:00 |
|