From beaedf05fca67310232f91ecb75a4d36a0050bd0 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 1 Jun 2007 22:01:53 +0000 Subject: [PATCH] Fix: simplification de la synchro ldap2dolibarr --- htdocs/main.inc.php | 65 +++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index b49e4f1e32b..940b786824a 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -303,17 +303,6 @@ if (! session_id() || ! isset($_SESSION["dol_login"])) if (! $ldapadminpass) $ldapadminpass=$conf->global->LDAP_ADMIN_PASS; // Fin code pour compatiblité - // Si synchro ldap2dolibarr on récupère les attributs de l'utilisateur - // afin de les synchroniser à chaque connexion - if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') - { - $attrArray = array(); // récupération de tous les attributs de l'utilisateur - } - else - { - $attrArray = array(''); // aucun attribut récupéré - } - $params = array( 'userattr' => $ldapuserattr, 'host' => $ldaphost, @@ -322,8 +311,7 @@ if (! session_id() || ! isset($_SESSION["dol_login"])) 'basedn' => $ldapdn, 'binddn' => $ldapadminlogin, 'bindpw' => $ldapadminpass, - 'debug' => $ldapdebug, - 'attributes' => $attrArray, + 'debug' => $ldapdebug, 'userfilter' => '' ); if ($ldapdebug) print "DEBUG: params=".join(',',$params)."
\n"; @@ -337,9 +325,6 @@ if (! session_id() || ! isset($_SESSION["dol_login"])) // Authentification Auth OK, on va chercher le login $login=$aDol->getUsername(); dolibarr_syslog ("Authentification ok (en mode Pear Base LDAP)"); - - // Récupération des attributs de l'utilisateur - $attributs = $aDol->getAuthData("attributes"); } else { @@ -357,26 +342,55 @@ if (! session_id() || ! isset($_SESSION["dol_login"])) } } - // Charge l'objet user depuis son login ou son sid - if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr' && is_array($attributs)) + // Charge l'objet user depuis son login ou son SID + if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') { require_once(DOL_DOCUMENT_ROOT."/lib/ldap.class.php"); $ldap=new Ldap(); $result=$ldap->connect_bind(); if ($result > 0) { - //on récupère le sid - if ($ldapuserattr == 'samaccountname') $ldapuserattr = 'sAMAccountName'; - if ($ldapdebug) print "DEBUG: attribut ldapuserattr = ".$attributs[$ldapuserattr][0]."
\n"; - $user->search_sid = $ldap->getObjectSid($attributs[$ldapuserattr][0]); + // On charge les attributs du user ldap + if ($ldapdebug) print "DEBUG: login ldap = ".$login."
\n"; + $userldap = $ldap->fetch($login); + + // On stop si le mot de passe ldap doit etre modifié + if ($userldap->pwdlastset == 0) + { + session_destroy(); + dolibarr_syslog('User '.$login.' must change password next logon'); + if ($ldapdebug) print "DEBUG: User ".$login." must change password
\n"; + $ldap->close(); + + // On repart sur page accueil + session_name($sessionname); + session_start(); + $langs->load('admin'); + $_SESSION["loginmesg"]=$langs->trans("UserMustChangePassNextLogon"); + header('Location: '.DOL_URL_ROOT.'/index.php'); + exit; + } + + // On recherche le user dolibarr en fonction de son SID ldap + $user->search_sid = $ldap->getObjectSid($login); if ($ldapdebug) print "DEBUG: search_sid = ".$user->search_sid."
\n"; $result=$user->fetch(); + if ($result) + { + //TODO: on vérifie si le login à changer et on met à jour les attributs dolibarr + if ($user->login != $ldap->login) + { + + } + //$resultUpdate = $user->update_ldap2dolibarr($attributs); + } } else { session_destroy(); dolibarr_syslog('Synchro LDAP KO'); if ($ldapdebug) print "DEBUG: Error connect_bind = ".$ldap->error."
\n"; + $ldap->close(); // On repart sur page accueil session_name($sessionname); @@ -423,13 +437,6 @@ if (! isset($_SESSION["dol_login"])) $_SESSION["dol_login"]=$user->login; dolibarr_syslog("This is a new started user session. _SESSION['dol_login']=".$_SESSION["dol_login"].' Session id='.session_id()); $user->update_last_login_date(); - - // Mise à jour ldap2dolibarr - if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr' && is_array($attributs)) - { - //$result = $user->update_ldap2dolibarr($attributs); - } - }