diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2018-02-23 12:05:50 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2018-02-26 13:33:35 +0100 |
commit | 8acec5309c3a2a8f307d430e48fbd84b8b57b2b2 (patch) | |
tree | b7e46a280d580d3cd619c1e418f7efb5066ace91 /apps/user_ldap/lib | |
parent | b02d3a27bae60363d01e04d7d4bb495415598d91 (diff) | |
download | nextcloud-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.php | 13 |
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; |