From: Gergő Tisza Date: Tue, 16 Aug 2016 05:52:44 +0000 (+0000) Subject: Log failure reasons in ApiLogin X-Git-Tag: 1.31.0-rc.0~6023^2 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dcompta/comptes/journal.php?a=commitdiff_plain;h=d18624ca797923797823fd29bbad2555e5735c6d;p=lhc%2Fweb%2Fwiklou.git Log failure reasons in ApiLogin Bug: T142600 Change-Id: Id5af923ef10c31fc15e5d4da43ce220e1258b723 --- diff --git a/includes/api/ApiLogin.php b/includes/api/ApiLogin.php index b9f65b370f..344135c952 100644 --- a/includes/api/ApiLogin.php +++ b/includes/api/ApiLogin.php @@ -155,10 +155,14 @@ class ApiLogin extends ApiBase { $authRes = 'Failed'; $message = $res->message; \MediaWiki\Logger\LoggerFactory::getInstance( 'authentication' ) - ->info( __METHOD__ . ': Authentication failed: ' . $message->plain() ); + ->info( __METHOD__ . ': Authentication failed: ' + . $message->inLanguage( 'en' )->plain() ); break; default: + \MediaWiki\Logger\LoggerFactory::getInstance( 'authentication' ) + ->info( __METHOD__ . ': Authentication failed due to unsupported response type: ' + . $res->status, $this->getAuthenticationResponseLogData( $res ) ); $authRes = 'Aborted'; break; } @@ -273,4 +277,32 @@ class ApiLogin extends ApiBase { public function getHelpUrls() { return 'https://www.mediawiki.org/wiki/API:Login'; } + + /** + * Turns an AuthenticationResponse into a hash suitable for passing to Logger + * @param AuthenticationResponse $response + * @return array + */ + protected function getAuthenticationResponseLogData( AuthenticationResponse $response ) { + $ret = [ + 'status' => $response->status, + ]; + if ( $response->message ) { + $ret['message'] = $response->message->inLanguage( 'en' )->plain(); + }; + $reqs = [ + 'neededRequests' => $response->neededRequests, + 'createRequest' => $response->createRequest, + 'linkRequest' => $response->linkRequest, + ]; + foreach ( $reqs as $k => $v ) { + if ( $v ) { + $v = is_array( $v ) ? $v : [ $v ]; + $reqClasses = array_unique( array_map( 'get_class', $v ) ); + sort( $reqClasses ); + $ret[$k] = implode( ', ', $reqClasses ); + } + } + return $ret; + } }