feat(status): restrict status page to admin-only and move to admin menu

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-08 15:10:46 +00:00
parent 17e77fa65a
commit feea051c4f
3 changed files with 141 additions and 19 deletions
+16 -2
View File
@@ -6,7 +6,8 @@ import logging
import os
from datetime import datetime
from fastapi import Request
from fastapi import Request, status
from fastapi.responses import RedirectResponse
from app.utils.config_validator import get_provider_status
from app.views.base import APIRouter, require_login, settings, templates
@@ -15,12 +16,25 @@ logger = logging.getLogger(__name__)
router = APIRouter()
def _require_admin(request: Request):
"""Return the session user if they are an admin, else return None."""
user = request.session.get("user")
if not user or not user.get("is_admin"):
user_email = user.get("email", "anonymous") if user else "anonymous"
logger.warning(f"Non-admin user {user_email} attempted to access /status")
return None
return user
@router.get("/status")
@require_login
async def status_dashboard(request: Request):
"""
Status dashboard showing all configured integration targets
Status dashboard showing all configured integration targets (admin only).
"""
user = _require_admin(request)
if user is None:
return RedirectResponse(url="/", status_code=status.HTTP_302_FOUND)
# Get provider status
providers = get_provider_status()