diff options
author | Petr Pchelko <ppchelko@wikimedia.org> | 2021-03-15 19:37:57 -0600 |
---|---|---|
committer | Ppchelko <ppchelko@wikimedia.org> | 2021-03-18 02:10:45 +0000 |
commit | c04328bdef348033ca60bbceae2d2bbb78ab01f6 (patch) | |
tree | 0d10813d5169852d52ece829267a8e7aecfdb703 /includes/block | |
parent | 1d7acc3e7e14733a544202fd9a9e4fda525f249f (diff) | |
download | mediawikicore-c04328bdef348033ca60bbceae2d2bbb78ab01f6.tar.gz mediawikicore-c04328bdef348033ca60bbceae2d2bbb78ab01f6.zip |
Convert (Un)BlockUser to Authority
Change-Id: I5084b5523f15b7d55b2f5dc67ae19ec7059799ad
Diffstat (limited to 'includes/block')
-rw-r--r-- | includes/block/BlockUser.php | 25 | ||||
-rw-r--r-- | includes/block/BlockUserFactory.php | 6 | ||||
-rw-r--r-- | includes/block/UnblockUser.php | 21 | ||||
-rw-r--r-- | includes/block/UnblockUserFactory.php | 5 | ||||
-rw-r--r-- | includes/block/UserBlockCommandFactory.php | 18 |
5 files changed, 52 insertions, 23 deletions
diff --git a/includes/block/BlockUser.php b/includes/block/BlockUser.php index 660038a1a5ca..575ff564dbc4 100644 --- a/includes/block/BlockUser.php +++ b/includes/block/BlockUser.php @@ -29,6 +29,8 @@ use MediaWiki\Block\Restriction\PageRestriction; use MediaWiki\Config\ServiceOptions; use MediaWiki\HookContainer\HookContainer; use MediaWiki\HookContainer\HookRunner; +use MediaWiki\Permissions\Authority; +use MediaWiki\User\UserFactory; use MediaWiki\User\UserIdentity; use Message; use Psr\Log\LoggerInterface; @@ -63,7 +65,7 @@ class BlockUser { */ private $targetType; - /** @var User Performer of the block */ + /** @var Authority Performer of the block */ private $performer; /** @var ServiceOptions */ @@ -84,6 +86,9 @@ class BlockUser { /** @var DatabaseBlockStore */ private $databaseBlockStore; + /** @var UserFactory */ + private $userFactory; + /** @var LoggerInterface */ private $logger; @@ -163,9 +168,10 @@ class BlockUser { * @param BlockUtils $blockUtils * @param HookContainer $hookContainer * @param DatabaseBlockStore $databaseBlockStore + * @param UserFactory $userFactory * @param LoggerInterface $logger * @param string|UserIdentity $target Target of the block - * @param User $performer Performer of the block + * @param Authority $performer Performer of the block * @param string $expiry Expiry of the block (timestamp or 'infinity') * @param string $reason Reason of the block * @param bool[] $blockOptions Block options @@ -189,9 +195,10 @@ class BlockUser { BlockUtils $blockUtils, HookContainer $hookContainer, DatabaseBlockStore $databaseBlockStore, + UserFactory $userFactory, LoggerInterface $logger, $target, - User $performer, + Authority $performer, string $expiry, string $reason, array $blockOptions, @@ -210,10 +217,11 @@ class BlockUser { $this->blockUtils = $blockUtils; $this->hookRunner = new HookRunner( $hookContainer ); $this->databaseBlockStore = $databaseBlockStore; + $this->userFactory = $userFactory; $this->logger = $logger; // Process block target - list( $this->target, $rawTargetType ) = AbstractBlock::parseTarget( $target ); + list( $this->target, $rawTargetType ) = $this->blockUtils->parseBlockTarget( $target ); if ( $rawTargetType !== null ) { // Guard against invalid targets $this->targetType = $rawTargetType; } else { @@ -345,7 +353,7 @@ class BlockUser { $isSitewide = !$this->isPartial(); $block->setTarget( $this->target ); - $block->setBlocker( $this->performer ); + $block->setBlocker( $this->performer->getUser() ); $block->setReason( $this->reason ); $block->setExpiry( $this->expiryTime ); $block->isCreateAccountBlocked( $this->isCreateAccountBlocked ); @@ -496,7 +504,8 @@ class BlockUser { $block = $this->configureBlock(); $denyReason = [ 'hookaborted' ]; - if ( !$this->hookRunner->onBlockIp( $block, $this->performer, $denyReason ) ) { + $legacyUser = $this->userFactory->newFromAuthority( $this->performer ); + if ( !$this->hookRunner->onBlockIp( $block, $legacyUser, $denyReason ) ) { $status = Status::newGood(); foreach ( $denyReason as $key ) { $status->fatal( $key ); @@ -538,7 +547,7 @@ class BlockUser { RevisionDeleteUser::suppressUserName( $this->target, $this->target->getId() ); } - $this->hookRunner->onBlockIpComplete( $block, $this->performer, $priorBlock ); + $this->hookRunner->onBlockIpComplete( $block, $legacyUser, $priorBlock ); // DatabaseBlock constructor sanitizes certain block options on insert $this->isEmailBlocked = $block->isEmailBlocked(); @@ -625,7 +634,7 @@ class BlockUser { $logEntry = new ManualLogEntry( $logType, $logAction ); $logEntry->setTarget( Title::makeTitle( NS_USER, $this->target ) ); $logEntry->setComment( $this->reason ); - $logEntry->setPerformer( $this->performer ); + $logEntry->setPerformer( $this->performer->getUser() ); $logEntry->setParameters( $this->constructLogParams() ); // Relate log ID to block ID (T27763) $logEntry->setRelations( [ 'ipb_id' => $block->getId() ] ); diff --git a/includes/block/BlockUserFactory.php b/includes/block/BlockUserFactory.php index 42529453d2a6..45151a7451c4 100644 --- a/includes/block/BlockUserFactory.php +++ b/includes/block/BlockUserFactory.php @@ -21,8 +21,8 @@ namespace MediaWiki\Block; +use MediaWiki\Permissions\Authority; use MediaWiki\User\UserIdentity; -use User; /** * @since 1.36 @@ -32,7 +32,7 @@ interface BlockUserFactory { * Create BlockUser * * @param string|UserIdentity $target Target of the block - * @param User $performer Performer of the block + * @param Authority $performer Performer of the block * @param string $expiry Expiry of the block (timestamp or 'infinity') * @param string $reason Reason of the block * @param array $blockOptions Block options @@ -43,7 +43,7 @@ interface BlockUserFactory { */ public function newBlockUser( $target, - User $performer, + Authority $performer, string $expiry, string $reason = '', array $blockOptions = [], diff --git a/includes/block/UnblockUser.php b/includes/block/UnblockUser.php index 390d6801fec9..f66c79ef01bc 100644 --- a/includes/block/UnblockUser.php +++ b/includes/block/UnblockUser.php @@ -25,6 +25,8 @@ use ChangeTags; use ManualLogEntry; use MediaWiki\HookContainer\HookContainer; use MediaWiki\HookContainer\HookRunner; +use MediaWiki\Permissions\Authority; +use MediaWiki\User\UserFactory; use RevisionDeleteUser; use Status; use TitleValue; @@ -42,6 +44,9 @@ class UnblockUser { /** @var DatabaseBlockStore */ private $blockStore; + /** @var UserFactory */ + private $userFactory; + /** @var HookRunner */ private $hookRunner; @@ -54,7 +59,7 @@ class UnblockUser { /** @var DatabaseBlock|null */ private $block; - /** @var User */ + /** @var Authority */ private $performer; /** @var string */ @@ -66,18 +71,20 @@ class UnblockUser { /** * @param BlockPermissionCheckerFactory $blockPermissionCheckerFactory * @param DatabaseBlockStore $blockStore + * @param UserFactory $userFactory * @param HookContainer $hookContainer * @param User|string $target - * @param User $performer + * @param Authority $performer * @param string $reason * @param string[] $tags */ public function __construct( BlockPermissionCheckerFactory $blockPermissionCheckerFactory, DatabaseBlockStore $blockStore, + UserFactory $userFactory, HookContainer $hookContainer, $target, - User $performer, + Authority $performer, string $reason, array $tags = [] ) { @@ -88,6 +95,7 @@ class UnblockUser { $performer ); $this->blockStore = $blockStore; + $this->userFactory = $userFactory; $this->hookRunner = new HookRunner( $hookContainer ); // Process params @@ -165,7 +173,8 @@ class UnblockUser { } $denyReason = [ 'hookaborted' ]; - if ( !$this->hookRunner->onUnblockUser( $this->block, $this->performer, $denyReason ) ) { + $legacyUser = $this->userFactory->newFromAuthority( $this->performer ); + if ( !$this->hookRunner->onUnblockUser( $this->block, $legacyUser, $denyReason ) ) { foreach ( $denyReason as $key ) { $status->fatal( $key ); } @@ -178,7 +187,7 @@ class UnblockUser { return $status; } - $this->hookRunner->onUnblockUserComplete( $this->block, $this->performer ); + $this->hookRunner->onUnblockUserComplete( $this->block, $legacyUser ); // Unset _deleted fields as needed if ( $this->block->getHideName() ) { @@ -215,7 +224,7 @@ class UnblockUser { $logEntry->setTarget( $page ); } $logEntry->setComment( $this->reason ); - $logEntry->setPerformer( $this->performer ); + $logEntry->setPerformer( $this->performer->getUser() ); $logEntry->addTags( $this->tags ); $logEntry->setRelations( [ 'ipb_id' => $this->block->getId() ] ); $logId = $logEntry->insert(); diff --git a/includes/block/UnblockUserFactory.php b/includes/block/UnblockUserFactory.php index 8bfaa6ae2be1..67ccfd696b0b 100644 --- a/includes/block/UnblockUserFactory.php +++ b/includes/block/UnblockUserFactory.php @@ -21,6 +21,7 @@ namespace MediaWiki\Block; +use MediaWiki\Permissions\Authority; use User; /** @@ -29,7 +30,7 @@ use User; interface UnblockUserFactory { /** * @param User|string $target - * @param User $performer + * @param Authority $performer * @param string $reason * @param string[] $tags * @@ -37,7 +38,7 @@ interface UnblockUserFactory { */ public function newUnblockUser( $target, - User $performer, + Authority $performer, string $reason, array $tags = [] ) : UnblockUser; diff --git a/includes/block/UserBlockCommandFactory.php b/includes/block/UserBlockCommandFactory.php index 228857023b2d..ee812064741a 100644 --- a/includes/block/UserBlockCommandFactory.php +++ b/includes/block/UserBlockCommandFactory.php @@ -23,6 +23,8 @@ namespace MediaWiki\Block; use MediaWiki\Config\ServiceOptions; use MediaWiki\HookContainer\HookContainer; +use MediaWiki\Permissions\Authority; +use MediaWiki\User\UserFactory; use MediaWiki\User\UserIdentity; use Psr\Log\LoggerInterface; use User; @@ -48,6 +50,9 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { /** @var DatabaseBlockStore */ private $blockStore; + /** @var UserFactory */ + private $userFactory; + /** @var LoggerInterface */ private $logger; @@ -63,6 +68,7 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { * @param BlockUtils $blockUtils * @param DatabaseBlockStore $blockStore * @param BlockRestrictionStore $blockRestrictionStore + * @param UserFactory $userFactory * @param LoggerInterface $logger */ public function __construct( @@ -72,6 +78,7 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { BlockUtils $blockUtils, DatabaseBlockStore $blockStore, BlockRestrictionStore $blockRestrictionStore, + UserFactory $userFactory, LoggerInterface $logger ) { $options->assertRequiredOptions( self::CONSTRUCTOR_OPTIONS ); @@ -82,6 +89,7 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { $this->blockUtils = $blockUtils; $this->blockStore = $blockStore; $this->blockRestrictionStore = $blockRestrictionStore; + $this->userFactory = $userFactory; $this->logger = $logger; } @@ -89,7 +97,7 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { * Create BlockUser * * @param string|UserIdentity $target Target of the block - * @param User $performer Performer of the block + * @param Authority $performer Performer of the block * @param string $expiry Expiry of the block (timestamp or 'infinity') * @param string $reason Reason of the block * @param array $blockOptions Block options @@ -100,7 +108,7 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { */ public function newBlockUser( $target, - User $performer, + Authority $performer, string $expiry, string $reason = '', array $blockOptions = [], @@ -118,6 +126,7 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { $this->blockUtils, $this->hookContainer, $this->blockStore, + $this->userFactory, $this->logger, $target, $performer, @@ -131,7 +140,7 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { /** * @param User|string $target - * @param User $performer + * @param Authority $performer * @param string $reason * @param string[] $tags * @@ -139,13 +148,14 @@ class UserBlockCommandFactory implements BlockUserFactory, UnblockUserFactory { */ public function newUnblockUser( $target, - User $performer, + Authority $performer, string $reason, array $tags = [] ) : UnblockUser { return new UnblockUser( $this->blockPermissionCheckerFactory, $this->blockStore, + $this->userFactory, $this->hookContainer, $target, $performer, |