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:
+15
-5
@@ -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),
|
||||||
|
|||||||
Reference in New Issue
Block a user