v0.5.125: switchTo без редиректа, дебаг на странице

This commit is contained in:
2026-06-15 16:37:29 +04:00
parent 3493d45065
commit ee0cf68fe3
2 changed files with 14 additions and 19 deletions
+6 -19
View File
@@ -50,29 +50,15 @@ function createUserRouter() {
} }
// ── Переключение компании (до crud.list — не грузить зря) ──── // ── Переключение компании (до crud.list — не грузить зря) ────
let switchDebug = null;
if (req.query.switchTo) { if (req.query.switchTo) {
const targetId = req.query.switchTo; const targetId = req.query.switchTo;
const allowed = isAdmin || (req.profiles || []).find(p => p.client_id === targetId); const allowed = isAdmin || (req.profiles || []).find(p => p.client_id === targetId);
if (allowed) { if (allowed) {
console.log('[v2:switchTo] before save', { const oldId = req.session.user.activeClientId;
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; req.session.user.activeClientId = targetId;
return req.session.save(err => { // clId теперь новый — рендерим сразу, без редиректа
if (err) { switchDebug = { from: oldId, to: targetId, sessionID: req.sessionID };
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');
});
} }
} }
@@ -96,11 +82,12 @@ function createUserRouter() {
res.render('v2/user', { res.render('v2/user', {
entries, limit, used, entries, limit, used,
companies, companies,
activeClientId: clId, activeClientId: switchDebug ? switchDebug.to : clId,
debugClientId: clId, debugClientId: clId,
sessionId: req.sessionID || '', sessionId: req.sessionID || '',
sessionActiveClientId: req.session && req.session.user ? (req.session.user.activeClientId || '') : '', sessionActiveClientId: req.session && req.session.user ? (req.session.user.activeClientId || '') : '',
sessionClientId: req.session && req.session.user ? (req.session.user.clientId || '') : '', sessionClientId: req.session && req.session.user ? (req.session.user.clientId || '') : '',
switchDebug,
user: templateUser, user: templateUser,
includeDeleted, includeDeleted,
version: config.version, version: config.version,
+8
View File
@@ -139,6 +139,14 @@
</div> </div>
</div> </div>
<% if (typeof switchDebug !== 'undefined' && switchDebug) { %>
<div style="background:#fff3cd;border:2px solid #d97706;color:#92400e;padding:.5rem 1rem;border-radius:8px;margin-bottom:.5rem;font-size:.85rem;">
<strong>DEBUG SWITCH:</strong> <%= switchDebug.from %> → <%= switchDebug.to %>
| sessionID: <%= switchDebug.sessionID %>
| activeClientId: <%= activeClientId %>
</div>
<% } %>
<% if (user.isImpersonated) { %> <% if (user.isImpersonated) { %>
<div class="alert alert-warn"> <div class="alert alert-warn">
⚠️ Режим имперсонации — данные сохраняются от имени <strong><%= activeClientId %></strong> ⚠️ Режим имперсонации — данные сохраняются от имени <strong><%= activeClientId %></strong>