"""RTSport Login Page Router. Serves the static login page at GET /rtsport/login. Reads the template file from the shared frontend directory at request time. """ from pathlib import Path from fastapi import APIRouter from fastapi.responses import HTMLResponse router = APIRouter(prefix="/rtsport", tags=["rtsport-login"]) # Resolve the shared template via the current symlink _TEMPLATE_DIR = Path("/home/hoffmann_admin/.openclaw/shared/current/frontend/templates") _LOGIN_HTML = _TEMPLATE_DIR / "login.html" @router.get("/login", response_class=HTMLResponse) async def serve_login_page() -> HTMLResponse: """Serve the RTSport login page. Reads the HTML template from disk on each request, allowing the frontend team to update the template without restarting the server. """ try: html = _LOGIN_HTML.read_text(encoding="utf-8") except FileNotFoundError: return HTMLResponse( content="

Login page not found

The template file is missing. Please ensure the frontend build is complete.

", status_code=404, ) return HTMLResponse(content=html)