diff --git a/apps/auth/middleware.py b/apps/auth/middleware.py new file mode 100644 index 00000000..1c737a93 --- /dev/null +++ b/apps/auth/middleware.py @@ -0,0 +1,18 @@ +from django.contrib.auth import login +from django.utils.deprecation import MiddlewareMixin + +from rest_framework.authtoken.models import Token + + +class TokenAuthLoginMiddleware(MiddlewareMixin): + + def process_request(self, request): + if 'token' in request.GET: + token = request.GET.get('token') + if token: + try: + token = Token.objects.get(key=token) + user = token.user + login(request, user) + except Token.DoesNotExist: + pass diff --git a/project/settings.py b/project/settings.py index c4ea30c7..a9e02e83 100644 --- a/project/settings.py +++ b/project/settings.py @@ -73,6 +73,7 @@ MIDDLEWARE = [ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'apps.auth.middleware.TokenAuthLoginMiddleware', ] if DEBUG: MIDDLEWARE += ['silk.middleware.SilkyMiddleware']