// //group specific settings
protected $ldapGroupFilter;
protected $ldapGroupDisplayName;
- protected $ldapGroupMemberAttr;
public function __construct() {
$this->ldapGroupFilter = OC_Appconfig::getValue('user_ldap', 'ldap_group_filter', '(objectClass=posixGroup)');
$this->ldapGroupDisplayName = OC_Appconfig::getValue('user_ldap', 'ldap_group_display_name', 'cn');
- $this->ldapGroupMemberAttr = OC_Appconfig::getValue('user_ldap', 'ldap_group_member_attr', 'memberUid');
}
/**
$this->ldapGroupDisplayName.'='.$gid
));
- return $this->retrieveList($filter, $this->ldapGroupMemberAttr, false);
+ $userDNs = $this->retrieveList($filter, LDAP_GROUP_MEMBER_ASSOC_ATTR, false);
+ $users = array();
+ $attr = OC_LDAP::conf('ldapUserDisplayName');
+ foreach($userDNs as $dn) {
+ $uid = OC_LDAP::readAttribute($dn, $attr);
+ if($uid) {
+// if(($uid = OC_LDAP::readAttribute($dn, $attr)) != false){
+ $users[] = $uid;
+ }
+ }
+ return $users;
}
/**
*
*/
-define('LDAP_GROUP_MEMBER_ASSOC_ATTR','memberUid');
+define('LDAP_GROUP_MEMBER_ASSOC_ATTR','uniquemember');
//needed to unbind, because we use OC_LDAP only statically
class OC_LDAP_DESTRUCTOR {
}
}
+ /**
+ * @brief reads a given attribute for an LDAP record identified by a DN
+ * @param $dn the record in question
+ * @param $attr the attribute that shall be retrieved
+ * @returns the value on success, false otherwise
+ *
+ * Reads an attribute from an LDAP entry
+ */
+ static public function readAttribute($dn, $attr) {
+ $attr = strtolower($attr);
+ $cr = self::getConnectionResource();
+
+ $rr = ldap_read($cr, $dn, 'objectClass=*', array($attr));
+ $er = ldap_first_entry($cr, $rr);
+ $result = ldap_get_attributes($cr, $er);
+ if($result['count'] > 0){
+ return $result[$attr][0];
+ }
+ return false;
+ }
+
/**
* @brief executes an LDAP search, optimized for Users
* @param $filter the LDAP filter for the search