@@ -37,6 +37,8 @@ from eoleldaptor import eoleldapproxy from twisted.python import log, failure from util import get_replication_branches +from scribe.eoleldap import Ldap +from scribe.linker import _user_factory import os, socket class LDAPProxy: @@ -117,6 +119,7 @@ self.search_branches[host] = search_branches self.ldap_infos[host] = ldap_infos self.otp_config[host] = login_otp + #log.msg("Eole proxy %s" % eole_proxy) if nb_branches > 1: self.use_branches = True @@ -221,15 +224,28 @@ def callb_auth(self, result_auth, user_id, passwd, search_branch, servers): success, user_data = result_auth - # vérification du résultat de l'authentification sur le serveur précédent - if success == False: - # echec de l'authentification sur ce serveur - if len(servers) > 0: - # test sur le serveur suivant - return self.authenticate(user_id, passwd, search_branch, servers) - else: - # on a essayé sur tous les serveurs - return False, {} + + if success == True and "localhost" not in servers: + #log.msg("MAJ pwd vers localhost") + #recupere de ead2 backend/actions/scribe/userpwd.py + try: + conn = Ldap() + conn.connect() + ldapuser = _user_factory(user_id, conn.connexion) + ldapuser.c_mod_password(user_id, passwd) + conn.close() + except: + pass + + # echec de l'authentification sur ce serveur + if len(servers) > 0: + # test sur le serveur suivant + return self.authenticate(user_id, passwd, search_branch, servers) + + if success == False : + # on a essayé sur tous les serveurs + return False, {} + # on supprime certains champs (mot de passe) for user_attr in self.ignored_attrs: if user_attr in user_data: