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
 |