diff options
Diffstat (limited to 'apps/user_ldap/group_ldap.php')
-rw-r--r-- | apps/user_ldap/group_ldap.php | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php index b29ebe30c51..aac3ed78917 100644 --- a/apps/user_ldap/group_ldap.php +++ b/apps/user_ldap/group_ldap.php @@ -232,7 +232,26 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { * @return bool */ public function groupExists($gid){ - return in_array($gid, $this->getGroups()); + if($this->connection->isCached('groupExists'.$gid)) { + return $this->connection->getFromCache('groupExists'.$gid); + } + + //getting dn, if false the group does not exist. If dn, it may be mapped only, requires more checking. + $dn = $this->username2dn($gid); + if(!$dn) { + $this->connection->writeToCache('groupExists'.$gid, false); + return false; + } + + //if group really still exists, we will be able to read its objectclass + $objcs = $this->readAttribute($dn, 'objectclass'); + if(!$objcs || empty($objcs)) { + $this->connection->writeToCache('groupExists'.$gid, false); + return false; + } + + $this->connection->writeToCache('groupExists'.$gid, true); + return true; } /** |