浏览代码

Sync rfc2307 group membership from LDAP
With rfc2307 LDAP scheme, group members are listed in the memberUid attribute, as simple uid, not as full DN like rfc2307bis, or AD-style groups

Daniel Berteaud 7 年之前
父节点
当前提交
f4bfd8704d
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      scripts/user/sync_groups_ldap2dolibarr.php

+ 7 - 2
scripts/user/sync_groups_ldap2dolibarr.php

@@ -186,8 +186,13 @@ if ($result >= 0)
 			foreach($ldapgroup[$conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS] as $key => $userdn) {
 				if($key === 'count') continue;
 				if(empty($userList[$userdn])) { // Récupération de l'utilisateur
-					$userFilter = explode(',', $userdn);
-					$userKey = $ldap->getAttributeValues('('.$userFilter[0].')', $conf->global->LDAP_KEY_USERS);
+					// Schéma rfc2307: les membres sont listés dans l'attribut memberUid sous form de login uniquement
+					if ($conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS === 'memberUid'){
+						$userKey = array($userdn);
+					} else { // Pour les autres schémas, les membres sont listés sous forme de DN complets
+						$userFilter = explode(',', $userdn);
+						$userKey = $ldap->getAttributeValues('('.$userFilter[0].')', $conf->global->LDAP_KEY_USERS);
+					}
 					if(!is_array($userKey)) continue;
 
 					$fuser = new User($db);