diff --git a/app/routers/auth.py b/app/routers/auth.py index 0b21f81..791c136 100644 --- a/app/routers/auth.py +++ b/app/routers/auth.py @@ -99,7 +99,7 @@ async def login(request: Request, provider: str = Query("gitea")): user = conn.execute("SELECT * FROM users WHERE login='admin'").fetchone() user_data = dict(user) session = SessionManager.create_session(user_data) - response = RedirectResponse(url="/", status_code=302) + response = RedirectResponse(url="/workspaces", status_code=302) response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax") return response @@ -265,7 +265,7 @@ async def callback( # Create session session = SessionManager.create_session(user_data) - response = RedirectResponse(url="/", status_code=302) + response = RedirectResponse(url="/workspaces", status_code=302) response.set_cookie("flowdeck_session", session, httponly=True, max_age=86400 * 7, samesite="lax") return response diff --git a/app/routers/board.py b/app/routers/board.py index c135645..09f5155 100644 --- a/app/routers/board.py +++ b/app/routers/board.py @@ -140,6 +140,22 @@ def _build_page_tree(conn, parent_id: int | None, ws_key: str, depth: int = 0, m return items +def _load_workspace_pages(ws_cookie: str) -> list: + """Load top-level pages for the active workspace.""" + if not ws_cookie: + return [] + try: + ws_id = int(ws_cookie) + with get_conn() as conn: + rows = conn.execute( + "SELECT id, title FROM pages WHERE workspace_id=? AND parent_id IS NULL ORDER BY created_at DESC", + (ws_id,), + ).fetchall() + return [{"db_id": r["id"], "name": r["title"] or "Untitled", "id": f"page/{r['id']}"} for r in rows] + except (ValueError, Exception): + return [] + + def _sidebar_data(request: Request, owner: str = "", repo: str = "") -> dict: user = SessionManager.decode_session(request.cookies.get("flowdeck_session", "")) ws_name = user.get("login", "Bruno") if user else "Bruno" @@ -229,6 +245,7 @@ def _sidebar_data(request: Request, owner: str = "", repo: str = "") -> dict: return {"workspace_name": ws_name, "workspace_initial": ws_name[0].upper() if ws_name else "B", "active_ws_name": active_ws_name, + "workspace_pages": _load_workspace_pages(ws_cookie), "current_page": repo or "Dashboard", "last_edited": "now", "recent_pages": recent, "private_pages": private_items, "favorite_pages": favorites, "shared_pages": shared_pages, diff --git a/app/routers/dashboard.py b/app/routers/dashboard.py index 3674244..0f4a98c 100644 --- a/app/routers/dashboard.py +++ b/app/routers/dashboard.py @@ -482,10 +482,13 @@ async def local_workspace_page(request: Request): if not user: return RedirectResponse("/auth/login?provider=local", status_code=302) + ws = _get_active_workspace(request) + ws_id = ws["id"] if ws else None with get_conn() as conn: rows = conn.execute( - "SELECT id, title FROM pages WHERE parent_id IS NULL ORDER BY created_at DESC" - ).fetchall() + "SELECT id, title FROM pages WHERE parent_id IS NULL AND workspace_id=? ORDER BY created_at DESC", + (ws_id,), + ).fetchall() if ws_id else [] items = [{"id": r["id"], "name": r["title"] or "Untitled", "type": "page"} for r in rows] ctx = {**sidebar, "user": user, "workspace_name": sidebar.get("active_ws_name", "My Workspace"), "items": items} @@ -495,11 +498,14 @@ async def local_workspace_page(request: Request): @router.get("/api/local-workspace/tree") async def local_workspace_tree(request: Request): - """Return the file/folder tree.""" + """Return the file/folder tree filtered by active workspace.""" + ws = _get_active_workspace(request) + ws_id = ws["id"] if ws else None with get_conn() as conn: roots = conn.execute( - "SELECT id, title FROM pages WHERE parent_id IS NULL ORDER BY created_at DESC" - ).fetchall() + "SELECT id, title FROM pages WHERE parent_id IS NULL AND workspace_id=? ORDER BY created_at DESC", + (ws_id,), + ).fetchall() if ws_id else [] tree = [] for r in roots: with get_conn() as conn: diff --git a/app/templates/base.html b/app/templates/base.html index 1ec04da..1d535e4 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -88,13 +88,18 @@ 📁 {{ active_ws_name or 'Workspace' }}