logging, who create user
import threading
from re import search
from rest_framework.authtoken.models import Token
class LogUserMiddleware(object):
thread_local = threading.local()
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if not request.user.is_authenticated:
# DRF получает пользователя по токену у себя, поэтому здесь проверяем
header_token = request.META.get('HTTP_AUTHORIZATION', None)
if header_token:
try:
token = search(
r'(TOKEN|Token)\s.+', header_token).string.split(' ')[1]
except AttributeError:
token = None
if token:
try:
token_obj = Token.objects.get(key=token)
except Token.DoesNotExist:
pass
else:
request.user = token_obj.user
LogUserMiddleware.thread_local.current_user = request.user
response = self.get_response(request)