16 lines
700 B
Python
16 lines
700 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from fastapi import Request
|
||
|
|
|
||
|
|
from qonto_assistant.config import Settings
|
||
|
|
from qonto_assistant.contracts import ActorClaims
|
||
|
|
|
||
|
|
|
||
|
|
def actor_claims_from_request(request: Request, settings: Settings) -> ActorClaims:
|
||
|
|
actor_id = request.headers.get("x-actor-id", "anonymous")
|
||
|
|
tenant_id = request.headers.get("x-tenant-id", settings.default_tenant_id)
|
||
|
|
lane = request.headers.get("x-actor-lane", settings.default_actor_lane)
|
||
|
|
raw_scopes = request.headers.get("x-actor-scopes", "")
|
||
|
|
scopes = frozenset(scope.strip() for scope in raw_scopes.split(",") if scope.strip())
|
||
|
|
return ActorClaims(actor_id=actor_id, tenant_id=tenant_id, lane=lane, scopes=scopes)
|