Files
shoppy/users/forms/reset_password.py
T
2025-01-17 21:25:51 +01:00

51 lines
1.4 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()