exit(1);
}
-require_once INSTALLDIR.'/plugins/Authentication/AuthenticationPlugin.php';
require_once 'Net/LDAP2.php';
class LdapAuthenticationPlugin extends AuthenticationPlugin
throw new Exception("if password_changeable is set, the password attribute and password_encoding must also be specified");
}
}
+
+ function onAutoload($cls)
+ {
+ switch ($cls)
+ {
+ case 'MemcacheSchemaCache':
+ require_once(INSTALLDIR.'/plugins/LdapAuthentication/MemcacheSchemaCache.php');
+ return false;
+ }
+ }
//---interface implementation---//
}
}
- function autoRegister($username)
+ function autoRegister($username, $nickname)
{
+ if(is_null($nickname)){
+ $nickname = $username;
+ }
$entry = $this->ldap_get_user($username,$this->attributes);
if($entry){
$registration_data = array();
if(isset($registration_data['email']) && !empty($registration_data['email'])){
$registration_data['email_confirmed']=true;
}
+ $registration_data['nickname'] = $nickname;
//set the database saved password to a random string.
$registration_data['password']=common_good_rand(16);
return User::register($registration_data);
return false;
}
+
+ function suggestNicknameForUsername($username)
+ {
+ $entry = $this->ldap_get_user($username, $this->attributes);
+ if(!$entry){
+ //this really shouldn't happen
+ return $username;
+ }else{
+ $nickname = $entry->getValue($this->attributes['nickname'],'single');
+ if($nickname){
+ return $nickname;
+ }else{
+ return $username;
+ }
+ }
+ }
//---utility functions---//
function ldap_get_config(){
return false;
}
if($config == null) $this->default_ldap=$ldap;
+
+ $c = common_memcache();
+ if (!empty($c)) {
+ $cacheObj = new MemcacheSchemaCache(
+ array('c'=>$c,
+ 'cacheKey' => common_cache_key('ldap_schema:' . crc32(serialize($config)))));
+ $ldap->registerSchemaCache($cacheObj);
+ }
return $ldap;
}
$options = array(
'attributes' => $attributes
);
- $search = $ldap->search(null,$filter,$options);
+ $search = $ldap->search($this->basedn, $filter, $options);
if (PEAR::isError($search)) {
common_log(LOG_WARNING, 'Error while getting DN for user: '.$search->getMessage());
return false;
}
- if($search->count()==0){
+ $searchcount = $search->count();
+ if($searchcount == 0) {
return false;
- }else if($search->count()==1){
+ }else if($searchcount == 1) {
$entry = $search->shiftEntry();
return $entry;
}else{
- common_log(LOG_WARNING, 'Found ' . $search->count() . ' ldap user with the username: ' . $username);
+ common_log(LOG_WARNING, 'Found ' . $searchcount . ' ldap user with the username: ' . $username);
return false;
}
}
return $str;
}
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'LDAP Authentication',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Craig Andrews',
+ 'homepage' => 'http://status.net/wiki/Plugin:LdapAuthentication',
+ 'rawdescription' =>
+ _m('The LDAP Authentication plugin allows for StatusNet to handle authentication through LDAP.'));
+ return true;
+ }
}