ApiLogin: Don't try to add block info if there's no block
authorBrad Jorsch <bjorsch@wikimedia.org>
Wed, 2 Sep 2015 13:14:20 +0000 (09:14 -0400)
committerBrad Jorsch <bjorsch@wikimedia.org>
Wed, 2 Sep 2015 13:14:20 +0000 (09:14 -0400)
Extensions such as CentralAuth can use various hooks to return
USER_BLOCKED or CREATE_BLOCKED despite there being no local block.

Bug: T111082
Change-Id: I3433a35547967852fc30bd56274392a186004a38

includes/api/ApiLogin.php

index 8c65310..c66e215 100644 (file)
@@ -145,10 +145,10 @@ class ApiLogin extends ApiBase {
                        case LoginForm::CREATE_BLOCKED:
                                $result['result'] = 'CreateBlocked';
                                $result['details'] = 'Your IP address is blocked from account creation';
-                               $result = array_merge(
-                                       $result,
-                                       ApiQueryUserInfo::getBlockInfo( $context->getUser()->getBlock() )
-                               );
+                               $block = $context->getUser()->getBlock();
+                               if ( $block ) {
+                                       $result = array_merge( $result, ApiQueryUserInfo::getBlockInfo( $block ) );
+                               }
                                break;
 
                        case LoginForm::THROTTLED:
@@ -159,10 +159,10 @@ class ApiLogin extends ApiBase {
 
                        case LoginForm::USER_BLOCKED:
                                $result['result'] = 'Blocked';
-                               $result = array_merge(
-                                       $result,
-                                       ApiQueryUserInfo::getBlockInfo( User::newFromName( $params['name'] )->getBlock() )
-                               );
+                               $block = User::newFromName( $params['name'] )->getBlock();
+                               if ( $block ) {
+                                       $result = array_merge( $result, ApiQueryUserInfo::getBlockInfo( $block ) );
+                               }
                                break;
 
                        case LoginForm::ABORTED: