from django.utils import timezone from django.conf import settings from django.core.exceptions import PermissionDenied from authentication.models import TempToken from .base import JMSModelBackend class TempTokenAuthBackend(JMSModelBackend): model = TempToken def authenticate(self, request, username='', password='', *args, **kwargs): token = self.model.objects.filter(username=username, secret=password).first() if not token: return None if not token.is_valid: raise PermissionDenied('Token is invalid, expired at {}'.format(token.date_expired)) token.verified = True token.date_verified = timezone.now() token.save() return token.user @staticmethod def is_enabled(): return settings.AUTH_TEMP_TOKEN