Files
Axon/axon/middleware/auth.py
T
arsam fdd23b3910 Import source: axon/middleware/auth
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:06:17 +03:30

26 lines
800 B
Python

from fastapi.responses import JSONResponse
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request
from axon.config import settings
_EXEMPT = {"/health", "/metrics", "/docs", "/openapi.json", "/redoc"}
class APIKeyMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
if not settings.api_key_list:
return await call_next(request)
if request.url.path in _EXEMPT:
return await call_next(request)
key = request.headers.get("X-API-Key", "")
if key not in settings.api_key_list:
return JSONResponse(
status_code=401,
content={"detail": "Invalid or missing API key"},
)
return await call_next(request)