Files
2026-07-06 12:28:55 +05:30

44 lines
1.6 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, Request
from fastapi.responses import RedirectResponse
from app.core.db.common import CommonSessionLocal
from app.core.security.csrf import get_or_create_csrf_token
from app.core.security.session_auth import get_current_user
from app.core.templating import templates
from app.modules.core.rbac.deps import get_user_permissions, get_user_roles
from app.modules.workspace_navigation.service import build_workspace_cards, current_workspace_code
router = APIRouter(tags=["workspace-navigation-ui"])
@router.get("/workspaces")
def workspaces(request: Request):
db = CommonSessionLocal()
try:
current_user = get_current_user(request, db=db)
if not current_user:
return RedirectResponse(url="/login", status_code=303)
roles = get_user_roles(db, current_user.id)
permissions = get_user_permissions(db, current_user.id)
cards = build_workspace_cards(roles, permissions)
current_path = request.url.path
return templates.TemplateResponse(
"modules/workspace_navigation/templates/workspace_navigation/index.html",
{
"request": request,
"current_user": current_user,
"current_user_roles": roles,
"current_user_permissions": permissions,
"csrf_token": get_or_create_csrf_token(request),
"title": "My Workspaces",
"workspace_cards": cards,
"current_workspace_code": current_workspace_code(current_path),
},
)
finally:
db.close()