Merge "Specify DB to query when checking if a user is blocked from a page"

This commit is contained in:
jenkins-bot 2021-08-26 17:43:34 +00:00 committed by Gerrit Code Review
commit 8d2bdc20c2
5 changed files with 33 additions and 5 deletions

View file

@ -2726,7 +2726,13 @@ class EditPage implements IEditObject {
} elseif ( } elseif (
$block !== null && $block !== null &&
$block->getType() != DatabaseBlock::TYPE_AUTO && $block->getType() != DatabaseBlock::TYPE_AUTO &&
( $block->isSitewide() || $user->isBlockedFrom( $this->mTitle ) ) (
$block->isSitewide() ||
$user->isBlockedFrom(
$this->mTitle,
true
)
)
) { ) {
// Show log extract if the user is sitewide blocked or is partially // Show log extract if the user is sitewide blocked or is partially
// blocked and not allowed to edit their user page or user talk page // blocked and not allowed to edit their user page or user talk page

View file

@ -337,7 +337,11 @@ abstract class Action implements MessageLocalizer {
} }
// If the action requires an unblock, explicitly check the user's block. // If the action requires an unblock, explicitly check the user's block.
if ( $this->requiresUnblock() && $user->isBlockedFrom( $this->getTitle() ) ) { $checkReplica = !$this->getRequest()->wasPosted();
if (
$this->requiresUnblock() &&
$user->isBlockedFrom( $this->getTitle(), $checkReplica )
) {
$block = $user->getBlock(); $block = $user->getBlock();
if ( $block ) { if ( $block ) {
throw new UserBlockedError( throw new UserBlockedError(

View file

@ -1311,13 +1311,17 @@ class Article implements Page {
// users, pretend like it does not exist at all. // users, pretend like it does not exist at all.
$user = false; $user = false;
} }
if ( !( $user && $user->isRegistered() ) && !$ip ) { # User does not exist if ( !( $user && $user->isRegistered() ) && !$ip ) { # User does not exist
$outputPage->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1\n</div>", $outputPage->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1\n</div>",
[ 'userpage-userdoesnotexist-view', wfEscapeWikiText( $rootPart ) ] ); [ 'userpage-userdoesnotexist-view', wfEscapeWikiText( $rootPart ) ] );
} elseif ( } elseif (
$block !== null && $block !== null &&
$block->getType() != DatabaseBlock::TYPE_AUTO && $block->getType() != DatabaseBlock::TYPE_AUTO &&
( $block->isSitewide() || $user->isBlockedFrom( $title ) ) (
$block->isSitewide() ||
$user->isBlockedFrom( $title, true )
)
) { ) {
// Show log extract if the user is sitewide blocked or is partially // Show log extract if the user is sitewide blocked or is partially
// blocked and not allowed to edit their user page or user talk page // blocked and not allowed to edit their user page or user talk page

View file

@ -139,7 +139,14 @@ class SpecialEditTags extends UnlistedSpecialPage {
} }
// Check blocks // Check blocks
if ( $this->permissionManager->isBlockedFrom( $user, $this->targetObj ) ) { $checkReplica = !$this->submitClicked;
if (
$this->permissionManager->isBlockedFrom(
$user,
$this->targetObj,
$checkReplica
)
) {
throw new UserBlockedError( throw new UserBlockedError(
$user->getBlock(), $user->getBlock(),
$user, $user,

View file

@ -190,7 +190,14 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
} }
// Check blocks // Check blocks
if ( $this->permissionManager->isBlockedFrom( $user, $this->targetObj ) ) { $checkReplica = !$this->submitClicked;
if (
$this->permissionManager->isBlockedFrom(
$user,
$this->targetObj,
$checkReplica
)
) {
throw new UserBlockedError( throw new UserBlockedError(
$user->getBlock(), $user->getBlock(),
$user, $user,