From c5398757ca45ef24f188cff115d3ada542856120 Mon Sep 17 00:00:00 2001 From: bruno Date: Sat, 11 Jul 2026 00:30:59 -0400 Subject: [PATCH] fix: hamburger menu sur toutes les pages + cookies path="/" Chrome fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - local_workspace.html: supprimé Alpine.data dupliqué + ajout hamburger - workspaces.html, workspace.html, settings.html, page_editor.html: +hamburger - auth.py: +path="/" sur tous les set_cookie de session (Chrome compat) - csrf.py: +path="/" sur cookie CSRF Root cause des bugs: 1. Chrome: cookie sans path="/" → non envoyé sur certaines routes 2. Firefox: les templates écrasaient le block topbar → pas de hamburger → sidebar inaccessible sur mobile (overlay + slide-in ne fonctionnaient pas) --- app/middleware/csrf.py | 1 + app/routers/auth.py | 8 +-- app/templates/local_workspace.html | 108 +++++------------------------ app/templates/page_editor.html | 9 ++- app/templates/settings.html | 3 + app/templates/workspace.html | 3 + app/templates/workspaces.html | 3 + 7 files changed, 41 insertions(+), 94 deletions(-) diff --git a/app/middleware/csrf.py b/app/middleware/csrf.py index 0e43b28..17617ec 100644 --- a/app/middleware/csrf.py +++ b/app/middleware/csrf.py @@ -33,6 +33,7 @@ class CSRFMiddleware(BaseHTTPMiddleware): httponly=False, # Must be readable by JS samesite="lax", max_age=86400, + path="/", ) return response diff --git a/app/routers/auth.py b/app/routers/auth.py index 791c136..805d2a6 100644 --- a/app/routers/auth.py +++ b/app/routers/auth.py @@ -100,7 +100,7 @@ async def login(request: Request, provider: str = Query("gitea")): user_data = dict(user) session = SessionManager.create_session(user_data) response = RedirectResponse(url="/workspaces", status_code=302) - response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax") + response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax", path="/") return response state = secrets.token_hex(32) @@ -146,7 +146,7 @@ async def register(request: Request): session = SessionManager.create_session(user_data) from fastapi.responses import JSONResponse response = JSONResponse({"status": "ok", "user": {"login": email, "name": name}}) - response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax") + response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax", path="/") return response @@ -200,7 +200,7 @@ async def local_login(request: Request): conn.commit() session = SessionManager.create_session(ud) response = JSONResponse({"status": "ok", "user": {"login": ud["login"], "name": ud["full_name"]}}) - response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax") + response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax", path="/") return response @@ -266,7 +266,7 @@ async def callback( # Create session session = SessionManager.create_session(user_data) response = RedirectResponse(url="/workspaces", status_code=302) - response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax") + response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax", path="/") return response diff --git a/app/templates/local_workspace.html b/app/templates/local_workspace.html index 9218c44..26cc407 100644 --- a/app/templates/local_workspace.html +++ b/app/templates/local_workspace.html @@ -4,18 +4,24 @@ {% block topbar %}
+
Workspace {{ workspace_name }}
-
+
+ 🏠 +
{% endblock %} {% block content %} - -
@@ -214,6 +147,17 @@ document.addEventListener('alpine:init', function() {
{% endblock %} diff --git a/app/templates/page_editor.html b/app/templates/page_editor.html index 7724644..7456701 100644 --- a/app/templates/page_editor.html +++ b/app/templates/page_editor.html @@ -1,6 +1,13 @@ {% extends "base.html" %} {% block page_icon %}📄{% endblock %} {% block page_title %}{{ page.title }}{% endblock %} {% block topbar %} - +
+ +
+ {{ page.title }} +
+
{% endblock %} {% block content %}
diff --git a/app/templates/settings.html b/app/templates/settings.html index e7caff4..0354eb1 100644 --- a/app/templates/settings.html +++ b/app/templates/settings.html @@ -4,6 +4,9 @@ {% block topbar %}
+
Settings diff --git a/app/templates/workspace.html b/app/templates/workspace.html index 46111d8..42b36e1 100644 --- a/app/templates/workspace.html +++ b/app/templates/workspace.html @@ -4,6 +4,9 @@ {% block topbar %}
+
Workspace Projects diff --git a/app/templates/workspaces.html b/app/templates/workspaces.html index f653f60..70d9c65 100644 --- a/app/templates/workspaces.html +++ b/app/templates/workspaces.html @@ -4,6 +4,9 @@ {% block topbar %}
+
Home Workspaces