2024-01-18 12:03:37 +01:00

42 lines
1.3 KiB
Python

from django.contrib.auth import get_user_model
from django.contrib.auth.tokens import default_token_generator
from django.core.mail import EmailMultiAlternatives
from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_decode, urlsafe_base64_encode
class Util:
@staticmethod
def send_email(html_content, **data):
try:
email = EmailMultiAlternatives(**data)
email.attach_alternative(html_content, "text/html")
email.send()
except Exception:
raise Exception("Sending e-mail went wrong")
@staticmethod
def get_token(user):
try:
data = {
"uidb64": urlsafe_base64_encode(force_bytes(user.pk)),
"token": default_token_generator.make_token(user)
}
except Exception:
return None
return data
@staticmethod
def check_token(uidb64, token):
try:
User = get_user_model()
uid = urlsafe_base64_decode(uidb64).decode()
user = User.objects.get(pk=uid)
except (TypeError, ValueError, OverflowError, User.DoesNotExist):
user = None
# Check token
if user is not None and default_token_generator.check_token(user, token):
return user
raise Exception("Token invalid")