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:
Darks 2019-06-07 14:00:26 +02:00
parent 809859268a
commit adf4b99a9b
Signed by: Darks
GPG Key ID: F61F10FA138E797C
1 changed files with 34 additions and 3 deletions

View File

@ -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):