LDAP: no whitespaces after the , in the DNs, resolves conflicts with some servers
This commit is contained in:
parent
1f2b37c08b
commit
2e34673989
1 changed files with 15 additions and 2 deletions
|
@ -185,6 +185,7 @@ class OC_LDAP {
|
|||
}
|
||||
|
||||
static public function dn2ocname($dn, $ldapname = null, $isUser = true) {
|
||||
$dn = self::sanitizeDN($dn);
|
||||
$table = self::getMapTable($isUser);
|
||||
if($isUser) {
|
||||
$nameAttribute = self::conf('ldapUserDisplayName');
|
||||
|
@ -362,6 +363,7 @@ class OC_LDAP {
|
|||
*/
|
||||
static private function mapComponent($dn, $ocname, $isUser = true) {
|
||||
$table = self::getMapTable($isUser);
|
||||
$dn = self::sanitizeDN($dn);
|
||||
|
||||
$sqliteAdjustment = '';
|
||||
$dbtype = OCP\Config::getSystemValue('dbtype');
|
||||
|
@ -488,7 +490,7 @@ class OC_LDAP {
|
|||
if($key != 'dn'){
|
||||
$selection[$i][$key] = $item[$key][0];
|
||||
} else {
|
||||
$selection[$i][$key] = $item[$key];
|
||||
$selection[$i][$key] = self::sanitizeDN($item[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -503,7 +505,11 @@ class OC_LDAP {
|
|||
$key = strtolower($attr[0]);
|
||||
|
||||
if(isset($item[$key])) {
|
||||
$selection[] = $item[$key];
|
||||
if($key == 'dn') {
|
||||
$selection[] = self::sanitizeDN($item[$key]);
|
||||
} else {
|
||||
$selection[] = $item[$key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -514,6 +520,13 @@ class OC_LDAP {
|
|||
return $findings;
|
||||
}
|
||||
|
||||
static private function sanitizeDN($dn) {
|
||||
//OID sometimes gives back DNs with whitespace after the comma a la "uid=foo, cn=bar, dn=..." We need to tackle this!
|
||||
$dn = preg_replace('/,\s+/',',',$dn);
|
||||
|
||||
return $dn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief combines the input filters with AND
|
||||
* @param $filters array, the filters to connect
|
||||
|
|
Loading…
Reference in a new issue