v0.5.113: фикс имперсонации — IMPERSONATION_ORIGINAL вместо TARGET
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ipwhitelist",
|
"name": "ipwhitelist",
|
||||||
"version": "0.5.112",
|
"version": "0.5.113",
|
||||||
"description": "IP WhiteList microservice for cloud provider",
|
"description": "IP WhiteList microservice for cloud provider",
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
// ═══════════════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
version: '0.5.112',
|
version: '0.5.113',
|
||||||
|
|
||||||
// ── 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',
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
// ═══════════════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════════════
|
||||||
// V2 — Расширение имперсонации (отдельный модуль)
|
// V2 — Расширение имперсонации (отдельный модуль)
|
||||||
//
|
//
|
||||||
// ЭТО: middleware — добавляет дополнительные компании имперсонируемому юзеру.
|
// ЭТО: middleware — добавляет дополнительные компании админу.
|
||||||
// НЕ: жёсткая логика в resolveContext или user/index.js.
|
// НЕ: жёсткая логика в resolveContext или user/index.js.
|
||||||
//
|
//
|
||||||
// ENV:
|
// ENV:
|
||||||
// IMPERSONATION_TARGET — email юзера, которому добавляем компании
|
// IMPERSONATION_ORIGINAL — email админа, которому добавляем компании
|
||||||
// IMPERSONATION_EXTRA_COMPANIES — W-номера через запятую (WZ01112,WZ03709)
|
// IMPERSONATION_EXTRA_COMPANIES — W-номера через запятую (WZ01112,WZ03709)
|
||||||
// ═══════════════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
const TARGET_EMAIL = process.env.IMPERSONATION_TARGET || '';
|
const ORIGINAL_EMAIL = process.env.IMPERSONATION_ORIGINAL || '';
|
||||||
const EXTRA_COMPANIES = (process.env.IMPERSONATION_EXTRA_COMPANIES || '')
|
const EXTRA_COMPANIES = (process.env.IMPERSONATION_EXTRA_COMPANIES || '')
|
||||||
.split(',').map(s => s.trim()).filter(Boolean);
|
.split(',').map(s => s.trim()).filter(Boolean);
|
||||||
|
|
||||||
function enhanceImpersonation(req, res, next) {
|
function enhanceImpersonation(req, res, next) {
|
||||||
if (!TARGET_EMAIL) return next();
|
if (!ORIGINAL_EMAIL) return next();
|
||||||
const u = req.session && req.session.user;
|
const u = req.session && req.session.user;
|
||||||
if (!u || u.email !== TARGET_EMAIL) return next();
|
if (!u || u.email !== ORIGINAL_EMAIL) return next();
|
||||||
|
|
||||||
const current = u.allClientIds || [u.clientId || ''];
|
const current = u.allClientIds || [u.clientId || ''];
|
||||||
u.allClientIds = [...new Set([...current, ...EXTRA_COMPANIES])].filter(Boolean);
|
u.allClientIds = [...new Set([...current, ...EXTRA_COMPANIES])].filter(Boolean);
|
||||||
@@ -29,4 +29,4 @@ function enhanceImpersonation(req, res, next) {
|
|||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { enhanceImpersonation, TARGET_EMAIL, EXTRA_COMPANIES };
|
module.exports = { enhanceImpersonation };
|
||||||
|
|||||||
Reference in New Issue
Block a user