41 lines
1.1 KiB
Python
41 lines
1.1 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
|
|
|
|
|
|
class PasswordResetForm(BasePasswordResetForm):
|
|
pass
|
|
|
|
|
|
def validate_token(token):
|
|
is_valid = default_token_generator.check_token(token)
|
|
|
|
if not is_valid:
|
|
raise ValidationError(_("El token no es válido o ha expirado"))
|
|
|
|
|
|
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(self.token, str(e))
|
|
return False
|
|
return super().is_valid()
|