From cd49398660fca8c341ee4c28a308dd956c6e5028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Fri, 12 Jun 2026 21:19:43 +0400 Subject: [PATCH] =?UTF-8?q?v2:=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=20v2=5F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D1=84=D0=B8=D0=BA=D1=81=20=D0=B8=D0=B7=20req?= =?UTF-8?q?.*=20=E2=80=94=20=D1=80=D0=BE=D1=83=D1=82=D0=B5=D1=80=20=D0=B8?= =?UTF-8?q?=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B8=20=D1=81=D0=BE=D0=B3?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D0=BE=D0=B2=D0=B0=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- v2/src/config/index.js | 2 +- v2/src/router/index.js | 18 +++++++++--------- v2/src/router/test.js | 14 +++++++------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 3042c26..b0a0cb0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.5.78", + "version": "0.5.79", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/v2/src/config/index.js b/v2/src/config/index.js index b129f82..c4f2120 100644 --- a/v2/src/config/index.js +++ b/v2/src/config/index.js @@ -6,7 +6,7 @@ // ═══════════════════════════════════════════════════════════════════════════════ module.exports = { - version: '0.5.78', + version: '0.5.79', iamUrl: process.env.V2_IAM_API_URL || 'https://auth-api.ngcloud.ru', appUrl: process.env.V2_APP_URL || 'https://whitelist.nodejsk8s.services.ngcloud.ru', }; diff --git a/v2/src/router/index.js b/v2/src/router/index.js index f76826f..4941cb4 100644 --- a/v2/src/router/index.js +++ b/v2/src/router/index.js @@ -4,7 +4,7 @@ // ═══════════════════════════════════════════════════════════════════════════════ /** - * middleware — извлекает контекст из сессии и кладёт в req.v2_* + * middleware — извлекает контекст из сессии и кладёт в req.* * Вызывается перед всеми маршрутами v2. */ function resolveContext(req, res, next) { @@ -15,15 +15,15 @@ function resolveContext(req, res, next) { const isImpersonated = !!u.isImpersonated; // Контекст для CRUD - req.v2_email = isImpersonated ? (u.originalUserEmail || u.email) : u.email; - req.v2_clientId = isImpersonated ? (u.impersonatedCompanyId || u.activeClientId || u.clientId) : (u.activeClientId || u.clientId); - req.v2_isAdmin = isAdmin; - req.v2_isImpersonated = isImpersonated; - req.v2_impersonatedBy = isImpersonated ? u.email : null; // кто реально (для аудита) + req.email = isImpersonated ? (u.originalUserEmail || u.email) : u.email; + req.clientId = isImpersonated ? (u.impersonatedCompanyId || u.activeClientId || u.clientId) : (u.activeClientId || u.clientId); + req.isAdmin = isAdmin; + req.isImpersonated = isImpersonated; + req.impersonatedBy = isImpersonated ? u.email : null; // кто реально (для аудита) req.user = u; - req.v2_allClientIds = u.allClientIds || []; - req.v2_profiles = u.profiles || []; - req.v2_companyName = u.companyName || u.clientId; + req.allClientIds = u.allClientIds || []; + req.profiles = u.profiles || []; + req.companyName = u.companyName || u.clientId; next(); } diff --git a/v2/src/router/test.js b/v2/src/router/test.js index 88c2c5d..255092d 100644 --- a/v2/src/router/test.js +++ b/v2/src/router/test.js @@ -26,39 +26,39 @@ t('нет user', { user: null }, { _redirect: '/v2/login' }); t('обычный юзер 1 компания', { user: { email: 'u@t.ru', clientId: 'WZ03709', activeClientId: 'WZ03709', allClientIds: ['WZ03709'], companyName: 'test', isAdmin: false, profiles: [] -}}, { 'v2_email': 'u@t.ru', 'v2_clientId': 'WZ03709', 'v2_isAdmin': false, 'v2_isImpersonated': false, 'v2_impersonatedBy': null }); +}}, { 'email': 'u@t.ru', 'clientId': 'WZ03709', 'isAdmin': false, 'isImpersonated': false, 'impersonatedBy': null }); t('юзер 2 компании', { user: { email: 'm@t.ru', clientId: 'WZ88888', activeClientId: 'WZ77777', allClientIds: ['WZ88888','WZ77777'], companyName: 'AB', isAdmin: false, profiles: [] -}}, { 'v2_email': 'm@t.ru', 'v2_clientId': 'WZ77777', 'v2_allClientIds': ['WZ88888','WZ77777'] }); +}}, { 'email': 'm@t.ru', 'clientId': 'WZ77777', 'allClientIds': ['WZ88888','WZ77777'] }); t('админ adminMode', { user: { email: 'a@t.ru', clientId: 'WZ01112', activeClientId: 'WZ01112', allClientIds: ['WZ01112'], isAdmin: true, profiles: [] -}, adminMode: true }, { 'v2_email': 'a@t.ru', 'v2_clientId': 'WZ01112', 'v2_isAdmin': true }); +}, adminMode: true }, { 'email': 'a@t.ru', 'clientId': 'WZ01112', 'isAdmin': true }); t('админ без adminMode', { user: { email: 'a@t.ru', clientId: 'WZ01112', activeClientId: 'WZ01112', allClientIds: ['WZ01112'], isAdmin: true, profiles: [] -} }, { 'v2_email': 'a@t.ru', 'v2_clientId': 'WZ01112', 'v2_isAdmin': false }); +} }, { 'email': 'a@t.ru', 'clientId': 'WZ01112', 'isAdmin': false }); t('имперсонация', { user: { email: 'admin@t.ru', clientId: 'WZ01112', activeClientId: 'WZ01112', allClientIds: ['WZ01112','WZ03709'], isAdmin: true, isImpersonated: true, originalUserEmail: 'real@t.ru', impersonatedCompanyId: 'WZ03709', profiles: [] -}, adminMode: true }, { 'v2_email': 'real@t.ru', 'v2_clientId': 'WZ03709', 'v2_isImpersonated': true, 'v2_impersonatedBy': 'admin@t.ru' }); +}, adminMode: true }, { 'email': 'real@t.ru', 'clientId': 'WZ03709', 'isImpersonated': true, 'impersonatedBy': 'admin@t.ru' }); t('имперс. без origEmail', { user: { email: 'x@t.ru', clientId: 'WZ01112', activeClientId: 'WZ01112', allClientIds: ['WZ01112'], isAdmin: true, isImpersonated: true, originalUserEmail: '', impersonatedCompanyId: '', profiles: [] -} }, { 'v2_email': 'x@t.ru', 'v2_clientId': 'WZ01112', 'v2_impersonatedBy': 'x@t.ru' }); +} }, { 'email': 'x@t.ru', 'clientId': 'WZ01112', 'impersonatedBy': 'x@t.ru' }); t('без activeClientId', { user: { email: 'y@t.ru', clientId: 'WZ03709', allClientIds: ['WZ03709'], isAdmin: false, profiles: [] -} }, { 'v2_email': 'y@t.ru', 'v2_clientId': 'WZ03709' }); +} }, { 'email': 'y@t.ru', 'clientId': 'WZ03709' }); console.log(`\n${passed} passed, ${failed} failed`); if (failed) process.exit(1);