from django.contrib import auth, messages from django.core.exceptions import ValidationError from django.core.mail import send_mail from django.shortcuts import redirect from django.urls import reverse from .models import Token, User from ..dashboard.forms import ItemForm 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): uid = request.GET.get("token") if not uid: return redirect("/") user = auth.authenticate(request, uid=uid) if user is not None: user.backend = "apps.lyric.authentication.PasswordlessAuthenticationBackend" auth.login(request, user) return redirect("/")