v0.5.116: фикс impersonatedCompanyId в сессии + тестовая имперсонация по трём ENV
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ipwhitelist",
|
"name": "ipwhitelist",
|
||||||
"version": "0.5.115",
|
"version": "0.5.116",
|
||||||
"description": "IP WhiteList microservice for cloud provider",
|
"description": "IP WhiteList microservice for cloud provider",
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
+3
-2
@@ -73,8 +73,9 @@ function createRouter({ auth, doubleCsrfProtection, generateCsrfToken, authLimit
|
|||||||
companyName: iamData.companyName,
|
companyName: iamData.companyName,
|
||||||
isAdmin: iamData.isAdmin,
|
isAdmin: iamData.isAdmin,
|
||||||
isImpersonated: iamData.isImpersonated,
|
isImpersonated: iamData.isImpersonated,
|
||||||
impersonationType: iamData.impersonationType,
|
impersonationType: iamData.impersonationType,
|
||||||
originalUserEmail: iamData.originalUserEmail,
|
impersonatedCompanyId: iamData.impersonatedCompanyId,
|
||||||
|
originalUserEmail: iamData.originalUserEmail,
|
||||||
originalUserFullName: iamData.originalUserFullName,
|
originalUserFullName: iamData.originalUserFullName,
|
||||||
originalUserCompany: iamData.originalUserCompany,
|
originalUserCompany: iamData.originalUserCompany,
|
||||||
fio: iamData.fio,
|
fio: iamData.fio,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
// ═══════════════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
version: '0.5.115',
|
version: '0.5.116',
|
||||||
|
|
||||||
// ── IAM ──────────────────────────────────────────────────────────────────
|
// ── IAM ──────────────────────────────────────────────────────────────────
|
||||||
iamUrl: process.env.V2_IAM_URL || 'https://auth-api.ngcloud.ru/api/v1/auth/user',
|
iamUrl: process.env.V2_IAM_URL || 'https://auth-api.ngcloud.ru/api/v1/auth/user',
|
||||||
|
|||||||
@@ -32,24 +32,24 @@ function enhanceImpersonation(req, res, next) {
|
|||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Тестовый режим: полная подмена данных ───────────────────────────
|
// ── Тестовый режим: нужны все три — ORIGINAL, TARGET, COMPANY ────────
|
||||||
if (TARGET_EMAIL && u.email === ORIGINAL_EMAIL) {
|
if (ORIGINAL_EMAIL && TARGET_EMAIL && MAIN_COMPANY && u.email === ORIGINAL_EMAIL) {
|
||||||
// Сохраняем isAdmin от оригинала
|
// Сохраняем isAdmin от оригинала
|
||||||
const wasAdmin = u.isAdmin || (u.allClientIds || []).includes('WZ01112') || u.clientId === 'WZ01112';
|
const wasAdmin = u.isAdmin || (u.allClientIds || []).includes('WZ01112') || u.clientId === 'WZ01112';
|
||||||
|
|
||||||
// Подменяем ВСЕ данные на таргета (как делает IAM)
|
// Подменяем ВСЕ данные на таргета (как делает IAM)
|
||||||
u.email = TARGET_EMAIL;
|
u.email = TARGET_EMAIL;
|
||||||
u.clientId = MAIN_COMPANY || u.clientId;
|
u.clientId = MAIN_COMPANY;
|
||||||
u.activeClientId = MAIN_COMPANY || u.clientId;
|
u.activeClientId = MAIN_COMPANY;
|
||||||
u.allClientIds = ALL_TARGET_CIDS;
|
u.allClientIds = ALL_TARGET_CIDS;
|
||||||
u.companyName = MAIN_COMPANY;
|
u.companyName = MAIN_COMPANY;
|
||||||
u.isAdmin = wasAdmin; // админство сохраняется
|
u.isAdmin = wasAdmin;
|
||||||
u.isImpersonated = true;
|
u.isImpersonated = true;
|
||||||
|
u.impersonatedCompanyId = MAIN_COMPANY;
|
||||||
u.originalUserEmail = ORIGINAL_EMAIL;
|
u.originalUserEmail = ORIGINAL_EMAIL;
|
||||||
u.originalUserFullName = u.fio ? (u.fio.fullName || '') : '';
|
u.originalUserFullName = u.fio ? (u.fio.fullName || '') : '';
|
||||||
u.fio = null; // фио таргета неизвестно
|
u.fio = null;
|
||||||
|
|
||||||
// Профили таргета (имитация)
|
|
||||||
u.profiles = ALL_TARGET_CIDS.map(cid => ({
|
u.profiles = ALL_TARGET_CIDS.map(cid => ({
|
||||||
client_id: cid,
|
client_id: cid,
|
||||||
company_name: cid,
|
company_name: cid,
|
||||||
|
|||||||
Reference in New Issue
Block a user