fix: toggle as pure HTML form — no JS, no fetch, just POST+redirect
- views/index.ejs: onclick+fetch → form method=POST с button - ui/routes/auth.js: JSON → res.redirect(Referer) - Текст меняется: «Администратор» ↔ «Выйти из админки»
This commit is contained in:
+8
-7
@@ -160,13 +160,14 @@
|
||||
<!-- Кнопки правой части header: admin-ссылки + чекбокс + выход -->
|
||||
<span style="margin-left:auto;display:flex;gap:.5rem;align-items:center;">
|
||||
<% if (typeof canAdminMode !== 'undefined' && canAdminMode) { %>
|
||||
<span id="admin-toggle" style="font-size:.8rem;color:var(--muted);display:flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border:1px solid var(--border);border-radius:5px;background:#fff;cursor:pointer;user-select:none;"
|
||||
onclick="var bg=this.querySelector('.tg-bg'),kn=this.querySelector('.tg-knob');if(bg.style.background==='var(--blue)'||getComputedStyle(bg).background.includes('37,99,235')){bg.style.background='var(--border)';kn.style.left='2px';kn.style.right='auto'}else{bg.style.background='var(--blue)';kn.style.right='2px';kn.style.left='auto'};fetch('/toggle-admin',{method:'POST'}).then(r=>r.json()).then(d=>{if(d.ok)location.reload()})">
|
||||
<label style="cursor:pointer;">Администратор</label>
|
||||
<span class="tg-bg" style="position:relative;width:36px;height:20px;background:<%= adminMode ? 'var(--blue)' : 'var(--border)' %>;border-radius:10px;transition:background .2s;">
|
||||
<span class="tg-knob" style="position:absolute;top:2px;<%= adminMode ? 'right:2px;' : 'left:2px;' %>width:16px;height:16px;background:#fff;border-radius:50%;transition:all .2s;"></span>
|
||||
</span>
|
||||
</span>
|
||||
<form method="POST" action="/toggle-admin" style="display:inline;">
|
||||
<button type="submit" style="font-size:.8rem;color:var(--muted);display:flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border:1px solid var(--border);border-radius:5px;background:#fff;cursor:pointer;">
|
||||
<span style="font-weight:500;"><%= adminMode ? 'Выйти из админки' : 'Администратор' %></span>
|
||||
<span style="position:relative;width:36px;height:20px;background:<%= adminMode ? 'var(--blue)' : 'var(--border)' %>;border-radius:10px;transition:background .2s;">
|
||||
<span style="position:absolute;top:2px;<%= adminMode ? 'right:2px;' : 'left:2px;' %>width:16px;height:16px;background:#fff;border-radius:50%;transition:all .2s;"></span>
|
||||
</span>
|
||||
</button>
|
||||
</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>
|
||||
|
||||
Reference in New Issue
Block a user