from django.contrib import auth, messages from django.core.mail import send_mail from django.shortcuts import redirect from django.urls import reverse from .models import Token def send_login_email(request): email = request.POST["email"] token = Token.objects.create(email=email) url = request.build_absolute_uri( reverse("login") + "?token=" + str(token.uid), ) message_body = f"Use this magic link to login to your Dashboard:\n\n{url}" send_mail( "A magic login link to your Dashboard", message_body, "adman@howdy.earthmanrpg.me", [email], ) 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("/")