fix: sidebar vide sur /workspaces — pas de contexte workspace actif
_sidebar_data() prend un nouveau parametre include_workspace (default True). La page /workspaces passe include_workspace=False pour que la sidebar n'affiche ni le nom du workspace actif, ni ses pages/folders.
This commit is contained in:
@@ -31,7 +31,7 @@ def _get_user_or_redirect(request: Request):
|
|||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
def _sidebar_data(request: Request, repos: list[dict]) -> dict:
|
def _sidebar_data(request: Request, repos: list[dict], include_workspace: bool = True) -> dict:
|
||||||
user = SessionManager.decode_session(request.cookies.get("flowdeck_session", ""))
|
user = SessionManager.decode_session(request.cookies.get("flowdeck_session", ""))
|
||||||
ws = user.get("login", "Bruno") if user else "Bruno"
|
ws = user.get("login", "Bruno") if user else "Bruno"
|
||||||
initial = ws[0].upper() if ws else "B"
|
initial = ws[0].upper() if ws else "B"
|
||||||
@@ -64,7 +64,8 @@ def _sidebar_data(request: Request, repos: list[dict]) -> dict:
|
|||||||
"children": [],
|
"children": [],
|
||||||
})
|
})
|
||||||
|
|
||||||
# Active workspace from cookie
|
# Active workspace from cookie (skip on pages like /workspaces where no
|
||||||
|
# workspace context should be shown)
|
||||||
from app.routers.board import _load_workspace_pages
|
from app.routers.board import _load_workspace_pages
|
||||||
ws_cookie = request.cookies.get("flowdeck_workspace", "")
|
ws_cookie = request.cookies.get("flowdeck_workspace", "")
|
||||||
active_ws_name = "Workspace"
|
active_ws_name = "Workspace"
|
||||||
@@ -73,7 +74,7 @@ def _sidebar_data(request: Request, repos: list[dict]) -> dict:
|
|||||||
gitea_owner = ""
|
gitea_owner = ""
|
||||||
gitea_repo = ""
|
gitea_repo = ""
|
||||||
|
|
||||||
if ws_cookie and ws_cookie.startswith("gitea:"):
|
if include_workspace and ws_cookie and ws_cookie.startswith("gitea:"):
|
||||||
# Gitea workspace: set owner/repo for client-side tree loading
|
# Gitea workspace: set owner/repo for client-side tree loading
|
||||||
parts = ws_cookie.split(":", 2)
|
parts = ws_cookie.split(":", 2)
|
||||||
if len(parts) >= 3:
|
if len(parts) >= 3:
|
||||||
@@ -82,7 +83,7 @@ def _sidebar_data(request: Request, repos: list[dict]) -> dict:
|
|||||||
active_ws_name = f"{gitea_owner}/{gitea_repo}"
|
active_ws_name = f"{gitea_owner}/{gitea_repo}"
|
||||||
gitea_workspace = True
|
gitea_workspace = True
|
||||||
workspace_pages = [] # loaded client-side
|
workspace_pages = [] # loaded client-side
|
||||||
elif ws_cookie and user:
|
elif include_workspace and ws_cookie and user:
|
||||||
try:
|
try:
|
||||||
wsi = int(ws_cookie)
|
wsi = int(ws_cookie)
|
||||||
with get_conn() as conn:
|
with get_conn() as conn:
|
||||||
@@ -1105,7 +1106,7 @@ async def workspaces_page(request: Request):
|
|||||||
"""Workspaces list page."""
|
"""Workspaces list page."""
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
env = Environment(loader=FileSystemLoader("app/templates"))
|
env = Environment(loader=FileSystemLoader("app/templates"))
|
||||||
sidebar = _sidebar_data(request, [])
|
sidebar = _sidebar_data(request, [], include_workspace=False)
|
||||||
user = SessionManager.decode_session(request.cookies.get("flowdeck_session", ""))
|
user = SessionManager.decode_session(request.cookies.get("flowdeck_session", ""))
|
||||||
if not user:
|
if not user:
|
||||||
return RedirectResponse("/auth/login?provider=local", status_code=302)
|
return RedirectResponse("/auth/login?provider=local", status_code=302)
|
||||||
|
|||||||
Reference in New Issue
Block a user