diff options
author | Umherirrender <umherirrender_de.wp@web.de> | 2020-04-08 20:19:49 +0200 |
---|---|---|
committer | Umherirrender <umherirrender_de.wp@web.de> | 2020-10-15 20:11:23 +0200 |
commit | 8d71235c20d812d204b32fbfb2c43b4af594885c (patch) | |
tree | 2d3594f0811e4e6bf93a77821130845c3a8f2524 | |
parent | b6326b8a7d264d17ce4af4cf2672afbd05a4508f (diff) | |
download | mediawikicore-8d71235c20d812d204b32fbfb2c43b4af594885c.tar.gz mediawikicore-8d71235c20d812d204b32fbfb2c43b4af594885c.zip |
Use UserNameUtils in AuthManager
Bug: T141495
Change-Id: I1c1cb5bf9807ee18e3cc4be84f8a3d6a52959add
9 files changed, 63 insertions, 16 deletions
diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 757195be9b4c..5615646d1a5c 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -144,7 +144,8 @@ return [ $services->getObjectFactory(), $services->getPermissionManager(), $services->getHookContainer(), - $services->getReadOnlyMode() + $services->getReadOnlyMode(), + $services->getUserNameUtils() ); $authManager->setLogger( LoggerFactory::getInstance( 'authentication' ) ); return $authManager; diff --git a/includes/auth/AuthManager.php b/includes/auth/AuthManager.php index 7fd0989862ea..2aac4c941b0f 100644 --- a/includes/auth/AuthManager.php +++ b/includes/auth/AuthManager.php @@ -28,6 +28,7 @@ use MediaWiki\HookContainer\HookContainer; use MediaWiki\HookContainer\HookRunner; use MediaWiki\MediaWikiServices; use MediaWiki\Permissions\PermissionManager; +use MediaWiki\User\UserNameUtils; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; @@ -143,6 +144,9 @@ class AuthManager implements LoggerAwareInterface { /** @var PermissionManager */ private $permManager; + /** @var UserNameUtils */ + private $userNameUtils; + /** @var AuthenticationProvider[] */ private $allAuthenticationProviders = []; @@ -183,6 +187,7 @@ class AuthManager implements LoggerAwareInterface { * @param PermissionManager $permManager * @param HookContainer $hookContainer * @param ReadOnlyMode $readOnlyMode + * @param UserNameUtils $userNameUtils */ public function __construct( WebRequest $request, @@ -190,7 +195,8 @@ class AuthManager implements LoggerAwareInterface { ObjectFactory $objectFactory, PermissionManager $permManager, HookContainer $hookContainer, - ReadOnlyMode $readOnlyMode + ReadOnlyMode $readOnlyMode, + UserNameUtils $userNameUtils ) { $this->request = $request; $this->config = $config; @@ -200,6 +206,7 @@ class AuthManager implements LoggerAwareInterface { $this->hookRunner = new HookRunner( $hookContainer ); $this->setLogger( new NullLogger() ); $this->readOnlyMode = $readOnlyMode; + $this->userNameUtils = $userNameUtils; } /** @@ -1648,7 +1655,7 @@ class AuthManager implements LoggerAwareInterface { } // Is the username creatable? - if ( !User::isCreatableName( $username ) ) { + if ( !$this->userNameUtils->isCreatable( $username ) ) { $this->logger->debug( __METHOD__ . ': name "{username}" is not creatable', [ 'username' => $username, ] ); @@ -1841,7 +1848,7 @@ class AuthManager implements LoggerAwareInterface { } if ( $user->getId() === 0 ) { - if ( !User::isUsableName( $user->getName() ) ) { + if ( !$this->userNameUtils->isUsable( $user->getName() ) ) { $msg = wfMessage( 'noname' ); } else { $msg = wfMessage( 'authmanager-userdoesnotexist', $user->getName() ); diff --git a/tests/phpunit/includes/auth/AbstractPasswordPrimaryAuthenticationProviderTest.php b/tests/phpunit/includes/auth/AbstractPasswordPrimaryAuthenticationProviderTest.php index dfb26207332e..92794d46d5be 100644 --- a/tests/phpunit/includes/auth/AbstractPasswordPrimaryAuthenticationProviderTest.php +++ b/tests/phpunit/includes/auth/AbstractPasswordPrimaryAuthenticationProviderTest.php @@ -130,7 +130,8 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiIntegr $services->getObjectFactory(), $services->getPermissionManager(), $services->getHookContainer(), - $services->getReadOnlyMode() + $services->getReadOnlyMode(), + $services->getUserNameUtils() ); $provider = $this->getMockForAbstractClass( diff --git a/tests/phpunit/includes/auth/AuthManagerTest.php b/tests/phpunit/includes/auth/AuthManagerTest.php index e9f2a6907477..b92dbd5af324 100644 --- a/tests/phpunit/includes/auth/AuthManagerTest.php +++ b/tests/phpunit/includes/auth/AuthManagerTest.php @@ -14,6 +14,7 @@ use MediaWiki\MediaWikiServices; use MediaWiki\Permissions\PermissionManager; use MediaWiki\Session\SessionInfo; use MediaWiki\Session\UserInfo; +use MediaWiki\User\UserNameUtils; use PHPUnit\Framework\Assert; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; @@ -47,6 +48,9 @@ class AuthManagerTest extends \MediaWikiIntegrationTestCase { /** @var array */ private $authHooks; + /** @var UserNameUtils */ + protected $userNameUtils; + /** @var LoggerInterface */ protected $logger; @@ -193,6 +197,9 @@ class AuthManagerTest extends \MediaWikiIntegrationTestCase { $this->objectFactory ); } + if ( $regen || !$this->userNameUtils ) { + $this->userNameUtils = MediaWikiServices::getInstance()->getUserNameUtils(); + } if ( !$this->logger ) { $this->logger = new \TestLogger(); } @@ -206,7 +213,8 @@ class AuthManagerTest extends \MediaWikiIntegrationTestCase { $this->objectFactory, $this->permManager, $this->hookContainer, - $this->readOnlyMode + $this->readOnlyMode, + $this->userNameUtils ); $this->manager->setLogger( $this->logger ); $this->managerPriv = TestingAccessWrapper::newFromObject( $this->manager ); diff --git a/tests/phpunit/includes/auth/ConfirmLinkSecondaryAuthenticationProviderTest.php b/tests/phpunit/includes/auth/ConfirmLinkSecondaryAuthenticationProviderTest.php index 7acaaf0c8e2a..ecf556b2cf96 100644 --- a/tests/phpunit/includes/auth/ConfirmLinkSecondaryAuthenticationProviderTest.php +++ b/tests/phpunit/includes/auth/ConfirmLinkSecondaryAuthenticationProviderTest.php @@ -4,6 +4,7 @@ namespace MediaWiki\Auth; use MediaWiki\MediaWikiServices; use MediaWiki\Permissions\PermissionManager; +use MediaWiki\User\UserNameUtils; use Psr\Container\ContainerInterface; use Wikimedia\TestingAccessWrapper; @@ -143,7 +144,8 @@ class ConfirmLinkSecondaryAuthenticationProviderTest extends \MediaWikiIntegrati MediaWikiServices::getInstance()->getObjectFactory(), $this->createNoOpMock( PermissionManager::class ), MediaWikiServices::getInstance()->getHookContainer(), - MediaWikiServices::getInstance()->getReadOnlyMode() + MediaWikiServices::getInstance()->getReadOnlyMode(), + $this->createNoOpMock( UserNameUtils::class ) ] ) ->getMock(); $manager->expects( $this->any() )->method( 'allowsAuthenticationDataChange' ) @@ -236,10 +238,20 @@ class ConfirmLinkSecondaryAuthenticationProviderTest extends \MediaWikiIntegrati $request = new \FauxRequest(); $services = $this->createNoOpMock( ContainerInterface::class ); $objectFactory = new \Wikimedia\ObjectFactory( $services ); - $permManager = MediaWikiServices::getInstance()->getPermissionManager(); - $hookContainer = MediaWikiServices::getInstance()->getHookContainer(); - $readOnlyMode = MediaWikiServices::getInstance()->getReadOnlyMode(); - $manager = new AuthManager( $request, $config, $objectFactory, $permManager, $hookContainer, $readOnlyMode ); + $mwServices = MediaWikiServices::getInstance(); + $permManager = $mwServices->getPermissionManager(); + $hookContainer = $mwServices->getHookContainer(); + $readOnlyMode = $mwServices->getReadOnlyMode(); + $userNameUtils = $mwServices->getUserNameUtils(); + $manager = new AuthManager( + $request, + $config, + $objectFactory, + $permManager, + $hookContainer, + $readOnlyMode, + $userNameUtils + ); $provider->setManager( $manager ); $provider = TestingAccessWrapper::newFromObject( $provider ); diff --git a/tests/phpunit/includes/auth/EmailNotificationSecondaryAuthenticationProviderTest.php b/tests/phpunit/includes/auth/EmailNotificationSecondaryAuthenticationProviderTest.php index b2d65021f7d9..767f075df240 100644 --- a/tests/phpunit/includes/auth/EmailNotificationSecondaryAuthenticationProviderTest.php +++ b/tests/phpunit/includes/auth/EmailNotificationSecondaryAuthenticationProviderTest.php @@ -4,6 +4,7 @@ namespace MediaWiki\Auth; use MediaWiki\MediaWikiServices; use MediaWiki\Permissions\PermissionManager; +use MediaWiki\User\UserNameUtils; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; use Wikimedia\TestingAccessWrapper; @@ -66,13 +67,15 @@ class EmailNotificationSecondaryAuthenticationProviderTest extends \MediaWikiInt $objectFactory = new \Wikimedia\ObjectFactory( $services ); $permManager = $this->createNoOpMock( PermissionManager::class ); $hookContainer = $this->createHookContainer(); + $userNameUtils = $this->createNoOpMock( UserNameUtils::class ); $authManager = new AuthManager( new \FauxRequest(), new \HashConfig(), $objectFactory, $permManager, $hookContainer, - MediaWikiServices::getInstance()->getReadOnlyMode() + MediaWikiServices::getInstance()->getReadOnlyMode(), + $userNameUtils ); $creator = $this->getMockBuilder( \User::class )->getMock(); diff --git a/tests/phpunit/includes/auth/LocalPasswordPrimaryAuthenticationProviderTest.php b/tests/phpunit/includes/auth/LocalPasswordPrimaryAuthenticationProviderTest.php index d7646e874ff2..0bf0c1c4e90f 100644 --- a/tests/phpunit/includes/auth/LocalPasswordPrimaryAuthenticationProviderTest.php +++ b/tests/phpunit/includes/auth/LocalPasswordPrimaryAuthenticationProviderTest.php @@ -4,6 +4,7 @@ namespace MediaWiki\Auth; use MediaWiki\MediaWikiServices; use MediaWiki\Permissions\PermissionManager; +use MediaWiki\User\UserNameUtils; use Psr\Container\ContainerInterface; use Wikimedia\TestingAccessWrapper; @@ -44,6 +45,7 @@ class LocalPasswordPrimaryAuthenticationProviderTest extends \MediaWikiIntegrati $services = $this->createNoOpAbstractMock( ContainerInterface::class ); $objectFactory = new \Wikimedia\ObjectFactory( $services ); $permManager = $this->createNoOpMock( PermissionManager::class ); + $userNameUtils = $this->createNoOpMock( UserNameUtils::class ); $this->manager = new AuthManager( new \FauxRequest(), @@ -51,7 +53,8 @@ class LocalPasswordPrimaryAuthenticationProviderTest extends \MediaWikiIntegrati $objectFactory, $permManager, $hookContainer, - MediaWikiServices::getInstance()->getReadOnlyMode() + MediaWikiServices::getInstance()->getReadOnlyMode(), + $userNameUtils ); } $this->validity = \Status::newGood(); diff --git a/tests/phpunit/includes/auth/ResetPasswordSecondaryAuthenticationProviderTest.php b/tests/phpunit/includes/auth/ResetPasswordSecondaryAuthenticationProviderTest.php index 25b4164af76d..7468512ef97c 100644 --- a/tests/phpunit/includes/auth/ResetPasswordSecondaryAuthenticationProviderTest.php +++ b/tests/phpunit/includes/auth/ResetPasswordSecondaryAuthenticationProviderTest.php @@ -4,6 +4,7 @@ namespace MediaWiki\Auth; use MediaWiki\MediaWikiServices; use MediaWiki\Permissions\PermissionManager; +use MediaWiki\User\UserNameUtils; use Psr\Container\ContainerInterface; use Wikimedia\TestingAccessWrapper; @@ -92,8 +93,16 @@ class ResetPasswordSecondaryAuthenticationProviderTest extends \MediaWikiIntegra $objectFactory = new \Wikimedia\ObjectFactory( $services ); $permManager = $this->createNoOpMock( PermissionManager::class ); $hookContainer = $this->createHookContainer(); - $manager = new AuthManager( new \FauxRequest, $config, $objectFactory, - $permManager, $hookContainer, MediaWikiServices::getInstance()->getReadOnlyMode() ); + $userNameUtils = $this->createNoOpMock( UserNameUtils::class ); + $manager = new AuthManager( + new \FauxRequest, + $config, + $objectFactory, + $permManager, + $hookContainer, + MediaWikiServices::getInstance()->getReadOnlyMode(), + $userNameUtils + ); $provider->setManager( $manager ); $provider = TestingAccessWrapper::newFromObject( $provider ); diff --git a/tests/phpunit/includes/auth/TemporaryPasswordPrimaryAuthenticationProviderTest.php b/tests/phpunit/includes/auth/TemporaryPasswordPrimaryAuthenticationProviderTest.php index 1415f3956c4a..70a9b4a3270c 100644 --- a/tests/phpunit/includes/auth/TemporaryPasswordPrimaryAuthenticationProviderTest.php +++ b/tests/phpunit/includes/auth/TemporaryPasswordPrimaryAuthenticationProviderTest.php @@ -4,6 +4,7 @@ namespace MediaWiki\Auth; use MediaWiki\MediaWikiServices; use MediaWiki\Permissions\PermissionManager; +use MediaWiki\User\UserNameUtils; use Psr\Container\ContainerInterface; use Wikimedia\ScopedCallback; use Wikimedia\TestingAccessWrapper; @@ -44,6 +45,7 @@ class TemporaryPasswordPrimaryAuthenticationProviderTest extends \MediaWikiInteg $services = $this->createNoOpAbstractMock( ContainerInterface::class ); $objectFactory = new \Wikimedia\ObjectFactory( $services ); $permManager = $this->createNoOpMock( PermissionManager::class ); + $userNameUtils = $this->createNoOpMock( UserNameUtils::class ); $this->manager = new AuthManager( new \FauxRequest(), @@ -51,7 +53,8 @@ class TemporaryPasswordPrimaryAuthenticationProviderTest extends \MediaWikiInteg $objectFactory, $permManager, $hookContainer, - MediaWikiServices::getInstance()->getReadOnlyMode() + MediaWikiServices::getInstance()->getReadOnlyMode(), + $userNameUtils ); } $this->validity = \Status::newGood(); |