v0.5.113: фикс имперсонации — IMPERSONATION_ORIGINAL вместо TARGET

This commit is contained in:
2026-06-15 14:42:41 +04:00
parent f5ee0a36de
commit 394c778f46
3 changed files with 9 additions and 9 deletions
+7 -7
View File
@@ -1,22 +1,22 @@
// ═══════════════════════════════════════════════════════════════════════════════
// V2 — Расширение имперсонации (отдельный модуль)
//
// ЭТО: middleware — добавляет дополнительные компании имперсонируемому юзеру.
// ЭТО: middleware — добавляет дополнительные компании админу.
// НЕ: жёсткая логика в resolveContext или user/index.js.
//
// ENV:
// IMPERSONATION_TARGET — email юзера, которому добавляем компании
// IMPERSONATION_EXTRA_COMPANIES — W-номера через запятую (WZ01112,WZ03709)
// IMPERSONATION_ORIGINAL — email админа, которому добавляем компании
// 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 || '')
.split(',').map(s => s.trim()).filter(Boolean);
function enhanceImpersonation(req, res, next) {
if (!TARGET_EMAIL) return next();
if (!ORIGINAL_EMAIL) return next();
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 || ''];
u.allClientIds = [...new Set([...current, ...EXTRA_COMPANIES])].filter(Boolean);
@@ -29,4 +29,4 @@ function enhanceImpersonation(req, res, next) {
next();
}
module.exports = { enhanceImpersonation, TARGET_EMAIL, EXTRA_COMPANIES };
module.exports = { enhanceImpersonation };