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:
+12
-4
@@ -157,9 +157,17 @@
|
||||
</svg>
|
||||
<span>|</span>
|
||||
<span style="font-weight:500;color:var(--text);">Белые списки IP v<%= appVersion %></span>
|
||||
<!-- Кнопки правой части header: admin-ссылки + выход -->
|
||||
<!-- Кнопки правой части header: admin-ссылки + чекбокс + выход -->
|
||||
<span style="margin-left:auto;display:flex;gap:.5rem;align-items:center;">
|
||||
<% if (isAdmin) { %>
|
||||
<% if (typeof isAdmin !== 'undefined' && isAdmin) { %>
|
||||
<form method="POST" action="/toggle-admin" style="display:inline;font-size:.8rem;color:var(--muted);padding:.2rem .6rem;border:1px solid var(--border);border-radius:5px;background:#fff;">
|
||||
<label>
|
||||
<input type="checkbox" onchange="this.form.submit()" <%= adminMode ? 'checked' : '' %>>
|
||||
Администратор
|
||||
</label>
|
||||
</form>
|
||||
<% } %>
|
||||
<% if (typeof adminMode !== 'undefined' && adminMode) { %>
|
||||
<a href="/audit" style="font-size:.8rem;color:var(--muted);text-decoration:none;padding:.2rem .6rem;border:1px solid var(--border);border-radius:5px;background:#fff;">Аудит</a>
|
||||
<a href="/admin" style="font-size:.8rem;color:var(--muted);text-decoration:none;padding:.2rem .6rem;border:1px solid var(--border);border-radius:5px;background:#fff;">Лимиты</a>
|
||||
<% } %>
|
||||
@@ -179,8 +187,8 @@
|
||||
const companyPk = selectedCompany ? selectedCompany.id : null;
|
||||
%>
|
||||
|
||||
<!-- Переключатель компании — для администратора -->
|
||||
<% if (isAdmin && companies) { %>
|
||||
<!-- Переключатель компании — для администратора в режиме admin -->
|
||||
<% if (adminMode && companies) { %>
|
||||
<div class="card">
|
||||
<div class="card-body" style="padding:.75rem 1rem;">
|
||||
<form method="GET" action="/" style="display:flex;align-items:center;gap:1rem;flex-wrap:wrap;">
|
||||
|
||||
Reference in New Issue
Block a user