Files
shoppy/users/forms/reset_password.py
T
2025-01-17 12:06:24 +01:00

46 lines
1.3 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 _
from web.mixins import StylingMixin
class PasswordResetForm(StylingMixin, BasePasswordResetForm):
styled_fields = ['email', ]
placeholder_for_field = {
"email": _("pablo@shoppy.com"),
}
class SetPasswordForm(StylingMixin, BaseSetPasswordForm):
styled_fields = ['new_password1', 'new_password2', ]
placeholder_for_field = {
"new_password1": "********",
"new_password2": "********",
}
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()