33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
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,
|
|
},
|
|
)
|