X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FLdapCommon%2FLdapCommon.php;h=ef31313b8fc796d8c8245b87cf40c1d4883b7674;hb=2766c2aeecd20fc9ac0c7437a8d6f55abc447899;hp=7dea1f0ed420e1c282f8d433a42666071200b304;hpb=10f6e14134cd00d018127d99f90ada5c52805e39;p=quix0rs-gnu-social.git diff --git a/plugins/LdapCommon/LdapCommon.php b/plugins/LdapCommon/LdapCommon.php index 7dea1f0ed4..ef31313b8f 100644 --- a/plugins/LdapCommon/LdapCommon.php +++ b/plugins/LdapCommon/LdapCommon.php @@ -60,18 +60,22 @@ class LdapCommon $this->ldap_config = $this->get_ldap_config(); if(!isset($this->host)){ - throw new Exception(_m("A host must be specified.")); + // TRANS: Exception thrown when initialising the LDAP Common plugin fails because of an incorrect configuration. + throw new Exception(_m('A host must be specified.')); } if(!isset($this->basedn)){ + // TRANS: Exception thrown when initialising the LDAP Common plugin fails because of an incorrect configuration. throw new Exception(_m('"basedn" must be specified.')); } if(!isset($this->attributes['username'])){ + // TRANS: Exception thrown when initialising the LDAP Common plugin fails because of an incorrect configuration. throw new Exception(_m('The username attribute must be set.')); } } function onAutoload($cls) { + // we've added an extra include-path in the beginning of this file switch ($cls) { case 'MemcacheSchemaCache': @@ -90,6 +94,8 @@ class LdapCommon require_once 'Net/LDAP2/Entry.php'; return false; } + + return parent::onAutoload($cls); } function get_ldap_config(){ @@ -122,15 +128,19 @@ class LdapCommon // if we were called with a config, assume caller will handle // incorrect username/password (LDAP_INVALID_CREDENTIALS) if (isset($config) && $err->getCode() == 0x31) { - throw new LdapInvalidCredentialsException('Could not connect to LDAP server: '.$err->getMessage()); + // TRANS: Exception thrown in the LDAP Common plugin when LDAP server is not available. + // TRANS: %s is the error message. + throw new LdapInvalidCredentialsException(sprintf(_m('Could not connect to LDAP server: %s'),$err->getMessage())); } - throw new Exception('Could not connect to LDAP server: '.$err->getMessage()); + // TRANS: Exception thrown in the LDAP Common plugin when LDAP server is not available. + // TRANS: %s is the error message. + throw new Exception(sprintf(_m('Could not connect to LDAP server: %s.'),$err->getMessage())); } - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { $cacheObj = new MemcacheSchemaCache( array('c'=>$c, - 'cacheKey' => common_cache_key('ldap_schema:' . $config_id))); + 'cacheKey' => Cache::key('ldap_schema:' . $config_id))); $ldap->registerSchemaCache($cacheObj); } self::$ldap_connections[$config_id] = $ldap; @@ -140,10 +150,16 @@ class LdapCommon function checkPassword($username, $password) { - $entry = $this->get_user($username); + $entry = $this->get_user($username,array('dn' => 'dn')); if(!$entry){ return false; }else{ + if(empty($password)) { + //NET_LDAP2 will do an anonymous bind if bindpw is not set / empty string + //which causes all login attempts that involve a blank password to appear + //to succeed. Which is obviously not good. + return false; + } $config = $this->get_ldap_config(); $config['binddn']=$entry->dn(); $config['bindpw']=$password; @@ -159,10 +175,10 @@ class LdapCommon function changePassword($username,$oldpassword,$newpassword) { if(! isset($this->attributes['password']) || !isset($this->password_encoding)){ - //throw new Exception(_('Sorry, changing LDAP passwords is not supported at this time')); + //throw new Exception(_m('Sorry, changing LDAP passwords is not supported at this time.')); return false; } - $entry = $this->get_user($username); + $entry = $this->get_user($username,array('dn' => 'dn')); if(!$entry){ return false; }else{