from aiohttp.web import middleware import config from server.core.exceptions import Unauthorized @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.DNA_API_APPKEY: raise Unauthorized("Invalid authorization key.") return await handler(request)