aboutsummaryrefslogtreecommitdiffstats
path: root/includes/block
diff options
context:
space:
mode:
authorPetr Pchelko <ppchelko@wikimedia.org>2021-03-15 19:37:57 -0600
committerPpchelko <ppchelko@wikimedia.org>2021-03-18 02:10:45 +0000
commitc04328bdef348033ca60bbceae2d2bbb78ab01f6 (patch)
tree0d10813d5169852d52ece829267a8e7aecfdb703 /includes/block
parent1d7acc3e7e14733a544202fd9a9e4fda525f249f (diff)
downloadmediawikicore-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.php25
-rw-r--r--includes/block/BlockUserFactory.php6
-rw-r--r--includes/block/UnblockUser.php21
-rw-r--r--includes/block/UnblockUserFactory.php5
-rw-r--r--includes/block/UserBlockCommandFactory.php18
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,