From fcaac946016922bd04ee59a17e0fc11a4d2978cf Mon Sep 17 00:00:00 2001 From: Sohom Date: Fri, 13 Jan 2023 23:00:56 +0530 Subject: [PATCH] Prevent hidden users from being exposed via public interfaces Bug: T326952 Change-Id: Ibe5f8e25dea155bbd811a65833394c0d4b906a34 --- includes/Page/PageContentHandler.php | 24 ++++++++++++++++++++++-- includes/Page/PageDisplayHandler.php | 14 ++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/includes/Page/PageContentHandler.php b/includes/Page/PageContentHandler.php index e517b84d..d0cdad04 100644 --- a/includes/Page/PageContentHandler.php +++ b/includes/Page/PageContentHandler.php @@ -86,13 +86,23 @@ class PageContentHandler extends TextContentHandler { $level = $content->getLevel(); $user = $level->getUser(); + if ( $user ) { + if ( $user->isHidden() ) { + $userName = $this->msg( 'rev-deleted-user' )->inContentLanguage()->text(); + } else { + $userName = $user->getName(); + } + } else { + $userName = null; + } + return json_encode( [ 'header' => $content->getHeader()->serialize(), 'body' => $content->getBody()->serialize(), 'footer' => $content->getFooter()->serialize(), 'level' => [ 'level' => $level->getLevel(), - 'user' => $user ? $user->getName() : null + 'user' => $userName ] ] ); } @@ -104,7 +114,17 @@ class PageContentHandler extends TextContentHandler { private function serializeContentInWikitext( PageContent $content ) { $level = $content->getLevel(); $user = $level->getUser(); - $userName = $user ? $user->getName() : ''; + + if ( $user ) { + if ( $user->isHidden() ) { + $userName = $this->msg( 'rev-deleted-user' )->inContentLanguage()->text(); + } else { + $userName = $user->getName(); + } + } else { + $userName = null; + } + $text = '' . '' . diff --git a/includes/Page/PageDisplayHandler.php b/includes/Page/PageDisplayHandler.php index 5c824720..c9f0dfc7 100644 --- a/includes/Page/PageDisplayHandler.php +++ b/includes/Page/PageDisplayHandler.php @@ -132,10 +132,20 @@ class PageDisplayHandler { */ public function getPageJsConfigVars( Title $title, PageContent $content ): array { $indexFields = $this->getIndexFieldsForJS( $title ); + $user = $content->getLevel()->getUser(); + + if ( $user ) { + if ( $user->isHidden() ) { + $userName = $this->msg( 'rev-deleted-user' )->inContentLanguage()->text(); + } else { + $userName = $user->getName(); + } + } else { + $userName = null; + } $jsConfigVars = [ - 'prpPageQualityUser' => - $content->getLevel()->getUser() ? $content->getLevel()->getUser()->getName() : null, + 'prpPageQualityUser' => $userName, 'prpPageQuality' => $content->getLevel()->getLevel(), 'prpIndexFields' => $indexFields -- 2.39.0