2026-01-30 19:10:17 -05:00
|
|
|
from django.core.exceptions import ValidationError
|
2026-03-08 15:14:41 -04:00
|
|
|
from .models import LoginToken, User
|
2026-01-30 19:10:17 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class PasswordlessAuthenticationBackend:
|
|
|
|
|
def authenticate(self, request, uid=None):
|
|
|
|
|
if uid is None:
|
|
|
|
|
return None
|
|
|
|
|
try:
|
2026-03-08 15:14:41 -04:00
|
|
|
login_token = LoginToken.objects.get(uid=uid)
|
|
|
|
|
except (LoginToken.DoesNotExist, ValidationError):
|
2026-01-30 19:10:17 -05:00
|
|
|
return None
|
|
|
|
|
try:
|
2026-03-08 15:14:41 -04:00
|
|
|
return User.objects.get(email=login_token.email)
|
2026-01-30 19:10:17 -05:00
|
|
|
except User.DoesNotExist:
|
2026-03-08 15:14:41 -04:00
|
|
|
return User.objects.create_user(email=login_token.email)
|
2026-01-30 19:26:02 -05:00
|
|
|
|
2026-01-30 21:33:30 -05:00
|
|
|
def get_user(self, user_id):
|
2026-01-30 19:26:02 -05:00
|
|
|
try:
|
2026-01-30 21:33:30 -05:00
|
|
|
return User.objects.get(pk=user_id)
|
2026-01-30 19:26:02 -05:00
|
|
|
except User.DoesNotExist:
|
2026-01-30 21:33:30 -05:00
|
|
|
return None # could also pass (which = return None)
|
2026-01-30 19:26:02 -05:00
|
|
|
|