Files
shoppy/users/forms/reset_password.py
2025-05-02 08:38:57 +02:00

35 lines
1.2 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()