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

30 lines
863 B
Python
Raw Normal View History

from django.contrib import auth, messages
from django.shortcuts import redirect
from django.urls import reverse
from .models import LoginToken
from .tasks import send_login_email_task
def send_login_email(request):
email = request.POST["email"]
login_token = LoginToken.objects.create(email=email)
url = request.build_absolute_uri(
reverse("login") + "?token=" + str(login_token.uid),
)
send_login_email_task.delay(email, url)
messages.success(
request,
"Check your email!—there you'll find a magic login link. But hurry… it's only temporary!",
)
return redirect("/")
def login(request):
if user := auth.authenticate(uid=request.GET["token"]):
auth.login(request, user)
else:
messages.error(request, "Invalid login link!—please request another")
return redirect("/")