middleware.py 907 B

1234567891011121314151617181920212223242526
  1. from django.shortcuts import redirect
  2. from django.utils.deprecation import MiddlewareMixin
  3. from .auth import (
  4. is_admin_authorized,
  5. remove_admin_authorization,
  6. update_admin_authorization
  7. )
  8. from .views import get_protected_namespace
  9. from .views.auth import login
  10. class AdminAuthMiddleware(MiddlewareMixin):
  11. def process_view(self, request, view_func, view_args, view_kwargs):
  12. request.admin_namespace = get_protected_namespace(request)
  13. if request.admin_namespace:
  14. return self.check_admin_authorization(request)
  15. def check_admin_authorization(self, request):
  16. if not is_admin_authorized(request):
  17. remove_admin_authorization(request)
  18. if request.resolver_match.url_name == "index":
  19. return login(request)
  20. return redirect("%s:index" % request.admin_namespace)
  21. update_admin_authorization(request)