From 56a2582d67a17f776d8046a96455a442c660e57c Mon Sep 17 00:00:00 2001 From: Manfredi Martorana Date: Thu, 18 Aug 2022 17:53:34 +0200 Subject: [PATCH] T307278 - Remove suppressed usernames from rollback page. --- includes/actions/RollbackAction.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/includes/actions/RollbackAction.php b/includes/actions/RollbackAction.php index 935e9cf..17da6bd 100644 --- a/includes/actions/RollbackAction.php +++ b/includes/actions/RollbackAction.php @@ -28,6 +28,7 @@ use MediaWiki\Revision\RevisionRecord; use MediaWiki\Revision\SlotRecord; use MediaWiki\User\UserOptionsLookup; use MediaWiki\Watchlist\WatchlistManager; +use MediaWiki\MediaWikiServices; /** * User interface for the rollback action @@ -157,7 +158,9 @@ class RollbackAction extends FormAction { } $revUser = $rev->getUser(); + $userText = $revUser ? $revUser->getName() : ''; + if ( $from !== $userText ) { throw new ErrorPageError( 'rollbackfailed', 'alreadyrolled', [ $this->getTitle()->getPrefixedText(), @@ -170,11 +173,17 @@ class RollbackAction extends FormAction { throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' ); } - // The revision has the user suppressed, so the rollback has empty 'from', - // so the check above would succeed in that case. + # Check if the user has rights to view suppressed usernames if ( !$revUser ) { - $revUser = $rev->getUser( RevisionRecord::RAW ); - } + // T307278 + if($this->getAuthority()->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) { + $revUser = $rev->getUser( RevisionRecord::RAW ); + } else { + $userFactory = MediaWikiServices::getInstance()->getUserFactory(); + + $revUser = $userFactory->newFromName( $this->context->msg( 'rev-deleted-user' )->escaped() ); + } + } $rollbackResult = $this->rollbackPageFactory // @phan-suppress-next-line PhanTypeMismatchArgumentNullable use of raw avoids null here -- 2.32.1 (Apple Git-133)