On gère un peu mieux le message

This commit is contained in:
Pierre-Elliott Bécue 2015-03-20 16:35:01 +01:00
parent 891fae63f6
commit e0cced3e4d

View file

@ -39,10 +39,7 @@ def check_password(password, no_cracklib=False, dialog=False):
password.decode('ascii')
except UnicodeDecodeError:
problem = True
if not dialog:
affich_tools.cprint(u'Le mot de passe ne doit contenir que des caractères ascii.', "rouge")
else:
msg += affich_tools.coul(u'Le mot de passe ne doit contenir que des caractères ascii.\n', "rouge", dialog=dialog)
msg += u"Le mot de passe ne doit contenir que des caractères ascii.\n"
# Nounou mode
if no_cracklib:
@ -67,37 +64,22 @@ def check_password(password, no_cracklib=False, dialog=False):
# Recherche de manque de caractères
if cif < config.password.min_cif:
if not dialog:
affich_tools.cprint(u'Le mot de passe doit contenir plus de chiffres.', "rouge")
else:
msg += affich_tools.coul(u'Le mot de passe doit contenir plus de chiffres.\n', "rouge", dialog=dialog)
msg += u'Le mot de passe doit contenir plus de chiffres.\n'
problem = True
if upp < config.password.min_upp:
if not dialog:
affich_tools.cprint(u'Le mot de passe doit contenir plus de majuscules.', "rouge")
else:
msg += affich_tools.coul(u'Le mot de passe doit contenir plus de majuscules.\n', "rouge", dialog=dialog)
msg += u'Le mot de passe doit contenir plus de majuscules.\n'
problem = True
if low < config.password.min_low:
if not dialog:
affich_tools.cprint(u'Le mot de passe doit contenir plus de minuscules.', "rouge")
else:
msg += affich_tools.coul(u'Le mot de passe doit contenir plus de minuscules.\n', "rouge", dialog=dialog)
msg += u'Le mot de passe doit contenir plus de minuscules.\n'
problem = True
if oth < config.password.min_oth:
if not dialog:
affich_tools.cprint(u'Le mot de passe doit contenir plus de caractères qui ne sont ni des chiffres, ni des majuscules, ni des minuscules.', "rouge")
else:
msg += affich_tools.coul(u'Le mot de passe doit contenir plus de caractères qui ne sont ni des chiffres, ni des majuscules, ni des minuscules.\n', "rouge", dialog=dialog)
msg += u'Le mot de passe doit contenir plus de caractères qui ne sont ni des chiffres, ni des majuscules, ni des minuscules.\n'
problem = True
# Scores sur la longueur
longueur = config.password.upp_value*upp + config.password.low_value*low + config.password.cif_value*cif + config.password.oth_value*oth
if longueur < config.password.min_len:
if not dialog:
affich_tools.cprint(u'Le mot de passe devrait être plus long, ou plus difficile.', "rouge")
else:
msg += affich_tools.coul(u'Le mot de passe devrait être plus long, ou plus difficile.\n', "rouge", dialog=dialog)
msg += u'Le mot de passe devrait être plus long, ou plus difficile.\n'
problem = True
if not problem:
@ -111,18 +93,26 @@ def check_password(password, no_cracklib=False, dialog=False):
# Le mot vient-il du dico (à améliorer, on voudrait pouvoir préciser
# la rigueur du test) ?
password = cracklib.VeryFascistCheck(password)
if dialog:
msg = affich_tools.coul(msg, 'rouge', dialog=dialog)
return True, msg
except ValueError as e:
if not dialog:
affich_tools.cprint(e.message, "rouge")
else:
msg += affich_tools.coul(str(e).decode(), "rouge", dialog=dialog)
msg += str(e).decode()
if dialog:
msg = affich_tools.coul(msg, 'rouge', dialog=dialog)
return False, msg
else:
if dialog:
msg = affich_tools.coul(msg, 'rouge', dialog=dialog)
return True, msg
else:
if dialog:
msg = affich_tools.coul(msg, 'rouge', dialog=dialog)
return False, msg
if dialog:
msg = affich_tools.coul(msg, 'rouge', dialog=dialog)
return False, msg
@lc_ldap.shortcuts.with_ldap_conn(retries=2, delay=5, constructor=lc_ldap.shortcuts.lc_ldap_admin)
@ -209,12 +199,15 @@ CTRL+D ou CTRL+C provoquent un abandon.""" %
try:
while True:
mdp = getpass.getpass("Nouveau mot de passe: ")
if check_password(mdp, no_cracklib)[0]:
(ret, msg) = check_password(mdp, no_cracklib)
if ret:
mdp2 = getpass.getpass("Retaper le mot de passe: ")
if mdp != mdp2:
affich_tools.cprint(u"Les deux mots de passe diffèrent.", "rouge")
else:
break
else:
affich_tools.cprint(msg, 'rouge')
except KeyboardInterrupt:
affich_tools.cprint(u'\nAbandon', 'rouge')