diff --git a/app/routers/auth.py b/app/routers/auth.py index 456e181..0b21f81 100644 --- a/app/routers/auth.py +++ b/app/routers/auth.py @@ -272,8 +272,8 @@ async def callback( @router.get("/logout") async def logout(): - """Clear session and redirect to dashboard.""" - response = RedirectResponse(url="/", status_code=302) + """Clear session and redirect to login page.""" + response = RedirectResponse(url="/auth/login?provider=local", status_code=302) response.delete_cookie("flowdeck_session") return response diff --git a/app/routers/dashboard.py b/app/routers/dashboard.py index 9170a8c..156e55c 100644 --- a/app/routers/dashboard.py +++ b/app/routers/dashboard.py @@ -4,7 +4,7 @@ from __future__ import annotations import logging from fastapi import APIRouter, Request, Query -from fastapi.responses import HTMLResponse +from fastapi.responses import HTMLResponse, RedirectResponse from app.services.gitea_client import gitea from app.auth.session import SessionManager @@ -14,6 +14,14 @@ logger = logging.getLogger(__name__) router = APIRouter(tags=["dashboard"]) +def _get_user_or_redirect(request: Request): + """Return decoded user or a RedirectResponse to login page.""" + user = SessionManager.decode_session(request.cookies.get("flowdeck_session", "")) + if not user: + return RedirectResponse("/auth/login?provider=local", status_code=302) + return user + + def _sidebar_data(request: Request, repos: list[dict]) -> dict: user = SessionManager.decode_session(request.cookies.get("flowdeck_session", "")) ws = user.get("login", "Bruno") if user else "Bruno"