""" web/auth.py =========== JWT authentication for the web UI. Flow: - POST /api/auth/login {token} → verify invite token → issue JWT in httpOnly cookie - All /api/* require valid JWT via require_auth dependency - POST /api/admin/login {password} → issue admin JWT (admin: true claim) - WS /ws?token= → authenticate via query param JWT claims: {"sub": "