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