feat: adminMode — чек-бокс переключения админского интерфейса

Шаг 1: /toggle-admin роут в ui/routes/auth.js
  - переключает req.session.adminMode
  - canAdmin = isAdmin || clientId === WZ01112 (временно)

Шаг 2: resolveUser в ui/index.js
  - req.user.adminMode из req.session.adminMode
  - isAdmin = IAM.isAdmin || clientId === WZ01112 (временно)

Шаг 3: adminMode вместо isAdmin в интерфейсе
  - ui/routes/entries.js: adminMode решает админский view
  - ui/routes/admin.js: requireAdmin проверяет adminMode

Шаг 4: views/index.ejs
  - чек-бокс «Администратор» (виден только если isAdmin)
  - ссылки Аудит/Лимиты видны только при adminMode
  - селектор компаний — при adminMode
This commit is contained in:
2026-06-11 11:08:03 +04:00
parent 8c1787df19
commit 4f1f64dd6c
6 changed files with 35 additions and 9 deletions
+14
View File
@@ -166,6 +166,20 @@ function createRouter({ auth, MOCK_USERS, authLimiter }) {
res.redirect(returnTo || '/');
});
// ── Переключатель режима администратора ──────────────────────────────
// 🔮 isAdmin будет из IAM, временно: isAdmin || clientId === WZ01112
router.post('/toggle-admin', (req, res) => {
const canAdmin = req.session.user && (
req.session.user.isAdmin ||
req.session.user.clientId === (process.env.ADMIN_CLIENT_ID || 'WZ01112')
);
if (!canAdmin) return res.status(403).send('Forbidden');
req.session.adminMode = !req.session.adminMode;
// Редирект туда же откуда пришли
res.redirect(req.get('Referer') || '/');
});
// GET /logout
router.get('/logout', (req, res) => {
req.session.destroy(() => res.redirect('/login'));