/usr/lib/python3/dist-packages/impersonate/middleware.py is in python3-django-impersonate 1.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # -*- coding: utf-8 -*-
from .helpers import (
User, check_allow_for_user, check_allow_for_uri, is_authenticated,
)
try:
from django.utils.deprecation import MiddlewareMixin
except ImportError:
MiddlewareMixin = object # fallback for Django < 1.10
class ImpersonateMiddleware(MiddlewareMixin):
def process_request(self, request):
request.user.is_impersonate = False
request.impersonator = None
if is_authenticated(request.user) and \
'_impersonate' in request.session:
new_user_id = request.session['_impersonate']
if isinstance(new_user_id, User):
# Edge case for issue 15
new_user_id = new_user_id.pk
try:
new_user = User.objects.get(pk=new_user_id)
except User.DoesNotExist:
return
if check_allow_for_user(request, new_user) and \
check_allow_for_uri(request.path):
request.impersonator = request.user
request.user = new_user
request.user.is_impersonate = True
request.real_user = request.impersonator or request.user
|