from datetime import timedelta from django.contrib.auth import login from django.utils.deprecation import MiddlewareMixin from django.utils.timezone import now from rest_framework.authtoken.models import Token from apps.auth.models import TempToken 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 class TempTokenAuthLoginMiddleware(MiddlewareMixin): def process_request(self, request): if 'temp-token' in request.GET: token = request.GET.get('temp-token') if token: try: token = TempToken.objects.get(key=token) if now() - token.created > timedelta(hours=1): token.delete() return user = token.user login(request, user) except TempToken.DoesNotExist: pass