Files
shoppy/users/forms/reset_password.py
T
2025-01-17 00:36:41 +01:00

35 lines
1.0 KiB
Python

from django import forms
from django.contrib.auth.forms import PasswordResetForm as BasePasswordResetForm
from django.contrib.auth.forms import SetPasswordForm as BaseSetPasswordForm
from django.contrib.auth.tokens import default_token_generator
from django.core.exceptions import ValidationError
from django.utils.text import gettext_lazy as _
class PasswordResetForm(BasePasswordResetForm):
pass
class SetPasswordForm(BaseSetPasswordForm):
token = forms.CharField(
required=True,
widget=forms.HiddenInput(),
validators=[],
)
def validate_token(self):
is_valid = default_token_generator.check_token(
self.user, self.data.get("token")
)
if not is_valid:
raise ValidationError(_("El token no es válido o ha expirado"))
def is_valid(self):
try:
self.validate_token()
except ValidationError as e:
self.add_error('token', str(e))
return False
return super().is_valid()