from django.shortcuts import redirect from django.utils.deprecation import MiddlewareMixin from .auth import ( is_admin_authorized, remove_admin_authorization, update_admin_authorization, ) from .views import get_protected_namespace from .views.auth import login class AdminAuthMiddleware(MiddlewareMixin): def process_view(self, request, view_func, view_args, view_kwargs): request.admin_namespace = get_protected_namespace(request) if request.admin_namespace: return self.check_admin_authorization(request) def check_admin_authorization(self, request): if not is_admin_authorized(request): remove_admin_authorization(request) if request.resolver_match.url_name == "index": return login(request) return redirect("%s:index" % request.admin_namespace) update_admin_authorization(request)