From 2b35dd729f249fadad3d94b7f5f5abcec6b14058 Mon Sep 17 00:00:00 2001 From: Chris Coutinho Date: Sat, 15 Nov 2025 02:41:42 +0100 Subject: [PATCH] fix: Reorder tabs and fix viz pane session access - Move Webhooks tab to the right (User Info | Vector Sync | Vector Viz | Webhooks) - Use request.user.display_name instead of session for viz routes - Fixes session middleware error when accessing via iframe --- nextcloud_mcp_server/auth/userinfo_routes.py | 44 ++++++++++---------- nextcloud_mcp_server/auth/viz_routes.py | 16 ++++--- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/nextcloud_mcp_server/auth/userinfo_routes.py b/nextcloud_mcp_server/auth/userinfo_routes.py index a37d52b..50e17eb 100644 --- a/nextcloud_mcp_server/auth/userinfo_routes.py +++ b/nextcloud_mcp_server/auth/userinfo_routes.py @@ -846,18 +846,6 @@ async def user_info_html(request: Request) -> HTMLResponse: Vector Sync ''' - } - { - "" - if not show_webhooks_tab - else ''' - - ''' } { "" @@ -870,6 +858,18 @@ async def user_info_html(request: Request) -> HTMLResponse: Vector Viz ''' + } + { + "" + if not show_webhooks_tab + else ''' + + ''' } @@ -893,22 +893,22 @@ async def user_info_html(request: Request) -> HTMLResponse: { "" - if not show_webhooks_tab - else f''' - -
- {webhooks_tab_html} + if not show_vector_sync_tab + else ''' + +
+
''' } { "" - if not show_vector_sync_tab - else ''' - -
- + if not show_webhooks_tab + else f''' + +
+ {webhooks_tab_html}
''' } diff --git a/nextcloud_mcp_server/auth/viz_routes.py b/nextcloud_mcp_server/auth/viz_routes.py index 64137cd..e7ae535 100644 --- a/nextcloud_mcp_server/auth/viz_routes.py +++ b/nextcloud_mcp_server/auth/viz_routes.py @@ -57,9 +57,12 @@ async def vector_visualization_html(request: Request) -> HTMLResponse: """ ) - # Get user info from session - user_info = request.session.get("user_info", {}) - username = user_info.get("preferred_username", "unknown") + # Get user info from auth context + username = ( + request.user.display_name + if hasattr(request.user, "display_name") + else "unknown" + ) html_content = f""" @@ -374,9 +377,10 @@ async def vector_visualization_search(request: Request) -> JSONResponse: status_code=400, ) - # Get user info - user_info = request.session.get("user_info", {}) - username = user_info.get("preferred_username") + # Get user info from auth context + username = ( + request.user.display_name if hasattr(request.user, "display_name") else None + ) if not username: return JSONResponse(