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()