"""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