agrega botón Admin en navbar con detección de sesión
- Nuevo endpoint GET /admin/status devuelve si el usuario está logueado como admin - Navbar muestra botón "Admin" que lleva a /admin/login si no hay sesión, o "⚙ Admin" → /admin/playlists si ya está autenticado Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,11 @@ def _require_admin(request: Request):
|
|||||||
|
|
||||||
# ── Login ──────────────────────────────────────────────────────────────────────
|
# ── Login ──────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
@router.get("/status")
|
||||||
|
def admin_status(request: Request):
|
||||||
|
return {"logged_in": bool(request.session.get("admin_logged_in"))}
|
||||||
|
|
||||||
|
|
||||||
@router.get("/login", response_class=HTMLResponse)
|
@router.get("/login", response_class=HTMLResponse)
|
||||||
def login_page(request: Request):
|
def login_page(request: Request):
|
||||||
return templates.TemplateResponse("admin/login.html", {"request": request, "error": None})
|
return templates.TemplateResponse("admin/login.html", {"request": request, "error": None})
|
||||||
|
|||||||
+10
-2
@@ -11,11 +11,19 @@
|
|||||||
<div class="brand">🎵 Cantina</div>
|
<div class="brand">🎵 Cantina</div>
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<a href="/">Reproductor</a>
|
<a href="/">Reproductor</a>
|
||||||
<a href="/admin/playlists">Playlists</a>
|
|
||||||
<a href="/admin/voting">Votación</a>
|
|
||||||
<a href="/stats/">Estadísticas</a>
|
<a href="/stats/">Estadísticas</a>
|
||||||
|
<a id="admin-nav-btn" href="/admin/login" class="btn-sm">Admin</a>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
<script>
|
||||||
|
fetch('/admin/status').then(r => r.json()).then(data => {
|
||||||
|
const btn = document.getElementById('admin-nav-btn');
|
||||||
|
if (data.logged_in) {
|
||||||
|
btn.textContent = '⚙ Admin';
|
||||||
|
btn.href = '/admin/playlists';
|
||||||
|
}
|
||||||
|
}).catch(() => {});
|
||||||
|
</script>
|
||||||
<main>
|
<main>
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
Reference in New Issue
Block a user