New hook point to exempt an IP address from the account creation throttle. Redo of...
authorRaimond Spekking <raymond@users.mediawiki.org>
Sun, 21 Aug 2011 16:38:02 +0000 (16:38 +0000)
committerRaimond Spekking <raymond@users.mediawiki.org>
Sun, 21 Aug 2011 16:38:02 +0000 (16:38 +0000)
Needed for a new extension to make (mass) account creation easier for schools/colleges etc

RELEASE-NOTES-1.19
docs/hooks.txt
includes/specials/SpecialUserlogin.php

index 1dd5103..a59e47d 100644 (file)
@@ -45,6 +45,7 @@ production.
   although they are not used there.
 * (bug 30451) Add page_props to RefreshLinks::deleteLinksFromNonexistent
 * (bug 30450) Clear page_props table on page deletion
+* Hook added to check for exempt from account creation throttle
 
 === Bug fixes in 1.19 ===
 * $wgUploadNavigationUrl should be used for file redlinks if
index a120aa9..0ee7e6f 100644 (file)
@@ -849,6 +849,9 @@ $user: The user who is trying to email another user.
 $editToken: The user's edit token.
 &$hookErr: Out-param for the error. Passed as the parameters to OutputPage::showErrorPage.
 
+'exemptFromAccountCreationThrottle': Exemption from the account creation throttle
+$ip: The ip address of the user
+
 'ExtensionTypes': called when generating the extensions credits, use this to change the tables headers
 &$extTypes: associative array of extensions types
 
index ee4d617..ae89765 100644 (file)
@@ -377,17 +377,23 @@ class LoginForm extends SpecialPage {
                        return false;
                }
 
-               if ( $wgAccountCreationThrottle && $wgUser->isPingLimitable() ) {
-                       $key = wfMemcKey( 'acctcreate', 'ip', $ip );
-                       $value = $wgMemc->get( $key );
-                       if ( !$value ) {
-                               $wgMemc->set( $key, 0, 86400 );
-                       }
-                       if ( $value >= $wgAccountCreationThrottle ) {
-                               $this->throttleHit( $wgAccountCreationThrottle );
-                               return false;
+               // Hook point to check for exempt from account creation throttle        
+               if ( !wfRunHooks( 'exemptFromAccountCreationThrottle', array( $ip ) ) ) {
+                       wfDebug( "LoginForm::exemptFromAccountCreationThrottle: a hook allowed account creation w/o throttle\n" );
+               } else {
+                       if ( ( $wgAccountCreationThrottle && $wgUser->isPingLimitable() ) ) {
+                               wfDebugLog( 'CACT', "IN der core Throttle Abfrage\n" );
+                               $key = wfMemcKey( 'acctcreate', 'ip', $ip );
+                               $value = $wgMemc->get( $key );
+                               if ( !$value ) {
+                                       $wgMemc->set( $key, 0, 86400 );
+                               }
+                               if ( $value >= $wgAccountCreationThrottle ) {
+                                       $this->throttleHit( $wgAccountCreationThrottle );
+                                       return false;
+                               }
+                               $wgMemc->incr( $key );
                        }
-                       $wgMemc->incr( $key );
                }
 
                if( !$wgAuth->addUser( $u, $this->mPassword, $this->mEmail, $this->mRealName ) ) {