$this->ldap_config = $this->get_ldap_config();
if(!isset($this->host)){
- throw new Exception("must specify a host");
+ // 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)){
- throw new Exception("must specify a 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'])){
- throw new Exception("username attribute must be set.");
+ // 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':
require_once 'Net/LDAP2/Entry.php';
return false;
}
+
+ return true;
}
function get_ldap_config(){
// 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;
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;
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{
$ldap = $this->get_ldap_connection($config);
$entry = $this->get_user($username,array(),$ldap);
-
+
$newCryptedPassword = $this->hashPassword($newpassword, $this->password_encoding);
if ($newCryptedPassword===false) {
return false;
* @return string The hashed password.
*
*/
-
- function hashPassword( $passwordClear, $encodageType )
+ function hashPassword( $passwordClear, $encodageType )
{
$encodageType = strtolower( $encodageType );
switch( $encodageType ) {
- case 'crypt':
- $cryptedPassword = '{CRYPT}' . crypt($passwordClear,$this->randomSalt(2));
+ case 'crypt':
+ $cryptedPassword = '{CRYPT}' . crypt($passwordClear,$this->randomSalt(2));
break;
-
+
case 'ext_des':
// extended des crypt. see OpenBSD crypt man page.
if ( ! defined( 'CRYPT_EXT_DES' ) || CRYPT_EXT_DES == 0 ) {return FALSE;} //Your system crypt library does not support extended DES encryption.
* @param int $length The length of the salt string to generate.
* @return string The generated salt string.
*/
-
- function randomSalt( $length )
+ function randomSalt( $length )
{
$possible = '0123456789'.
'abcdefghijklmnopqrstuvwxyz'.
return $str;
}
-
}
class LdapInvalidCredentialsException extends Exception
{
-
}