17 lines
518 B
Python
17 lines
518 B
Python
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)
|