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