summaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/group_ldap.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_ldap/group_ldap.php')
-rw-r--r--apps/user_ldap/group_ldap.php21
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;
}
/**