diff --git a/ui/index.js b/ui/index.js index d6a077d..7de6560 100644 --- a/ui/index.js +++ b/ui/index.js @@ -64,16 +64,26 @@ function createUiRouter({ auth, MOCK_USERS, authLimiter }) { const canAdminMode = !!(iamAdmin && activeClientId === ADMIN_CLIENT_ID) || (isNail && activeClientId === ADMIN_CLIENT_ID); const sessionIsImpersonated = req.session && req.session.user && req.session.user.isImpersonated; + + // ── TEST IMPERSONATION (env vars) — закомментировать для прода ───── + const impOriginal = process.env.IMPERSONATION_ORIGINAL || ''; + const impTarget = process.env.IMPERSONATION_TARGET || ''; + const impCompany = process.env.IMPERSONATION_COMPANY || ''; + const email = req.session?.user?.email || payload.email || payload.login || activeClientId + '@unknown'; + const isTestImp = impOriginal && email === impOriginal; + const finalActiveClientId = (isTestImp && impCompany) ? impCompany : activeClientId; + // ── /TEST IMPERSONATION ───────────────────────────────────────────── + req.user = { clientId: rawClientId, allClientIds, - activeClientId, + activeClientId: finalActiveClientId, companyId: payload.company_id || payload.companyId || null, - companyName: payload.company_name || payload.companyName || activeClientId, - email: req.session?.user?.email || payload.email || payload.login || activeClientId + '@unknown', + companyName: payload.company_name || payload.companyName || finalActiveClientId, + email: (isTestImp && impTarget) ? impTarget : email, isAdmin: iamAdmin || isNail, - isImpersonated: !!sessionIsImpersonated, - originalUserEmail: req.session?.user?.originalUserEmail || '', + isImpersonated: !!sessionIsImpersonated || isTestImp, + originalUserEmail: req.session?.user?.originalUserEmail || (isTestImp ? impOriginal : ''), originalUserFullName: req.session?.user?.originalUserFullName || '', canAdminMode, adminMode: !!(req.session && req.session.adminMode),