2026-01-30 21:33:30 -05:00
|
|
|
from django.contrib import auth, messages
|
2026-01-30 16:21:32 -05:00
|
|
|
from django.core.mail import send_mail
|
|
|
|
|
from django.shortcuts import redirect
|
2026-01-30 17:52:44 -05:00
|
|
|
from django.urls import reverse
|
2026-01-30 21:51:06 -05:00
|
|
|
from .models import Token
|
2026-01-29 15:21:54 -05:00
|
|
|
|
2026-01-30 16:21:32 -05:00
|
|
|
def send_login_email(request):
|
|
|
|
|
email = request.POST["email"]
|
2026-01-30 17:52:44 -05:00
|
|
|
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}"
|
2026-01-30 17:23:07 -05:00
|
|
|
send_mail(
|
|
|
|
|
"A magic login link to your Dashboard",
|
2026-01-30 17:52:44 -05:00
|
|
|
message_body,
|
2026-01-30 17:23:07 -05:00
|
|
|
"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!",
|
|
|
|
|
)
|
2026-01-30 16:21:32 -05:00
|
|
|
return redirect("/")
|
2026-01-30 17:36:48 -05:00
|
|
|
|
|
|
|
|
def login(request):
|
2026-01-30 21:33:30 -05:00
|
|
|
uid = request.GET.get("token")
|
|
|
|
|
user = auth.authenticate(request, uid=uid)
|
|
|
|
|
if user is not None:
|
|
|
|
|
user.backend = "apps.lyric.authentication.PasswordlessAuthenticationBackend"
|
|
|
|
|
auth.login(request, user)
|
2026-01-30 21:51:06 -05:00
|
|
|
else:
|
|
|
|
|
messages.error(request, "Invalid login link!—please request a new one")
|
2026-01-30 17:36:48 -05:00
|
|
|
return redirect("/")
|