From e0cced3e4dab394de7624d2eadd73505fd9bec8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Elliott=20B=C3=A9cue?= Date: Fri, 20 Mar 2015 16:35:01 +0100 Subject: [PATCH] =?UTF-8?q?On=20g=C3=A8re=20un=20peu=20mieux=20le=20messag?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gestion/chgpass.py | 51 ++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/gestion/chgpass.py b/gestion/chgpass.py index 9492ff3d..e51d4482 100755 --- a/gestion/chgpass.py +++ b/gestion/chgpass.py @@ -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')