feat: test impersonation via IMPERSONATION_ORIGINAL/TARGET/COMPANY env vars

- ui/index.js: resolveUser checks env vars, only for matching email
- Закомментировать блок 'TEST IMPERSONATION' для прода
This commit is contained in:
2026-06-11 19:25:11 +04:00
parent e0cbf4bf35
commit 351cb6afe6
+15 -5
View File
@@ -64,16 +64,26 @@ function createUiRouter({ auth, MOCK_USERS, authLimiter }) {
const canAdminMode = !!(iamAdmin && activeClientId === ADMIN_CLIENT_ID) const canAdminMode = !!(iamAdmin && activeClientId === ADMIN_CLIENT_ID)
|| (isNail && activeClientId === ADMIN_CLIENT_ID); || (isNail && activeClientId === ADMIN_CLIENT_ID);
const sessionIsImpersonated = req.session && req.session.user && req.session.user.isImpersonated; 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 = { req.user = {
clientId: rawClientId, clientId: rawClientId,
allClientIds, allClientIds,
activeClientId, activeClientId: finalActiveClientId,
companyId: payload.company_id || payload.companyId || null, companyId: payload.company_id || payload.companyId || null,
companyName: payload.company_name || payload.companyName || activeClientId, companyName: payload.company_name || payload.companyName || finalActiveClientId,
email: req.session?.user?.email || payload.email || payload.login || activeClientId + '@unknown', email: (isTestImp && impTarget) ? impTarget : email,
isAdmin: iamAdmin || isNail, isAdmin: iamAdmin || isNail,
isImpersonated: !!sessionIsImpersonated, isImpersonated: !!sessionIsImpersonated || isTestImp,
originalUserEmail: req.session?.user?.originalUserEmail || '', originalUserEmail: req.session?.user?.originalUserEmail || (isTestImp ? impOriginal : ''),
originalUserFullName: req.session?.user?.originalUserFullName || '', originalUserFullName: req.session?.user?.originalUserFullName || '',
canAdminMode, canAdminMode,
adminMode: !!(req.session && req.session.adminMode), adminMode: !!(req.session && req.session.adminMode),