middleware.py 777 B

123456789101112131415161718192021
  1. from django.shortcuts import redirect
  2. from django.utils.deprecation import MiddlewareMixin
  3. from . import auth
  4. from .views import get_protected_namespace
  5. from .views.auth import login
  6. class AdminAuthMiddleware(MiddlewareMixin):
  7. def process_view(self, request, view_func, view_args, view_kwargs):
  8. request.admin_namespace = get_protected_namespace(request)
  9. if request.admin_namespace:
  10. if not auth.is_admin_session(request):
  11. auth.close_admin_session(request)
  12. if request.resolver_match.url_name == 'index':
  13. return login(request)
  14. else:
  15. return redirect('%s:index' % request.admin_namespace)
  16. else:
  17. auth.update_admin_session(request)