diff options
author | Craig Andrews <candrews@integralblue.com> | 2010-01-04 13:33:52 -0500 |
---|---|---|
committer | Craig Andrews <candrews@integralblue.com> | 2010-01-04 13:35:11 -0500 |
commit | e440b69e1a3c73796535298b3b20d6678431f9b6 (patch) | |
tree | aba59e718012606291180190737767328a822b7d | |
parent | 783a2e249bac2ccd02b6ae3351dfe83630b71cc0 (diff) |
Allow an authentication plugin with the same provider_name other than the one that actually checked the password to autoregister a user
Allows for SSO-type plugins that don't have any information about the user other than their username to do autoregistration
-rw-r--r-- | plugins/Authentication/AuthenticationPlugin.php | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/plugins/Authentication/AuthenticationPlugin.php b/plugins/Authentication/AuthenticationPlugin.php index a76848b04..75e8d2b76 100644 --- a/plugins/Authentication/AuthenticationPlugin.php +++ b/plugins/Authentication/AuthenticationPlugin.php @@ -99,6 +99,23 @@ abstract class AuthenticationPlugin extends Plugin } } + /** + * Internal AutoRegister event handler + * @param nickname + * @param provider_name + * @param user - the newly registered user + */ + function onAutoRegister($nickname, $provider_name, &$user) + { + if($provider_name == $this->provider_name && $this->autoregistration){ + $user = $this->autoregister($nickname); + if($user){ + User_username::register($user,$nickname,$this->provider_name); + return false; + } + } + } + function onStartCheckPassword($nickname, $password, &$authenticatedUser){ //map the nickname to a username $user_username = new User_username(); @@ -127,13 +144,10 @@ abstract class AuthenticationPlugin extends Plugin } } }else{ - if($this->autoregistration){ - $authenticated = $this->checkPassword($nickname, $password); - if($authenticated){ - $user = $this->autoregister($nickname); - if($user){ - $authenticatedUser = $user; - User_username::register($authenticatedUser,$nickname,$this->provider_name); + $authenticated = $this->checkPassword($nickname, $password); + if($authenticated){ + if(Event::handle('AutoRegister', array($nickname, $this->provider_name, &$authenticatedUser))){ + if($authenticatedUser){ return false; } } |