Files
python-tdd/src/apps/lyric/authentication.py

23 lines
758 B
Python

from django.core.exceptions import ValidationError
from .models import LoginToken, User
class PasswordlessAuthenticationBackend:
def authenticate(self, request, uid=None):
if uid is None:
return None
try:
login_token = LoginToken.objects.get(uid=uid)
except (LoginToken.DoesNotExist, ValidationError):
return None
try:
return User.objects.get(email=login_token.email)
except User.DoesNotExist:
return User.objects.create_user(email=login_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)