Page MenuHomePhabricator

TypeError: Argument 1 passed to MediaWiki\Extensions\OAuth\Entity\UserEntity::newFromMWUser() must be an instance of User, boolean given, called in /srv/mediawiki/php-1.38.0-wmf.5/extensions/OAuth/src/Repository/ScopeRepository.php on line 79
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   TypeError: Argument 1 passed to MediaWiki\Extensions\OAuth\Entity\UserEntity::newFromMWUser() must be an instance of User, boolean given, called in /srv/mediawiki/php-1.38.0-wmf.5/extensions/OAuth/src/Repository/ScopeRepository
exception.trace
from /srv/mediawiki/php-1.38.0-wmf.5/extensions/OAuth/src/Entity/UserEntity.php(21)
#0 /srv/mediawiki/php-1.38.0-wmf.5/extensions/OAuth/src/Repository/ScopeRepository.php(79): MediaWiki\Extensions\OAuth\Entity\UserEntity::newFromMWUser(boolean)
#1 /srv/mediawiki/php-1.38.0-wmf.5/vendor/league/oauth2-server/src/Grant/AuthCodeGrant.php(122): MediaWiki\Extensions\OAuth\Repository\ScopeRepository->finalizeScopes(array, string, MediaWiki\Extensions\OAuth\Entity\ClientEntity, integer)
#2 /srv/mediawiki/php-1.38.0-wmf.5/vendor/league/oauth2-server/src/AuthorizationServer.php(208): League\OAuth2\Server\Grant\AuthCodeGrant->respondToAccessTokenRequest(GuzzleHttp\Psr7\ServerRequest, League\OAuth2\Server\ResponseTypes\BearerTokenResponse, DateInterval)
#3 /srv/mediawiki/php-1.38.0-wmf.5/extensions/OAuth/src/AuthorizationProvider/AccessToken.php(22): League\OAuth2\Server\AuthorizationServer->respondToAccessTokenRequest(GuzzleHttp\Psr7\ServerRequest, MediaWiki\Extensions\OAuth\Response)
#4 /srv/mediawiki/php-1.38.0-wmf.5/extensions/OAuth/src/Rest/Handler/AccessToken.php(40): MediaWiki\Extensions\OAuth\AuthorizationProvider\AccessToken->getAccessTokens(GuzzleHttp\Psr7\ServerRequest, MediaWiki\Extensions\OAuth\Response)
#5 /srv/mediawiki/php-1.38.0-wmf.5/includes/Rest/Router.php(403): MediaWiki\Extensions\OAuth\Rest\Handler\AccessToken->execute()
#6 /srv/mediawiki/php-1.38.0-wmf.5/includes/Rest/Router.php(330): MediaWiki\Rest\Router->executeHandler(MediaWiki\Extensions\OAuth\Rest\Handler\AccessToken)
#7 /srv/mediawiki/php-1.38.0-wmf.5/includes/Rest/EntryPoint.php(165): MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#8 /srv/mediawiki/php-1.38.0-wmf.5/includes/Rest/EntryPoint.php(130): MediaWiki\Rest\EntryPoint->execute()
#9 /srv/mediawiki/php-1.38.0-wmf.5/rest.php(31): MediaWiki\Rest\EntryPoint::main()
#10 /srv/mediawiki/w/rest.php(3): require(string)
#11 {main}
Impact
Notes

A single occurrence spotted.

Details

Request URL
https://commons.wikimedia.org/w/rest.php/oauth2/access_token
Related Changes in Gerrit:

Event Timeline

At a glance, this would happen if the user is locked, or does not have a local account. The latter has been a bit of a pain point for certain OAuth use cases (see e.g. T208443: User cannot log in with OAuth on a wiki before visiting that wiki directly), we came up with $wgCentralAuthAutoCreateWikis to somewhat work around it.

Change 732741 had a related patch set uploaded (by Gergő Tisza; author: Gergő Tisza):

[mediawiki/extensions/OAuth@master] Handle non-existent local user in ScopeRepository::finalizeScopes

https://gerrit.wikimedia.org/r/732741

Change 732741 merged by jenkins-bot:

[mediawiki/extensions/OAuth@master] Handle non-existent local user in ScopeRepository::finalizeScopes

https://gerrit.wikimedia.org/r/732741

Umherirrender assigned this task to Tgr.