From: Brion Vibber Date: Wed, 5 Jan 2011 20:26:20 +0000 (-0800) Subject: Fixes for RegisterThrottle plugin: alt registration methods (OpenID, FBConnect, Twitt... X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=d0d39b51b8b85a86d8d62a4327d2f119d003cb78;p=quix0rs-gnu-social.git Fixes for RegisterThrottle plugin: alt registration methods (OpenID, FBConnect, Twitter) weren't triggering the throttle check or recording of IPs. Added StartRegistrationTry/EndRegistrationTry calls into those three, and moved the actual recording hook to EndUserRegister which is guaranteed to be called from User::register (so we don't need to worry about other auth methods forgetting to call the other UI-code hooks). --- diff --git a/plugins/Facebook/FBConnectAuth.php b/plugins/Facebook/FBConnectAuth.php index d6d3786261..33c975d650 100644 --- a/plugins/Facebook/FBConnectAuth.php +++ b/plugins/Facebook/FBConnectAuth.php @@ -232,6 +232,10 @@ class FBConnectauthAction extends Action function createNewUser() { + if (!Event::handle('StartRegistrationTry', array($this))) { + return; + } + if (common_config('site', 'closed')) { // TRANS: Client error trying to register with registrations not allowed. $this->clientError(_m('Registration not allowed.')); @@ -300,6 +304,8 @@ class FBConnectauthAction extends Action common_debug('Facebook Connect Plugin - ' . "Registered new user $user->id from Facebook user $this->fbuid"); + Event::handle('EndRegistrationTry', array($this)); + common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303); } diff --git a/plugins/OpenID/finishopenidlogin.php b/plugins/OpenID/finishopenidlogin.php index 01dd61edb1..6c4e713897 100644 --- a/plugins/OpenID/finishopenidlogin.php +++ b/plugins/OpenID/finishopenidlogin.php @@ -247,6 +247,10 @@ class FinishopenidloginAction extends Action { # FIXME: save invite code before redirect, and check here + if (!Event::handle('StartRegistrationTry', array($this))) { + return; + } + if (common_config('site', 'closed')) { // TRANS: OpenID plugin message. No new user registration is allowed on the site. $this->clientError(_m('Registration not allowed.')); @@ -362,6 +366,9 @@ class FinishopenidloginAction extends Action common_rememberme($user); } unset($_SESSION['openid_rememberme']); + + Event::handle('EndRegistrationTry', array($this)); + common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303); } diff --git a/plugins/RegisterThrottle/RegisterThrottlePlugin.php b/plugins/RegisterThrottle/RegisterThrottlePlugin.php index 0078d3c600..e3982427da 100644 --- a/plugins/RegisterThrottle/RegisterThrottlePlugin.php +++ b/plugins/RegisterThrottle/RegisterThrottlePlugin.php @@ -167,28 +167,24 @@ class RegisterThrottlePlugin extends Plugin } /** - * Called after someone registers. + * Called after someone registers, by any means. * * We record the successful registration and IP address. * - * @param Action $action Action that is being executed + * @param Profile $profile new user's profile + * @param User $user new user * * @return boolean hook value * */ - function onEndRegistrationTry($action) + function onEndUserRegister($profile, $user) { $ipaddress = $this->_getIpAddress(); if (empty($ipaddress)) { - throw new ServerException(_m('Cannot find IP address.')); - } - - $user = common_current_user(); - - if (empty($user)) { - throw new ServerException(_m('Cannot find user after successful registration.')); + // User registration can happen from command-line scripts etc. + return true; } $reg = new Registration_ip(); diff --git a/plugins/TwitterBridge/twitterauthorization.php b/plugins/TwitterBridge/twitterauthorization.php index 931a037230..33ef71fcdd 100644 --- a/plugins/TwitterBridge/twitterauthorization.php +++ b/plugins/TwitterBridge/twitterauthorization.php @@ -419,6 +419,10 @@ class TwitterauthorizationAction extends Action function createNewUser() { + if (!Event::handle('StartRegistrationTry', array($this))) { + return; + } + if (common_config('site', 'closed')) { $this->clientError(_m('Registration not allowed.')); return; @@ -492,6 +496,8 @@ class TwitterauthorizationAction extends Action common_debug('TwitterBridge Plugin - ' . "Registered new user $user->id from Twitter user $this->twuid"); + Event::handle('EndRegistrationTry', array($this)); + common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303); }