Coverage for core\middleware.py: 0%
13 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-17 16:50 +0800
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-17 16:50 +0800
1import uuid
2from django.utils.deprecation import MiddlewareMixin
4class TenantMiddleware(MiddlewareMixin):
5 """
6 Middleware that attaches tenant_id to the request object.
7 Resolves tenant_id from:
8 1. Header 'X-Tenant-ID'
9 2. Authenticated user's current_organization_id
10 """
11 def process_request(self, request):
12 tenant_header = request.headers.get('X-Tenant-ID')
13 if tenant_header:
14 try:
15 request.tenant_id = uuid.UUID(tenant_header)
16 except ValueError:
17 request.tenant_id = None
18 elif hasattr(request, 'user') and request.user.is_authenticated:
19 request.tenant_id = getattr(request.user, 'current_organization_id', None)
20 else:
21 request.tenant_id = None