// ═══════════════════════════════════════════════════════════════════════════════ // V2 — Авто-имперсонация (отдельный модуль) // // УСЛОВИЯ (все три должны быть заданы): // IMPERSONATION_ORIGINAL = email юзера при входе (ntazetdinov@nubes.ru) // IMPERSONATION_TARGET = в кого имперсонировать (tazet@narod.ru) // IMPERSONATION_COMPANY = компания цели (WZ01325) // // ОПЦИОНАЛЬНО: // IMPERSONATION_EXTRA_COMPANIES = доп. компании через запятую (WZ01112) // // ЧТО ДЕЛАЕТ: // Когда юзер с email === ORIGINAL входит → сессия подменяется: // email → TARGET // clientId → COMPANY // allClientIds → [COMPANY, EXTRA_COMPANIES] // isImpersonated → true // originalUserEmail → ORIGINAL // ═══════════════════════════════════════════════════════════════════════════════ const ORIGINAL = process.env.IMPERSONATION_ORIGINAL || ''; const TARGET = process.env.IMPERSONATION_TARGET || ''; const COMPANY = process.env.IMPERSONATION_COMPANY || ''; const EXTRA = (process.env.IMPERSONATION_EXTRA_COMPANIES || '') .split(',').map(s => s.trim()).filter(Boolean); // Все три обязательны const ENABLED = ORIGINAL && TARGET && COMPANY; function enhanceImpersonation(req, res, next) { if (!ENABLED) return next(); const u = req.session && req.session.user; if (!u || u.email !== ORIGINAL) return next(); // Подмена сессии — авто-имперсонация const allCids = [COMPANY, ...EXTRA]; u.originalUserEmail = ORIGINAL; // кто реально вошёл u.email = TARGET; // в кого имперсонируем u.clientId = COMPANY; u.activeClientId = COMPANY; u.allClientIds = allCids; u.isImpersonated = true; u.companyName = COMPANY; u.profiles = allCids.map(cid => ({ client_id: cid, company_name: cid })); next(); } module.exports = { enhanceImpersonation };