from fastapi import APIRouter, Request from fastapi.responses import RedirectResponse from fastapi.templating import Jinja2Templates from pathlib import Path from app import auth_users router = APIRouter(tags=["settings"]) BASE_DIR = Path(__file__).resolve().parent.parent.parent templates = Jinja2Templates(directory=str(BASE_DIR / "templates")) @router.get("/settings") async def settings_page(request: Request, tab: str = "email"): allowed = ("email", "general", "permissions", "social", "users") active = tab if tab in allowed else "email" if tab == "ai": active = "email" user = getattr(request.state, "user", None) if active == "users" and not auth_users.can_manage_users(user): return RedirectResponse("/settings?tab=email", status_code=303) return templates.TemplateResponse( "settings.html", { "request": request, "page_title": "Settings", "active_tab": active, "can_manage_users": auth_users.can_manage_users(user), "current_user": user, }, )