from django.shortcuts import redirect class PortalStaffMiddleware: """Keep customer accounts out of the staff portal. Webhooks stay public.""" PORTAL_PREFIX = "/portal/" WEBHOOK_INFIX = "/webhooks/" def __init__(self, get_response): self.get_response = get_response def __call__(self, request): path = request.path if path.startswith(self.PORTAL_PREFIX) and self.WEBHOOK_INFIX not in path: user = getattr(request, "user", None) if ( user is not None and getattr(user, "is_authenticated", False) and not getattr(user, "is_staff", False) ): return redirect("account:home") return self.get_response(request)