summaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/lib
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2018-02-23 12:05:50 +0100
committerArthur Schiwon <blizzz@arthur-schiwon.de>2018-02-26 13:33:35 +0100
commit8acec5309c3a2a8f307d430e48fbd84b8b57b2b2 (patch)
treeb7e46a280d580d3cd619c1e418f7efb5066ace91 /apps/user_ldap/lib
parentb02d3a27bae60363d01e04d7d4bb495415598d91 (diff)
downloadnextcloud-server-8acec5309c3a2a8f307d430e48fbd84b8b57b2b2.tar.gz
nextcloud-server-8acec5309c3a2a8f307d430e48fbd84b8b57b2b2.zip
fix retrieving group members with numerical uids from LDAP
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/user_ldap/lib')
-rw-r--r--apps/user_ldap/lib/Group_LDAP.php13
1 files changed, 7 insertions, 6 deletions
diff --git a/apps/user_ldap/lib/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php
index 3faa96bc2b8..0f4bb2d8b6a 100644
--- a/apps/user_ldap/lib/Group_LDAP.php
+++ b/apps/user_ldap/lib/Group_LDAP.php
@@ -207,6 +207,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
* @param string $dnGroup
* @param array|null &$seen
* @return array|mixed|null
+ * @throws \OC\ServerNotAvailableException
*/
private function _groupMembers($dnGroup, &$seen = null) {
if ($seen === null) {
@@ -220,26 +221,26 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
// used extensively in cron job, caching makes sense for nested groups
$cacheKey = '_groupMembers'.$dnGroup;
$groupMembers = $this->access->connection->getFromCache($cacheKey);
- if(!is_null($groupMembers)) {
+ if($groupMembers !== null) {
return $groupMembers;
}
$seen[$dnGroup] = 1;
$members = $this->access->readAttribute($dnGroup, $this->access->connection->ldapGroupMemberAssocAttr,
$this->access->connection->ldapGroupFilter);
if (is_array($members)) {
- foreach ($members as $memberDN) {
- $allMembers[$memberDN] = 1;
+ foreach ($members as $member) {
+ $allMembers[$member] = 1;
$nestedGroups = $this->access->connection->ldapNestedGroups;
if (!empty($nestedGroups)) {
- $subMembers = $this->_groupMembers($memberDN, $seen);
+ $subMembers = $this->_groupMembers($member, $seen);
if ($subMembers) {
- $allMembers = array_merge($allMembers, $subMembers);
+ $allMembers += $subMembers;
}
}
}
}
- $allMembers = array_merge($allMembers, $this->getDynamicGroupMembers($dnGroup));
+ $allMembers += $this->getDynamicGroupMembers($dnGroup);
$this->access->connection->writeToCache($cacheKey, $allMembers);
return $allMembers;