27 lines
		
	
	
		
			917 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			917 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
 | 
