From faccc978b4c395bd1f75b8f50dc43f6661ec207a Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Wed, 30 Jan 2013 16:50:28 +0100 Subject: [PATCH] LDAP : start implementing user update function after LDAP connexion --- htdocs/core/login/functions_ldap.php | 6 +++++- htdocs/user/class/user.class.php | 30 +++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/htdocs/core/login/functions_ldap.php b/htdocs/core/login/functions_ldap.php index 37e55e62e71..b0239a80d96 100644 --- a/htdocs/core/login/functions_ldap.php +++ b/htdocs/core/login/functions_ldap.php @@ -148,6 +148,8 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) // ldap2dolibarr synchronisation if ($login && ! empty($conf->ldap->enabled) && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') { + dol_syslog("functions_ldap::check_user_password_ldap Sync ldap2dolibarr"); + // On charge les attributs du user ldap if ($ldapdebug) print "DEBUG: login ldap = ".$login."
\n"; $resultFetchLdapUser = $ldap->fetch($login,$userSearchFilter); @@ -164,6 +166,7 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) $resultFetchUser=$user->fetch('',$login,$sid); if ($resultFetchUser > 0) { + dol_syslog("functions_ldap::check_user_password_ldap Sync user found id=".$user->id); // On verifie si le login a change et on met a jour les attributs dolibarr if ($user->login != $ldap->login && $ldap->login) { @@ -171,7 +174,8 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) $user->update($user); // TODO Que faire si update echoue car on update avec un login deja existant. } - //$resultUpdate = $user->update_ldap2dolibarr(); + + $resultUpdate = $user->update_ldap2dolibarr($ldap); } } } diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index daf7b7ade4c..52472297eb2 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1153,7 +1153,7 @@ class User extends CommonObject { // Si mot de passe saisi et different de celui en base $result=$this->setPassword($user,$this->pass,0,$notrigger,$nosyncmemberpass); - if (! $nbrowsaffected) $nbrowsaffected++; + if (! $nbrowsaffected) $nbrowsaffected++; } } @@ -2072,6 +2072,34 @@ class User extends CommonObject } } + /** + * Update user using data from the LDAP + * // TODO: Voir pourquoi le update met à jour avec toutes les valeurs vide (global $user écrase ?) + */ + function update_ldap2dolibarr(&$ldapuser) { + global $user, $conf; + + $this->firstname=$ldapuser->{$conf->global->LDAP_FIELD_FIRSTNAME}; + $this->lastname=$ldapuser->{$conf->global->LDAP_FIELD_NAME}; + $this->login=$ldapuser->{$conf->global->LDAP_FIELD_LOGIN}; + $this->pass=$ldapuser->{$conf->global->LDAP_FIELD_PASSWORD}; + $this->pass_indatabase_crypted=$ldapuser->{$conf->global->LDAP_FIELD_PASSWORD_CRYPTED}; + + $this->office_phone=$ldapuser->{$conf->global->LDAP_FIELD_PHONE}; + $this->user_mobile=$ldapuser->{$conf->global->LDAP_FIELD_MOBILE}; + $this->office_fax=$ldapuser->{$conf->global->LDAP_FIELD_FAX}; + $this->email=$ldapuser->{$conf->global->LDAP_FIELD_MAIL}; + $this->ldap_sid=$ldapuser->{$conf->global->LDAP_FIELD_SID}; + + $this->job=$ldapuser->{$conf->global->LDAP_FIELD_TITLE}; + $this->note=$ldapuser->{$conf->global->LDAP_FIELD_DESCRIPTION}; + + $result = $this->update($user); + + dol_syslog(get_class($this)."::update_ldap2dolibarr result=".$result, LOG_DEBUG); + + return $result; + } } ?>