from uuid import UUID from starlette.middleware.base import BaseHTTPMiddleware from shared.tenant import HEADER_TENANT_ID, STATE_TENANT_ID class TenantHeaderMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): raw=request.headers.get(HEADER_TENANT_ID) try: value=UUID(raw) if raw else None except ValueError: value=None setattr(request.state,STATE_TENANT_ID,value) return await call_next(request)