Guest007
11/29/2016 - 12:56 PM

logging, who create user

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)