v2: WZ01112 admin toggle

This commit is contained in:
2026-06-15 12:05:09 +04:00
parent 3e418f9f4a
commit 7fa6b43562
4 changed files with 28 additions and 3 deletions
+10
View File
@@ -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'));
+6 -2
View File
@@ -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();
+2
View File
@@ -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('<h2>Ошибка</h2><pre>' + e.message + '</pre><a href="/v2/app">Назад</a>');