from django.core.exceptions import ValidationError from .models import Token, User class PasswordlessAuthenticationBackend: def authenticate(self, request, uid=None): if uid is None: return None try: token = Token.objects.get(uid=uid) except (Token.DoesNotExist, ValidationError): return None try: return User.objects.get(email=token.email) except User.DoesNotExist: return User.objects.create_user(email=token.email) def get_user(self, user_id): try: return User.objects.get(pk=user_id) except User.DoesNotExist: return None # could also pass (which = return None)