From 3a5c8f0f25584cddfc3692e13d70a9ff3c4055a1 Mon Sep 17 00:00:00 2001 From: Petr Pchelko Date: Thu, 7 Jan 2021 21:00:28 -0600 Subject: [PATCH] Convert logging namespace to Authority Change-Id: Icb44acf275a7f9231c4d229b3886ed8a36d5cbd4 --- includes/logging/BlockLogFormatter.php | 6 +-- includes/logging/ContentModelLogFormatter.php | 6 +-- includes/logging/DeleteLogFormatter.php | 7 +-- includes/logging/LogEventsList.php | 47 +++++++------------ includes/logging/LogFormatter.php | 4 +- includes/logging/LogPager.php | 19 ++------ includes/logging/MergeLogFormatter.php | 6 +-- includes/logging/MoveLogFormatter.php | 6 +-- includes/logging/ProtectLogFormatter.php | 5 +- includes/specials/SpecialLog.php | 1 - 10 files changed, 30 insertions(+), 77 deletions(-) diff --git a/includes/logging/BlockLogFormatter.php b/includes/logging/BlockLogFormatter.php index fcb8e0d0d88..349dd8b28d1 100644 --- a/includes/logging/BlockLogFormatter.php +++ b/includes/logging/BlockLogFormatter.php @@ -22,8 +22,6 @@ * @since 1.25 */ -use MediaWiki\MediaWikiServices; - /** * This class formats block log entries. * @@ -151,9 +149,7 @@ class BlockLogFormatter extends LogFormatter { $linkRenderer = $this->getLinkRenderer(); if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden || !( $subtype === 'block' || $subtype === 'reblock' ) - || !MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $this->context->getUser(), 'block' ) + || !$this->context->getAuthority()->isAllowed( 'block' ) ) { return ''; } diff --git a/includes/logging/ContentModelLogFormatter.php b/includes/logging/ContentModelLogFormatter.php index 23c582c30f2..ae42a2f83a4 100644 --- a/includes/logging/ContentModelLogFormatter.php +++ b/includes/logging/ContentModelLogFormatter.php @@ -1,7 +1,5 @@ context->getLanguage(); @@ -14,9 +12,7 @@ class ContentModelLogFormatter extends LogFormatter { public function getActionLinks() { if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden || $this->entry->getSubtype() !== 'change' - || !MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $this->context->getUser(), 'editcontentmodel' ) + || !$this->context->getAuthority()->isAllowed( 'editcontentmodel' ) ) { return ''; } diff --git a/includes/logging/DeleteLogFormatter.php b/includes/logging/DeleteLogFormatter.php index 758353924f7..cc0078b1e50 100644 --- a/includes/logging/DeleteLogFormatter.php +++ b/includes/logging/DeleteLogFormatter.php @@ -23,7 +23,6 @@ * @since 1.22 */ -use MediaWiki\MediaWikiServices; use MediaWiki\Revision\RevisionRecord; /** @@ -144,10 +143,8 @@ class DeleteLogFormatter extends LogFormatter { } public function getActionLinks() { - $user = $this->context->getUser(); $linkRenderer = $this->getLinkRenderer(); - $permissionManager = MediaWikiServices::getInstance()->getPermissionManager(); - if ( !$permissionManager->userHasRight( $user, 'deletedhistory' ) + if ( !$this->context->getAuthority()->isAllowed( 'deletedhistory' ) || $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) { return ''; @@ -157,7 +154,7 @@ class DeleteLogFormatter extends LogFormatter { case 'delete': // Show undelete link case 'delete_redir': case 'delete_redir2': - if ( $permissionManager->userHasRight( $user, 'undelete' ) ) { + if ( $this->context->getAuthority()->isAllowed( 'undelete' ) ) { $message = 'undeletelink'; } else { $message = 'undeleteviewlink'; diff --git a/includes/logging/LogEventsList.php b/includes/logging/LogEventsList.php index 61055c9fd5b..e2959633bf0 100644 --- a/includes/logging/LogEventsList.php +++ b/includes/logging/LogEventsList.php @@ -26,6 +26,7 @@ use MediaWiki\HookContainer\HookRunner; use MediaWiki\Linker\LinkRenderer; use MediaWiki\MediaWikiServices; +use MediaWiki\Permissions\Authority; use Wikimedia\Rdbms\IDatabase; class LogEventsList extends ContextSource { @@ -227,10 +228,7 @@ class LogEventsList extends ContextSource { foreach ( LogPage::validTypes() as $type ) { $page = new LogPage( $type ); $restriction = $page->getRestriction(); - if ( MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $this->getUser(), $restriction ) - ) { + if ( $this->getAuthority()->isAllowed( $restriction ) ) { $typesByName[$type] = $page->getName()->text(); } } @@ -456,12 +454,11 @@ class LogEventsList extends ContextSource { } $del = ''; - $permissionManager = MediaWikiServices::getInstance()->getPermissionManager(); // Don't show useless checkbox to people who cannot hide log entries - if ( $permissionManager->userHasRight( $user, 'deletedhistory' ) ) { - $canHide = $permissionManager->userHasRight( $user, 'deletelogentry' ); - $canViewSuppressedOnly = $permissionManager->userHasRight( $user, 'viewsuppressed' ) && - !$permissionManager->userHasRight( $user, 'suppressrevision' ); + if ( $this->getAuthority()->isAllowed( 'deletedhistory' ) ) { + $canHide = $this->getAuthority()->isAllowed( 'deletelogentry' ); + $canViewSuppressedOnly = $this->getAuthority()->isAllowed( 'viewsuppressed' ) && + !$this->getAuthority()->isAllowed( 'suppressrevision' ); $entryIsSuppressed = self::isDeleted( $row, LogPage::DELETED_RESTRICTED ); $canViewThisSuppressedEntry = $canViewSuppressedOnly && $entryIsSuppressed; if ( $row->log_deleted || $canHide ) { @@ -537,21 +534,16 @@ class LogEventsList extends ContextSource { * * @param int $bitfield Current field * @param int $field - * @param User $user User to check + * @param Authority $performer User to check * @return bool */ - public static function userCanBitfield( $bitfield, $field, User $user ) { + public static function userCanBitfield( $bitfield, $field, Authority $performer ) { if ( $bitfield & $field ) { if ( $bitfield & LogPage::DELETED_RESTRICTED ) { - $permissions = [ 'suppressrevision', 'viewsuppressed' ]; + return $performer->isAllowedAny( 'suppressrevision', 'viewsuppressed' ); } else { - $permissions = [ 'deletedhistory' ]; + return $performer->isAllowed( 'deletedhistory' ); } - $permissionlist = implode( ', ', $permissions ); - wfDebug( "Checking for $permissionlist due to $field match on $bitfield" ); - return MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasAnyRight( $user, ...$permissions ); } return true; } @@ -561,14 +553,12 @@ class LogEventsList extends ContextSource { * field of this log row, if it's marked as restricted log type. * * @param string $type - * @param User $user User to check + * @param Authority $performer User to check * @return bool */ - public static function userCanViewLogType( $type, User $user ) { + public static function userCanViewLogType( $type, Authority $performer ) { $logRestrictions = MediaWikiServices::getInstance()->getMainConfig()->get( 'LogRestrictions' ); - if ( isset( $logRestrictions[$type] ) && !MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $user, $logRestrictions[$type] ) + if ( isset( $logRestrictions[$type] ) && !$performer->isAllowed( $logRestrictions[$type] ) ) { return false; } @@ -668,7 +658,6 @@ class LogEventsList extends ContextSource { 0, $services->getLinkBatchFactory(), $services->getDBLoadBalancer(), - $services->getPermissionManager(), $services->getActorMigration() ); if ( !$useRequestParams ) { @@ -787,14 +776,14 @@ class LogEventsList extends ContextSource { * * @param IDatabase $db * @param string $audience Public/user - * @param User|null $user User to check, required when audience isn't public + * @param Authority|null $performer User to check, required when audience isn't public * @return string|bool String on success, false on failure. * @throws InvalidArgumentException */ - public static function getExcludeClause( $db, $audience = 'public', User $user = null ) { + public static function getExcludeClause( $db, $audience = 'public', Authority $performer = null ) { global $wgLogRestrictions; - if ( $audience != 'public' && $user === null ) { + if ( $audience != 'public' && $performer === null ) { throw new InvalidArgumentException( 'A User object must be given when checking for a user audience.' ); @@ -805,9 +794,7 @@ class LogEventsList extends ContextSource { // Don't show private logs to unprivileged users foreach ( $wgLogRestrictions as $logType => $right ) { - if ( $audience == 'public' || !MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $user, $right ) + if ( $audience == 'public' || !$performer->isAllowed( $right ) ) { $hiddenLogs[] = $logType; } diff --git a/includes/logging/LogFormatter.php b/includes/logging/LogFormatter.php index 02f3caa5519..b8923201156 100644 --- a/includes/logging/LogFormatter.php +++ b/includes/logging/LogFormatter.php @@ -172,9 +172,7 @@ class LogFormatter { $logRestrictions = $this->context->getConfig()->get( 'LogRestrictions' ); $type = $this->entry->getType(); return !isset( $logRestrictions[$type] ) - || MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $this->context->getUser(), $logRestrictions[$type] ); + || $this->context->getAuthority()->isAllowed( $logRestrictions[$type] ); } /** diff --git a/includes/logging/LogPager.php b/includes/logging/LogPager.php index ca6d5d38ca5..642ae080718 100644 --- a/includes/logging/LogPager.php +++ b/includes/logging/LogPager.php @@ -25,7 +25,6 @@ use MediaWiki\Cache\LinkBatchFactory; use MediaWiki\MediaWikiServices; -use MediaWiki\Permissions\PermissionManager; use Wikimedia\Rdbms\ILoadBalancer; /** @@ -68,9 +67,6 @@ class LogPager extends ReverseChronologicalPager { /** @var LinkBatchFactory */ private $linkBatchFactory; - /** @var PermissionManager */ - private $permissionManager; - /** @var ActorMigration */ private $actorMigration; @@ -89,7 +85,6 @@ class LogPager extends ReverseChronologicalPager { * @param int $logId Log entry ID, to limit to a single log entry. * @param LinkBatchFactory|null $linkBatchFactory * @param ILoadBalancer|null $loadBalancer - * @param PermissionManager|null $permissionManager * @param ActorMigration|null $actorMigration */ public function __construct( $list, $types = [], $performer = '', $title = '', @@ -97,7 +92,6 @@ class LogPager extends ReverseChronologicalPager { $tagFilter = '', $action = '', $logId = 0, LinkBatchFactory $linkBatchFactory = null, ILoadBalancer $loadBalancer = null, - PermissionManager $permissionManager = null, ActorMigration $actorMigration = null ) { $services = MediaWikiServices::getInstance(); @@ -111,7 +105,6 @@ class LogPager extends ReverseChronologicalPager { // Class is used directly in extensions - T266480 $this->linkBatchFactory = $linkBatchFactory ?? $services->getLinkBatchFactory(); - $this->permissionManager = $permissionManager ?? $services->getPermissionManager(); $this->actorMigration = $actorMigration ?? $services->getActorMigration(); $this->limitLogId( $logId ); // set before types per T269761 @@ -186,7 +179,7 @@ class LogPager extends ReverseChronologicalPager { $needReindex = false; foreach ( $types as $type ) { if ( isset( $restrictions[$type] ) - && !$this->permissionManager->userHasRight( $user, $restrictions[$type] ) + && !$this->getAuthority()->isAllowed( $restrictions[$type] ) ) { $needReindex = true; $types = array_diff( $types, [ $type ] ); @@ -511,10 +504,9 @@ class LogPager extends ReverseChronologicalPager { return; } $this->actionRestrictionsEnforced = true; - $user = $this->getUser(); - if ( !$this->permissionManager->userHasRight( $user, 'deletedhistory' ) ) { + if ( !$this->getAuthority()->isAllowed( 'deletedhistory' ) ) { $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) . ' = 0'; - } elseif ( !$this->permissionManager->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' ) ) { + } elseif ( !$this->getAuthority()->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) { $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_ACTION ) . ' != ' . LogPage::SUPPRESSED_USER; } @@ -529,10 +521,9 @@ class LogPager extends ReverseChronologicalPager { return; } $this->performerRestrictionsEnforced = true; - $user = $this->getUser(); - if ( !$this->permissionManager->userHasRight( $user, 'deletedhistory' ) ) { + if ( !$this->getAuthority()->isAllowed( 'deletedhistory' ) ) { $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0'; - } elseif ( !$this->permissionManager->userHasAnyRight( $user, 'suppressrevision', 'viewsuppressed' ) ) { + } elseif ( !$this->getAuthority()->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) { $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) . ' != ' . LogPage::SUPPRESSED_ACTION; } diff --git a/includes/logging/MergeLogFormatter.php b/includes/logging/MergeLogFormatter.php index 925c976d7ad..f0f2fd557b9 100644 --- a/includes/logging/MergeLogFormatter.php +++ b/includes/logging/MergeLogFormatter.php @@ -22,8 +22,6 @@ * @since 1.25 */ -use MediaWiki\MediaWikiServices; - /** * This class formats merge log entries. * @@ -49,9 +47,7 @@ class MergeLogFormatter extends LogFormatter { public function getActionLinks() { if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden - || !MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $this->context->getUser(), 'mergehistory' ) + || !$this->context->getAuthority()->isAllowed( 'mergehistory' ) ) { return ''; } diff --git a/includes/logging/MoveLogFormatter.php b/includes/logging/MoveLogFormatter.php index 6797f98f04b..2f34cb7b784 100644 --- a/includes/logging/MoveLogFormatter.php +++ b/includes/logging/MoveLogFormatter.php @@ -23,8 +23,6 @@ * @since 1.22 */ -use MediaWiki\MediaWikiServices; - /** * This class formats move log entries. * @@ -62,9 +60,7 @@ class MoveLogFormatter extends LogFormatter { public function getActionLinks() { if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden || $this->entry->getSubtype() !== 'move' - || !MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $this->context->getUser(), 'move' ) + || !$this->context->getAuthority()->isAllowed( 'move' ) ) { return ''; } diff --git a/includes/logging/ProtectLogFormatter.php b/includes/logging/ProtectLogFormatter.php index ce8d5c91f5d..c6f27567c03 100644 --- a/includes/logging/ProtectLogFormatter.php +++ b/includes/logging/ProtectLogFormatter.php @@ -102,10 +102,7 @@ class ProtectLogFormatter extends LogFormatter { } // Show change protection link - if ( MediaWikiServices::getInstance() - ->getPermissionManager() - ->userHasRight( $this->context->getUser(), 'protect' ) - ) { + if ( $this->context->getAuthority()->isAllowed( 'protect' ) ) { $links[] = $linkRenderer->makeKnownLink( $title, $this->msg( 'protect_change' )->text(), diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php index fabed277191..253b9d3707a 100644 --- a/includes/specials/SpecialLog.php +++ b/includes/specials/SpecialLog.php @@ -248,7 +248,6 @@ class SpecialLog extends SpecialPage { $opts->getValue( 'logid' ), $this->linkBatchFactory, $this->loadBalancer, - $this->permissionManager, $this->actorMigration );