ai-robot-core/ai-service/app/core/tenant.py

32 lines
699 B
Python
Raw Normal View History

"""
Tenant context management.
[AC-AISVC-10, AC-AISVC-12] Multi-tenant isolation via X-Tenant-Id header.
"""
from contextvars import ContextVar
from dataclasses import dataclass
tenant_context: ContextVar["TenantContext | None"] = ContextVar("tenant_context", default=None)
@dataclass
class TenantContext:
tenant_id: str
def set_tenant_context(tenant_id: str) -> None:
tenant_context.set(TenantContext(tenant_id=tenant_id))
def get_tenant_context() -> TenantContext | None:
return tenant_context.get()
def get_tenant_id() -> str | None:
ctx = get_tenant_context()
return ctx.tenant_id if ctx else None
def clear_tenant_context() -> None:
tenant_context.set(None)