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