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)