LDAP2Dolibarr sync script final. Now with scripts sync users and sync groups, all groups and users from LDAP are synced in Dolibarr. To be tested and improved on another LDAP than Active Directory

This commit is contained in:
Maxime Kohlhaas 2013-03-05 13:39:14 +01:00
parent de6d40237d
commit b2c09e9be4

View File

@ -174,10 +174,11 @@ if ($result >= 0)
$userList = array(); $userList = array();
$userIdList = array(); $userIdList = array();
foreach($ldapgroup[$conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS] as $key => $userdn) { foreach($ldapgroup[$conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS] as $key => $userdn) {
if($key == 'count') continue; if($key === 'count') continue;
if(empty($userList[$userdn])) { // Récupération de l'utilisateur if(empty($userList[$userdn])) { // Récupération de l'utilisateur
$userFilter = explode(',', $userdn); $userFilter = explode(',', $userdn);
$userKey = $ldap->getAttributeValues('('.$userFilter[0].')', $conf->global->LDAP_KEY_USERS); $userKey = $ldap->getAttributeValues('('.$userFilter[0].')', $conf->global->LDAP_KEY_USERS);
if(!is_array($userKey)) continue;
$fuser = new User($db); $fuser = new User($db);
@ -187,7 +188,7 @@ if ($result >= 0)
$fuser->fetch('',$userKey[0]); // Chargement du user concerné par le login $fuser->fetch('',$userKey[0]); // Chargement du user concerné par le login
} }
$userList[$userdn] = &$fuser; $userList[$userdn] = $fuser;
} else { } else {
$fuser = &$userList[$userdn]; $fuser = &$userList[$userdn];
} }
@ -195,12 +196,18 @@ if ($result >= 0)
$userIdList[$userdn] = $fuser->id; $userIdList[$userdn] = $fuser->id;
// Ajout de l'utilisateur dans le groupe // Ajout de l'utilisateur dans le groupe
if(!in_array($fuser->id, array_keys($group->members))) $fuser->SetInGroup($group->id, $group->entity); if(!in_array($fuser->id, array_keys($group->members))) {
$fuser->SetInGroup($group->id, $group->entity);
echo $fuser->login.' added'."\n";
}
} }
// 2 - Suppression des utilisateurs du groupe Dolibarr qui ne sont plus dans le groupe LDAP // 2 - Suppression des utilisateurs du groupe Dolibarr qui ne sont plus dans le groupe LDAP
foreach ($group->members as $user_id => $infos) { foreach ($group->members as $guser) {
if(!in_array($user_id, $userIdList)) $fuser->RemoveFromGroup($group->id, $group->entity); if(!in_array($guser->id, $userIdList)) {
$guser->RemoveFromGroup($group->id, $group->entity);
echo $guser->login.' removed'."\n";
}
} }
} }