I noticed that the ldap return values are used as array indices which is incorrect as ldap names are case insensitive while array names are case sensitive.. Not sure, but this may be the cause of some users difficulties depending on ldap / AD version.... A quick patch / diff is as follows:
--- ldap.inc.php-original 2011-10-13 15:11:12.000000000 +0100
+++ ldap.inc.php-caseFixed 2011-10-18 14:47:50.000000000 +0100
@@ -38,6 +38,7 @@
function authenticate($login,$password) {
$result = false;
+
/ just to be sure /
$this->disconnect();
if ($this->connect()) {
@@ -57,23 +58,24 @@
return $result;
}
-
function userinfo($login) {
$result = array();
+
if ($this->connect() and $this->bind()) {
$r = @ldap_search($this->ds, $this->config['userdn'],
'(&('.$this->ufield.'='.$login.')(objectclass='.$this->config['userclass'].'))');
if ($r) {
$res = @ldap_get_entries($this->ds, $r);
/ associate user fields /;
- $res = $res[0];
+ $res = array_change_key_case($res[0]);
foreach ($this->config['userfields'] as $n => $f) { if ($f == 'group_id') {
function groupinfo($group = '') {
$result = array();
if ($this->connect()) {
Anonymous