26 lines
916 B
Python
26 lines
916 B
Python
"""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
|