You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
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
|
|
|