Skip to content

Commit 80b5f37

Browse files
committed
feat: add tenant dependency and register TenantMiddleware
1 parent 75a930f commit 80b5f37

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

src/core/bootstrap/middleware.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from src.core.middleware.request_size import LimitRequestSizeMiddleware
1313
from src.core.middleware.security_headers import SecurityHeadersMiddleware
1414
from src.core.middleware.structured_logging import StructuredLoggingMiddleware
15+
from src.core.middleware.tenant import TenantMiddleware
1516
from src.core.security.providers import JWTAuthProvider
1617

1718
settings = get_settings()
@@ -42,6 +43,7 @@ def register_middleware(app: FastAPI):
4243
app.add_middleware(MetricsMiddleware)
4344
app.add_middleware(StructuredLoggingMiddleware)
4445
app.add_middleware(AuditLoggingMiddleware)
46+
app.add_middleware(TenantMiddleware)
4547
app.add_middleware(
4648
AuthenticationMiddleware,
4749
providers=[JWTAuthProvider()],

src/core/dependency/tenant.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from uuid import UUID
2+
3+
from fastapi import HTTPException, Request
4+
from starlette.status import HTTP_400_BAD_REQUEST
5+
6+
7+
def get_current_tenant_id(request: Request) -> UUID:
8+
tenant_id: UUID | None = getattr(request.state, "tenant_id", None)
9+
if tenant_id is None:
10+
raise HTTPException(
11+
status_code=HTTP_400_BAD_REQUEST,
12+
detail="Tenant not identified",
13+
)
14+
return tenant_id
15+
16+
17+
def get_optional_tenant_id(request: Request) -> UUID | None:
18+
return getattr(request.state, "tenant_id", None)

0 commit comments

Comments
 (0)