forked from Wavyzz/dolibarr
Fix: simplification de la synchro ldap2dolibarr
This commit is contained in:
@@ -303,17 +303,6 @@ if (! session_id() || ! isset($_SESSION["dol_login"]))
|
||||
if (! $ldapadminpass) $ldapadminpass=$conf->global->LDAP_ADMIN_PASS;
|
||||
// Fin code pour compatiblit<69>
|
||||
|
||||
// Si synchro ldap2dolibarr on r<>cup<75>re les attributs de l'utilisateur
|
||||
// afin de les synchroniser <20> chaque connexion
|
||||
if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr')
|
||||
{
|
||||
$attrArray = array(); // r<>cup<75>ration de tous les attributs de l'utilisateur
|
||||
}
|
||||
else
|
||||
{
|
||||
$attrArray = array(''); // aucun attribut r<>cup<75>r<EFBFBD>
|
||||
}
|
||||
|
||||
$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)."<br>\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<75>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<75>re le sid
|
||||
if ($ldapuserattr == 'samaccountname') $ldapuserattr = 'sAMAccountName';
|
||||
if ($ldapdebug) print "DEBUG: attribut ldapuserattr = ".$attributs[$ldapuserattr][0]."<br>\n";
|
||||
$user->search_sid = $ldap->getObjectSid($attributs[$ldapuserattr][0]);
|
||||
// On charge les attributs du user ldap
|
||||
if ($ldapdebug) print "DEBUG: login ldap = ".$login."<br>\n";
|
||||
$userldap = $ldap->fetch($login);
|
||||
|
||||
// On stop si le mot de passe ldap doit etre modifi<66>
|
||||
if ($userldap->pwdlastset == 0)
|
||||
{
|
||||
session_destroy();
|
||||
dolibarr_syslog('User '.$login.' must change password next logon');
|
||||
if ($ldapdebug) print "DEBUG: User ".$login." must change password<br>\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."<br>\n";
|
||||
$result=$user->fetch();
|
||||
if ($result)
|
||||
{
|
||||
//TODO: on v<>rifie si le login <20> changer et on met <20> 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."<br>\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 <20> jour ldap2dolibarr
|
||||
if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr' && is_array($attributs))
|
||||
{
|
||||
//$result = $user->update_ldap2dolibarr($attributs);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user