import uuid from django.shortcuts import render from .branding import is_trial_expired, is_trial_mode_enabled from .logging_utils import clear_request_id, set_request_id from .roles import ROLE_PLATFORM_OWNER, get_user_role_key class RequestIDMiddleware: HEADER_NAME = 'X-Request-ID' def __init__(self, get_response): self.get_response = get_response def __call__(self, request): request_id = ( request.META.get('HTTP_X_REQUEST_ID') or request.META.get('HTTP_X_CORRELATION_ID') or uuid.uuid4().hex ) request.request_id = request_id set_request_id(request_id) try: response = self.get_response(request) finally: clear_request_id() response[self.HEADER_NAME] = request_id return response class TrialModeMiddleware: EXEMPT_PREFIXES = ( '/healthz/', '/i18n/', '/accounts/login/', '/accounts/logout/', '/accounts/password_reset/', '/accounts/reset/', '/static/', '/media/', ) def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if not is_trial_mode_enabled() or not is_trial_expired(): return self.get_response(request) path = request.path or '/' if any(path.startswith(prefix) for prefix in self.EXEMPT_PREFIXES): return self.get_response(request) user = getattr(request, 'user', None) if getattr(user, 'is_authenticated', False) and get_user_role_key(user) == ROLE_PLATFORM_OWNER: return self.get_response(request) return render(request, 'workflows/trial_expired.html', status=403)