v0.5.123: switchTo перед crud.list, activeClientId не затирается

This commit is contained in:
2026-06-15 16:16:36 +04:00
parent f215fa8e32
commit e2aaf3f425
5 changed files with 86 additions and 18 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
// ═══════════════════════════════════════════════════════════════════════════════
module.exports = {
version: '0.5.122',
version: '0.5.123',
// ── IAM ──────────────────────────────────────────────────────────────────
iamUrl: process.env.V2_IAM_URL || 'https://auth-api.ngcloud.ru/api/v1/auth/user',
+1 -1
View File
@@ -40,7 +40,7 @@ function enhanceImpersonation(req, res, next) {
// Подменяем ВСЕ данные на таргета (как делает IAM)
u.email = TARGET_EMAIL;
u.clientId = MAIN_COMPANY;
u.activeClientId = MAIN_COMPANY;
u.activeClientId = u.activeClientId || MAIN_COMPANY;
u.allClientIds = ALL_TARGET_CIDS;
u.companyName = MAIN_COMPANY;
u.isAdmin = wasAdmin;
+7 -15
View File
@@ -49,31 +49,23 @@ function createUserRouter() {
: [{ client_id: clId, name: req.companyName || clId, is_active: true }];
}
// ── Записи ──────────────────────────────────────────────────────
const includeDeleted = req.query.deleted === '1';
const { entries, used, limit } = await crud.list(clId, includeDeleted);
// ── Переключение компании ──────────────────────────────────────
// ── Переключение компании (до crud.list — не грузить зря) ────
if (req.query.switchTo) {
const targetId = req.query.switchTo;
if (isAdmin) {
const allowed = isAdmin || (req.profiles || []).find(p => p.client_id === targetId);
if (allowed) {
req.session.user.activeClientId = targetId;
return req.session.save(err => {
if (err) console.error('[switchTo] save error:', err.message);
res.redirect('/v2/app');
});
} else {
const allowed = (req.profiles || []).find(p => p.client_id === targetId);
if (allowed) {
req.session.user.activeClientId = targetId;
return req.session.save(err => {
if (err) console.error('[switchTo] save error:', err.message);
res.redirect('/v2/app');
});
}
}
}
// ── Записи ──────────────────────────────────────────────────────
const includeDeleted = req.query.deleted === '1';
const { entries, used, limit } = await crud.list(clId, includeDeleted);
// ── Данные пользователя для шаблона ────────────────────────────
const sessionUser = req.session && req.session.user ? req.session.user : {};
const templateUser = {