[chgpass] En cas d'utilisateur introuvable, fallback sur les users locaux

This commit is contained in:
Pierre-Elliott Bécue 2014-05-09 01:48:54 +02:00
parent d5e1b8b54e
commit a473911463

View file

@ -22,6 +22,7 @@ import argparse
import gestion.affich_tools as affich_tools import gestion.affich_tools as affich_tools
import lc_ldap.shortcuts import lc_ldap.shortcuts
import lc_ldap.attributs import lc_ldap.attributs
import lc_ldap.objets
import smtplib import smtplib
encoding = "UTF-8" encoding = "UTF-8"
@ -136,7 +137,8 @@ def change_password(ldap, login=None, verbose=False, no_cracklib=False, **args):
login = lc_ldap.crans_utils.escape(login) login = lc_ldap.crans_utils.escape(login)
query = ldap.search(u"(uid=%s)" % login, mode="w") query = ldap.search(u"(uid=%s)" % login, mode="w")
if not query: if not query:
affich_tools.cprint('Utilisateur introuvable', "rouge") affich_tools.cprint('Utilisateur introuvable dans la base de données, modification de l\'utilisateur local.', "rouge")
sys.exit(2)
with query[0] as user: with query[0] as user:
# Test pour vérifier que l'utilisateur courant peut modifier le mdp de user # Test pour vérifier que l'utilisateur courant peut modifier le mdp de user
try: try:
@ -162,8 +164,12 @@ def change_password(ldap, login=None, verbose=False, no_cracklib=False, **args):
sys.exit(1) sys.exit(1)
# On peut modifier le MDP # On peut modifier le MDP
if isinstance(user, lc_ldap.objets.club):
prenom = "Club"
else:
prenom = user['prenom'][0]
affich_tools.cprint("Changement du mot de passe de %s %s." % affich_tools.cprint("Changement du mot de passe de %s %s." %
(user['prenom'][0], user['nom'][0]), (prenom, user['nom'][0]),
"vert") "vert")
# Règles du jeu # Règles du jeu
@ -240,7 +246,7 @@ if __name__ == "__main__":
help="Permet de contourner les règles de choix du mot de passe" + help="Permet de contourner les règles de choix du mot de passe" +
"(réservé aux nounous).", "(réservé aux nounous).",
action="store_true") action="store_true")
parser.add_argument('login', type=str, nargs="?", parser.add_argument('login', type=str, nargs="?",
help="L'utilisateur dont on veut changer le mot de passe.") help="L'utilisateur dont on veut changer le mot de passe.")
args = parser.parse_args() args = parser.parse_args()