"""passbook admin Middleware to impersonate users""" from passbook.core.models import User def impersonate(get_response): """Middleware to impersonate users""" def middleware(request): """Middleware to impersonate users""" # User is superuser and has __impersonate ID set if request.user.is_superuser and "__impersonate" in request.GET: request.session["impersonate_id"] = request.GET["__impersonate"] # user wants to stop impersonation elif "__unimpersonate" in request.GET and "impersonate_id" in request.session: del request.session["impersonate_id"] # Actually impersonate user if request.user.is_superuser and "impersonate_id" in request.session: request.user = User.objects.get(pk=request.session["impersonate_id"]) response = get_response(request) return response return middleware