Como usar validadores de senha personalizados ao lado dos validadores de senha de autenticação do django?
Como a pergunta acima mencionada, tentarei usar uma certa regra extra para validar uma senha durante o processo de registro. A regra extra deve ser que uma senha seja validada se tiver pelo menos um dígito, uma letra e um caractere especial.
Minha abordagem para resolver esse problema, criei um arquivo chamado validators.py.
from django.core.exceptions import ValidationError
class CustomPasswortValidator:
def validate(value):
# check for digit
if not any(char.isdigit() for char in value):
raise ValidationError(_('Password must contain at least 1 digit.'))
# check for letter
if not any(char.isalpha() for char in value):
raise ValidationError(_('Password must contain at least 1 letter.'))
# check for special character
special_characters = "[~\!@#\$%\^&\*\(\)_\+{}\":;'\[\]]"
if not any(char in special_characters for char in value):
raise ValidationError(_('Password must contain at least 1 letter.'))
Meu formulário de registro personalizado é assim:
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class RegistrationForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=False,
help_text='Optional.')
last_name = forms.CharField(max_length=30, required=False,
help_text='Optional.')
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', )
Não entendo como digo ao django, que meu validador de senha personalizado deve ser usado ao lado do django AUTH_PASSWORD_VALIDATORS.