diff --git a/plugins/kolab_auth/kolab_auth_ldap.php b/plugins/kolab_auth/kolab_auth_ldap.php index 3a83d10e..4584c60b 100644 --- a/plugins/kolab_auth/kolab_auth_ldap.php +++ b/plugins/kolab_auth/kolab_auth_ldap.php @@ -391,17 +391,11 @@ class kolab_auth_ldap extends rcube_ldap_generic list($usr, $dom) = explode('@', $user); // unrealm domain, user login can contain a domain alias - if ($dom != $domain && ($r_domain = $this->find_domain($dom))) { - // $dom is a domain DN string? - if (strpos($r_domain, '=')) { - $dc = $r_domain; - } - else { - $dc = 'dc=' . implode(',dc=', explode('.', $r_domain)); - } + if ($dom != $domain && ($dc = $this->find_domain($dom))) { + // @FIXME: we should replace domain in $user, I suppose } } - else if ($domain && !strpos($user, '@')) { + else if ($domain) { $user .= '@' . $domain; } @@ -426,7 +420,7 @@ class kolab_auth_ldap extends rcube_ldap_generic * * @param string $domain Domain name * - * @return string Domain name or domain DN string + * @return string Domain DN string */ function find_domain($domain) { @@ -458,7 +452,9 @@ class kolab_auth_ldap extends rcube_ldap_generic return $entry['inetdomainbasedn']; } - return is_array($entry[$name_attr]) ? 'dc=' . implode(',dc=', explode('.', $entry[$name_attr][0])) : 'dc=' . implode(',dc=', explode('.', $entry[$name_attr])); + $domain = is_array($entry[$name_attr]) ? $entry[$name_attr][0] : $entry[$name_attr]; + + return $domain ? 'dc=' . implode(',dc=', explode('.', $domain)) : null; } }