From f8b0d68bb371859b77022e544cdaca82ef8291e6 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Thu, 15 Mar 2018 12:39:48 +0300 Subject: [PATCH] LIL-306. Add token based auth for navigate to edit from admin page --- apps/auth/middleware.py | 18 ++++++++++++++++++ project/settings.py | 1 + 2 files changed, 19 insertions(+) create mode 100644 apps/auth/middleware.py 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']