LDAP: don't fall over case insensitive LDAP attribute name
This commit is contained in:
parent
a9d7c67bf2
commit
7a5028317d
|
@ -46,7 +46,12 @@ class OC_GROUP_LDAP extends OC_Group_Backend {
|
||||||
if(!$dn_group || !$dn_user) {
|
if(!$dn_group || !$dn_user) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$members = OC_LDAP::readAttribute($dn_group, $this->ldapGroupMemberAssocAttr);
|
//usually, LDAP attributes are said to be case insensitive. But there are exceptions of course.
|
||||||
|
$read = ($members = OC_LDAP::readAttribute($dn_group, $this->ldapGroupMemberAssocAttr))
|
||||||
|
|| ($members = OC_LDAP::readAttribute($dn_group, strtolower($this->ldapGroupMemberAssocAttr)));
|
||||||
|
if(!$read) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//extra work if we don't get back user DNs
|
//extra work if we don't get back user DNs
|
||||||
//TODO: this can be done with one LDAP query
|
//TODO: this can be done with one LDAP query
|
||||||
|
@ -96,6 +101,11 @@ class OC_GROUP_LDAP extends OC_Group_Backend {
|
||||||
$this->ldapGroupMemberAssocAttr.'='.$uid
|
$this->ldapGroupMemberAssocAttr.'='.$uid
|
||||||
));
|
));
|
||||||
$groups = OC_LDAP::fetchListOfGroups($filter, array(OC_LDAP::conf('ldapGroupDisplayName'),'dn'));
|
$groups = OC_LDAP::fetchListOfGroups($filter, array(OC_LDAP::conf('ldapGroupDisplayName'),'dn'));
|
||||||
|
if(count($groups) == 0) {
|
||||||
|
//usually, LDAP attributes are said to be case insensitive. But there are exceptions... So we try it once more
|
||||||
|
$filter = str_replace($this->ldapGroupMemberAssocAttr, strtolower($this->ldapGroupMemberAssocAttr), $filter);
|
||||||
|
$groups = OC_LDAP::fetchListOfGroups($filter, array(OC_LDAP::conf('ldapGroupDisplayName'),'dn'));
|
||||||
|
}
|
||||||
$userGroups = OC_LDAP::ownCloudGroupNames($groups);
|
$userGroups = OC_LDAP::ownCloudGroupNames($groups);
|
||||||
|
|
||||||
return array_unique($userGroups, SORT_LOCALE_STRING);
|
return array_unique($userGroups, SORT_LOCALE_STRING);
|
||||||
|
@ -110,7 +120,14 @@ class OC_GROUP_LDAP extends OC_Group_Backend {
|
||||||
if(!$groupDN) {
|
if(!$groupDN) {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
$members = OC_LDAP::readAttribute($groupDN, $this->ldapGroupMemberAssocAttr);
|
|
||||||
|
//usually, LDAP attributes are said to be case insensitive. But there are exceptions of course.
|
||||||
|
$read = ($members = OC_LDAP::readAttribute($groupDN, $this->ldapGroupMemberAssocAttr))
|
||||||
|
|| ($members = OC_LDAP::readAttribute($groupDN, strtolower($this->ldapGroupMemberAssocAttr)));
|
||||||
|
if(!$read) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
$result = array();
|
$result = array();
|
||||||
foreach($members as $member) {
|
foreach($members as $member) {
|
||||||
if(strtolower($this->ldapGroupMemberAssocAttr) == 'memberuid') {
|
if(strtolower($this->ldapGroupMemberAssocAttr) == 'memberuid') {
|
||||||
|
|
Loading…
Reference in New Issue