43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from pathlib import Path
|
|
|
|
from fastapi import APIRouter, Depends, Request, status
|
|
from fastapi.responses import HTMLResponse, RedirectResponse, Response
|
|
from fastapi.templating import Jinja2Templates
|
|
|
|
from app.config import Settings
|
|
from app.dependencies import get_app_settings, get_current_auth_session
|
|
from app.services.auth import AuthenticatedSession
|
|
|
|
templates = Jinja2Templates(directory=str(Path(__file__).resolve().parents[2] / "templates"))
|
|
router = APIRouter(tags=["pages"])
|
|
|
|
|
|
@router.get("/", response_class=HTMLResponse)
|
|
def home(request: Request, settings: Settings = Depends(get_app_settings)) -> HTMLResponse:
|
|
context = {
|
|
"app_name": settings.app_name,
|
|
"app_env": settings.app_env,
|
|
"notion_status": "Legacy scope, removed from the Python rewrite target.",
|
|
}
|
|
return templates.TemplateResponse(request, "home.html", context)
|
|
|
|
|
|
@router.get("/admin", response_class=HTMLResponse)
|
|
def admin_page(
|
|
request: Request,
|
|
settings: Settings = Depends(get_app_settings),
|
|
current_auth: AuthenticatedSession | None = Depends(get_current_auth_session),
|
|
) -> Response:
|
|
if current_auth is None:
|
|
return RedirectResponse(url="/login", status_code=status.HTTP_303_SEE_OTHER)
|
|
|
|
context = {
|
|
"app_name": settings.app_name,
|
|
"app_env": settings.app_env,
|
|
"current_username": current_auth.user.username,
|
|
"csrf_token": current_auth.session.csrf_token,
|
|
"force_password_change": current_auth.user.force_password_change,
|
|
"password_change_error": None,
|
|
}
|
|
return templates.TemplateResponse(request, "admin.html", context)
|