Fix: simplification de la synchro ldap2dolibarr
This commit is contained in:
parent
8b0aad8380
commit
beaedf05fc
@ -303,17 +303,6 @@ if (! session_id() || ! isset($_SESSION["dol_login"]))
|
|||||||
if (! $ldapadminpass) $ldapadminpass=$conf->global->LDAP_ADMIN_PASS;
|
if (! $ldapadminpass) $ldapadminpass=$conf->global->LDAP_ADMIN_PASS;
|
||||||
// Fin code pour compatiblité
|
// 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(
|
$params = array(
|
||||||
'userattr' => $ldapuserattr,
|
'userattr' => $ldapuserattr,
|
||||||
'host' => $ldaphost,
|
'host' => $ldaphost,
|
||||||
@ -323,7 +312,6 @@ if (! session_id() || ! isset($_SESSION["dol_login"]))
|
|||||||
'binddn' => $ldapadminlogin,
|
'binddn' => $ldapadminlogin,
|
||||||
'bindpw' => $ldapadminpass,
|
'bindpw' => $ldapadminpass,
|
||||||
'debug' => $ldapdebug,
|
'debug' => $ldapdebug,
|
||||||
'attributes' => $attrArray,
|
|
||||||
'userfilter' => ''
|
'userfilter' => ''
|
||||||
);
|
);
|
||||||
if ($ldapdebug) print "DEBUG: params=".join(',',$params)."<br>\n";
|
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
|
// Authentification Auth OK, on va chercher le login
|
||||||
$login=$aDol->getUsername();
|
$login=$aDol->getUsername();
|
||||||
dolibarr_syslog ("Authentification ok (en mode Pear Base LDAP)");
|
dolibarr_syslog ("Authentification ok (en mode Pear Base LDAP)");
|
||||||
|
|
||||||
// Récupération des attributs de l'utilisateur
|
|
||||||
$attributs = $aDol->getAuthData("attributes");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -357,26 +342,55 @@ if (! session_id() || ! isset($_SESSION["dol_login"]))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Charge l'objet user depuis son login ou son sid
|
// Charge l'objet user depuis son login ou son SID
|
||||||
if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr' && is_array($attributs))
|
if ($conf->ldap->enabled && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr')
|
||||||
{
|
{
|
||||||
require_once(DOL_DOCUMENT_ROOT."/lib/ldap.class.php");
|
require_once(DOL_DOCUMENT_ROOT."/lib/ldap.class.php");
|
||||||
$ldap=new Ldap();
|
$ldap=new Ldap();
|
||||||
$result=$ldap->connect_bind();
|
$result=$ldap->connect_bind();
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
//on récupère le sid
|
// On charge les attributs du user ldap
|
||||||
if ($ldapuserattr == 'samaccountname') $ldapuserattr = 'sAMAccountName';
|
if ($ldapdebug) print "DEBUG: login ldap = ".$login."<br>\n";
|
||||||
if ($ldapdebug) print "DEBUG: attribut ldapuserattr = ".$attributs[$ldapuserattr][0]."<br>\n";
|
$userldap = $ldap->fetch($login);
|
||||||
$user->search_sid = $ldap->getObjectSid($attributs[$ldapuserattr][0]);
|
|
||||||
|
// 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<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";
|
if ($ldapdebug) print "DEBUG: search_sid = ".$user->search_sid."<br>\n";
|
||||||
$result=$user->fetch();
|
$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
|
else
|
||||||
{
|
{
|
||||||
session_destroy();
|
session_destroy();
|
||||||
dolibarr_syslog('Synchro LDAP KO');
|
dolibarr_syslog('Synchro LDAP KO');
|
||||||
if ($ldapdebug) print "DEBUG: Error connect_bind = ".$ldap->error."<br>\n";
|
if ($ldapdebug) print "DEBUG: Error connect_bind = ".$ldap->error."<br>\n";
|
||||||
|
$ldap->close();
|
||||||
|
|
||||||
// On repart sur page accueil
|
// On repart sur page accueil
|
||||||
session_name($sessionname);
|
session_name($sessionname);
|
||||||
@ -423,13 +437,6 @@ if (! isset($_SESSION["dol_login"]))
|
|||||||
$_SESSION["dol_login"]=$user->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());
|
dolibarr_syslog("This is a new started user session. _SESSION['dol_login']=".$_SESSION["dol_login"].' Session id='.session_id());
|
||||||
$user->update_last_login_date();
|
$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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user