From fdd23b391005f43e5df1f71109f8e52ce64e70a2 Mon Sep 17 00:00:00 2001 From: arsam Date: Fri, 18 Sep 2026 23:06:17 +0330 Subject: [PATCH] Import source: axon/middleware/auth Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality. --- axon/middleware/auth.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 axon/middleware/auth.py diff --git a/axon/middleware/auth.py b/axon/middleware/auth.py new file mode 100644 index 0000000..d465814 --- /dev/null +++ b/axon/middleware/auth.py @@ -0,0 +1,25 @@ +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)