feat: test role switcher in sidebar (admin only) — amber banner when impersonating
This commit is contained in:
parent
d19ce5e8fa
commit
e89b4e5a5c
|
|
@ -18,6 +18,7 @@
|
||||||
{{block "header-left" .}}
|
{{block "header-left" .}}
|
||||||
<a href="/app/projects" class="text-2xl font-bold text-white tracking-tight"><span class="text-[#c9a84c]">Deal</span>space</a>
|
<a href="/app/projects" class="text-2xl font-bold text-white tracking-tight"><span class="text-[#c9a84c]">Deal</span>space</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
<div id="testRoleBanner" style="display:none;position:fixed;bottom:0;left:0;right:0;background:#b45309;color:#fff;text-align:center;font-size:12px;padding:3px 0;z-index:999;pointer-events:none"></div>
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
{{block "header-right-extra" .}}{{end}}
|
{{block "header-right-extra" .}}{{end}}
|
||||||
<span id="userName" class="text-sm text-[#94a3b8]"></span>
|
<span id="userName" class="text-sm text-[#94a3b8]"></span>
|
||||||
|
|
@ -82,6 +83,22 @@
|
||||||
function escHtml(s) { if (!s) return ''; const d = document.createElement('div'); d.textContent = s; return d.innerHTML; }
|
function escHtml(s) { if (!s) return ''; const d = document.createElement('div'); d.textContent = s; return d.innerHTML; }
|
||||||
|
|
||||||
// Theme switcher
|
// Theme switcher
|
||||||
|
function setTestRole(role) {
|
||||||
|
localStorage.setItem('ds_test_role', role);
|
||||||
|
document.getElementById('testRoleSelect').value = role;
|
||||||
|
// Show banner when impersonating
|
||||||
|
const banner = document.getElementById('testRoleBanner');
|
||||||
|
if (banner) { banner.textContent = role ? '⚠ Viewing as: ' + role : ''; banner.style.display = role ? 'block' : 'none'; }
|
||||||
|
}
|
||||||
|
// Restore test role select on load
|
||||||
|
(function(){
|
||||||
|
const r = localStorage.getItem('ds_test_role') || '';
|
||||||
|
const sel = document.getElementById('testRoleSelect');
|
||||||
|
if (sel) sel.value = r;
|
||||||
|
const banner = document.getElementById('testRoleBanner');
|
||||||
|
if (banner && r) { banner.textContent = '⚠ Viewing as: ' + r; banner.style.display = 'block'; }
|
||||||
|
})();
|
||||||
|
|
||||||
function setTheme(t){document.documentElement.setAttribute('data-theme',t);localStorage.setItem('ds_theme',t);document.querySelectorAll('#ds-theme-bar button').forEach(b=>b.classList.toggle('active',b.getAttribute('data-t')===t))}
|
function setTheme(t){document.documentElement.setAttribute('data-theme',t);localStorage.setItem('ds_theme',t);document.querySelectorAll('#ds-theme-bar button').forEach(b=>b.classList.toggle('active',b.getAttribute('data-t')===t))}
|
||||||
setTheme(localStorage.getItem('ds_theme')||'midnight');
|
setTheme(localStorage.getItem('ds_theme')||'midnight');
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue