diff --git a/package.json b/package.json index de28907..ff47840 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.5.115", + "version": "0.5.116", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/src/routes/oidc.js b/src/routes/oidc.js index 541fb18..6edd055 100644 --- a/src/routes/oidc.js +++ b/src/routes/oidc.js @@ -73,8 +73,9 @@ function createRouter({ auth, doubleCsrfProtection, generateCsrfToken, authLimit companyName: iamData.companyName, isAdmin: iamData.isAdmin, isImpersonated: iamData.isImpersonated, - impersonationType: iamData.impersonationType, - originalUserEmail: iamData.originalUserEmail, + impersonationType: iamData.impersonationType, + impersonatedCompanyId: iamData.impersonatedCompanyId, + originalUserEmail: iamData.originalUserEmail, originalUserFullName: iamData.originalUserFullName, originalUserCompany: iamData.originalUserCompany, fio: iamData.fio, diff --git a/v2/src/config/index.js b/v2/src/config/index.js index 9f0b5b2..6509175 100644 --- a/v2/src/config/index.js +++ b/v2/src/config/index.js @@ -9,7 +9,7 @@ // ═══════════════════════════════════════════════════════════════════════════════ module.exports = { - version: '0.5.115', + version: '0.5.116', // ── IAM ────────────────────────────────────────────────────────────────── iamUrl: process.env.V2_IAM_URL || 'https://auth-api.ngcloud.ru/api/v1/auth/user', diff --git a/v2/src/impersonation/index.js b/v2/src/impersonation/index.js index 9e1b73d..fc830b4 100644 --- a/v2/src/impersonation/index.js +++ b/v2/src/impersonation/index.js @@ -32,24 +32,24 @@ function enhanceImpersonation(req, res, next) { return next(); } - // ── Тестовый режим: полная подмена данных ─────────────────────────── - if (TARGET_EMAIL && u.email === ORIGINAL_EMAIL) { + // ── Тестовый режим: нужны все три — ORIGINAL, TARGET, COMPANY ──────── + if (ORIGINAL_EMAIL && TARGET_EMAIL && MAIN_COMPANY && u.email === ORIGINAL_EMAIL) { // Сохраняем isAdmin от оригинала const wasAdmin = u.isAdmin || (u.allClientIds || []).includes('WZ01112') || u.clientId === 'WZ01112'; // Подменяем ВСЕ данные на таргета (как делает IAM) u.email = TARGET_EMAIL; - u.clientId = MAIN_COMPANY || u.clientId; - u.activeClientId = MAIN_COMPANY || u.clientId; + u.clientId = MAIN_COMPANY; + u.activeClientId = MAIN_COMPANY; u.allClientIds = ALL_TARGET_CIDS; u.companyName = MAIN_COMPANY; - u.isAdmin = wasAdmin; // админство сохраняется + u.isAdmin = wasAdmin; u.isImpersonated = true; + u.impersonatedCompanyId = MAIN_COMPANY; u.originalUserEmail = ORIGINAL_EMAIL; u.originalUserFullName = u.fio ? (u.fio.fullName || '') : ''; - u.fio = null; // фио таргета неизвестно + u.fio = null; - // Профили таргета (имитация) u.profiles = ALL_TARGET_CIDS.map(cid => ({ client_id: cid, company_name: cid,