from aiohttp.web import middleware from apollo_utils.service.exceptions import Unauthorized from server import config @middleware async def auth_middleware(request, handler): """Authenticate a user. Authentication is performed by extracting AUTH_KEY from header Returns: None Raises: Unauthorized: If authorization token is invalid or missing. """ if request.rel_url == request.app.router["health"].url_for(): return await handler(request) if config.DEBUG: if request.path.startswith("/api/doc") or request.path.startswith("/static"): return await handler(request) api_key = request.headers.get("Authorization") if not api_key: raise Unauthorized("Authorization key is not provided.") if api_key != config.DSPAPI_APPKEY: raise Unauthorized("Invalid authorization key.") return await handler(request)