From 56a2582d67a17f776d8046a96455a442c660e57c Mon Sep 17 00:00:00 2001
From: Manfredi Martorana <mmartorana@wikimedia.org>
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)

