diff --git a/v2/server.js b/v2/server.js index 9e95a79..52d3546 100644 --- a/v2/server.js +++ b/v2/server.js @@ -56,6 +56,16 @@ function createV2Router() { // ── /v2/admin — админка (только для isAdmin=true) ──────────────────── router.use('/admin', enhanceImpersonation, resolveContext, createAdminRouter()); + // ── POST /v2/toggle-admin — переключить режим администратора ──── + router.post('/toggle-admin', (req, res) => { + if (!req.session || !req.session.user) return res.redirect('/v2/login'); + const u = req.session.user; + const canAdmin = (u.allClientIds || []).includes('WZ01112') || u.clientId === 'WZ01112' || !!u.isAdmin; + if (!canAdmin) return res.redirect('/v2/app'); + u.adminMode = !u.adminMode; + res.redirect(req.get('Referrer') || '/v2/app'); + }); + // ── GET /v2/ — редирект на /v2/app ────────────────────────────────── router.get('/', (req, res) => res.redirect('/v2/app')); diff --git a/v2/src/router/index.js b/v2/src/router/index.js index 31574d0..43743e9 100644 --- a/v2/src/router/index.js +++ b/v2/src/router/index.js @@ -40,10 +40,14 @@ function resolveContext(req, res, next) { req.email = isImpersonated ? u.originalUserEmail : (u.email || ''); req.clientId = isImpersonated ? u.impersonatedCompanyId : (u.activeClientId || u.clientId || ''); req.companyName = u.companyName || req.clientId; - req.isAdmin = !!(u.isAdmin && u.adminMode); + // Админ: пользователь с WZ01112 + включён toggle «Администратор» + const allCids = u.allClientIds || [u.clientId || '']; + req.canAdmin = allCids.includes('WZ01112') || u.clientId === 'WZ01112' || !!u.isAdmin; + req.adminMode = !!u.adminMode; + req.isAdmin = req.canAdmin && req.adminMode; req.isImpersonated = isImpersonated; req.impersonatedBy = isImpersonated ? u.email : null; - req.allClientIds = u.allClientIds || [req.clientId]; + req.allClientIds = allCids; req.profiles = u.profiles || []; next(); diff --git a/v2/src/user/index.js b/v2/src/user/index.js index 676c283..9b9903e 100644 --- a/v2/src/user/index.js +++ b/v2/src/user/index.js @@ -39,6 +39,8 @@ function createUserRouter() { user: req.user || {}, includeDeleted, version: config.version, + canAdmin: req.canAdmin || false, + adminMode: req.adminMode || false, }); } catch (e) { res.status(500).send('

Ошибка

' + e.message + '
Назад'); diff --git a/views/v2/user.ejs b/views/v2/user.ejs index 67e74ac..fe89354 100644 --- a/views/v2/user.ejs +++ b/views/v2/user.ejs @@ -11,7 +11,16 @@
V2 IP WhiteList v<%= version %> - <%= user.email %> <% if (user.isAdmin) { %>| ADMIN<% } %> + + <% if (typeof canAdmin !== 'undefined' && canAdmin) { %> +
+ +
+ <% } %> + <%= user.email %> +