Ajout de règles pour la validation des mots de passe. #13
Je vous conseille d'avoir un bon gestionnaire de mots de passe du coup :D
This commit is contained in:
parent
809859268a
commit
adf4b99a9b
|
@ -50,9 +50,40 @@ def email(form, email):
|
|||
|
||||
|
||||
def password(form, password):
|
||||
if len(password.data) != 0 and len(password.data) < 10:
|
||||
raise ValidationError('Mot de passe est trop court (10 caractères minimum).')
|
||||
# TODO: add more rules >:]
|
||||
MIN_CHARS = 10
|
||||
# To avoid errors in forms where password is optionnal
|
||||
if len(password.data) != 0:
|
||||
errors = []
|
||||
if len(password.data) < MIN_CHARS:
|
||||
errors.append(f'Le mot de passe doit faire au moins {MIN_CHARS} caractères.')
|
||||
|
||||
checks = {
|
||||
'lower': False,
|
||||
'upper': False,
|
||||
'numeric': False,
|
||||
'other': False
|
||||
}
|
||||
for c in password.data:
|
||||
if c in "abcdefghijklmnopqrstuvwxyz":
|
||||
checks['lower'] = True
|
||||
elif c in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
|
||||
checks['upper'] = True
|
||||
elif c in "0123456789":
|
||||
checks['numeric'] = True
|
||||
else:
|
||||
checks['other'] = True
|
||||
|
||||
if not checks['lower']:
|
||||
errors.append('Le mot de passe doit contenir au moins une minuscule.')
|
||||
if not checks['upper']:
|
||||
errors.append('Le mot de passe doit contenir au moins une majuscule.')
|
||||
if not checks['numeric']:
|
||||
errors.append('Le mot de passe doit contenir au moins une chiffre.')
|
||||
if not checks['other']:
|
||||
errors.append('Le mot de passe doit contenir au moins un caractère spécial.')
|
||||
|
||||
if errors != []:
|
||||
raise ValidationError(' '.join(errors))
|
||||
|
||||
|
||||
def avatar(form, avatar):
|
||||
|
|
Loading…
Reference in New Issue