diff --git a/package.json b/package.json index e8eae87..47bbd35 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.5.123", + "version": "0.5.125", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/v2/src/config/index.js b/v2/src/config/index.js index d553ccc..e6b4312 100644 --- a/v2/src/config/index.js +++ b/v2/src/config/index.js @@ -9,7 +9,7 @@ // ═══════════════════════════════════════════════════════════════════════════════ module.exports = { - version: '0.5.123', + version: '0.5.125', // ── IAM ────────────────────────────────────────────────────────────────── iamUrl: process.env.V2_IAM_URL || 'https://auth-api.ngcloud.ru/api/v1/auth/user', diff --git a/v2/src/impersonation/index.js b/v2/src/impersonation/index.js index 02cb3d0..3d8cda6 100644 --- a/v2/src/impersonation/index.js +++ b/v2/src/impersonation/index.js @@ -26,9 +26,24 @@ function enhanceImpersonation(req, res, next) { const u = req.session && req.session.user; if (!u) return next(); + console.log('[v2:impersonation] enter', { + sessionID: req.sessionID, + email: u.email, + activeClientId: u.activeClientId, + clientId: u.clientId, + isImpersonated: u.isImpersonated, + originalUserEmail: u.originalUserEmail, + path: req.originalUrl, + }); + // ── IAM-имперсонация (уже есть в сессии) — просто добавляем компании ── if (u.isImpersonated && u.originalUserEmail === ORIGINAL_EMAIL) { addExtraCompanies(u); + console.log('[v2:impersonation] addExtraCompanies', { + sessionID: req.sessionID, + activeClientId: u.activeClientId, + allClientIds: u.allClientIds, + }); return next(); } @@ -56,6 +71,14 @@ function enhanceImpersonation(req, res, next) { is_active_profile: cid === MAIN_COMPANY, })); + console.log('[v2:impersonation] applied test impersonation', { + sessionID: req.sessionID, + activeClientId: u.activeClientId, + clientId: u.clientId, + originalUserEmail: u.originalUserEmail, + allClientIds: u.allClientIds, + }); + return next(); } diff --git a/v2/src/router/index.js b/v2/src/router/index.js index 0864fd6..0a863d6 100644 --- a/v2/src/router/index.js +++ b/v2/src/router/index.js @@ -29,6 +29,15 @@ function resolveContext(req, res, next) { const u = req.session && req.session.user; + console.log('[v2:resolveContext] enter', { + sessionID: req.sessionID, + hasSession: !!req.session, + hasUser: !!u, + sessionActiveClientId: u ? u.activeClientId : null, + sessionClientId: u ? u.clientId : null, + url: req.originalUrl, + }); + // Нет сессии — нет доступа if (!u) return res.redirect('/v2/login'); @@ -53,6 +62,14 @@ function resolveContext(req, res, next) { req.allClientIds = allCids; req.profiles = u.profiles || []; + console.log('[v2:resolveContext] exit', { + sessionID: req.sessionID, + reqClientId: req.clientId, + reqEmail: req.email, + canAdmin: req.canAdmin, + isImpersonated: req.isImpersonated, + }); + next(); } diff --git a/v2/src/user/index.js b/v2/src/user/index.js index 420c935..e7f2fec 100644 --- a/v2/src/user/index.js +++ b/v2/src/user/index.js @@ -54,9 +54,23 @@ function createUserRouter() { const targetId = req.query.switchTo; const allowed = isAdmin || (req.profiles || []).find(p => p.client_id === targetId); if (allowed) { + console.log('[v2:switchTo] before save', { + sessionID: req.sessionID, + oldActiveClientId: req.session && req.session.user ? req.session.user.activeClientId : null, + oldClientId: req.session && req.session.user ? req.session.user.clientId : null, + targetId, + email: req.email, + }); req.session.user.activeClientId = targetId; return req.session.save(err => { - if (err) console.error('[switchTo] save error:', err.message); + if (err) { + console.error('[v2:switchTo] save error:', err.message); + } else { + console.log('[v2:switchTo] after save', { + sessionID: req.sessionID, + savedActiveClientId: req.session && req.session.user ? req.session.user.activeClientId : null, + }); + } res.redirect('/v2/app'); }); } @@ -83,6 +97,10 @@ function createUserRouter() { entries, limit, used, companies, activeClientId: clId, + debugClientId: clId, + sessionId: req.sessionID || '', + sessionActiveClientId: req.session && req.session.user ? (req.session.user.activeClientId || '') : '', + sessionClientId: req.session && req.session.user ? (req.session.user.clientId || '') : '', user: templateUser, includeDeleted, version: config.version, diff --git a/views/v2/user.ejs b/views/v2/user.ejs index f3f59ae..01fde4d 100644 --- a/views/v2/user.ejs +++ b/views/v2/user.ejs @@ -129,6 +129,16 @@ if(p.get('error')){document.write('