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 (
$block !== null &&
$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
// 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 ( $this->requiresUnblock() && $user->isBlockedFrom( $this->getTitle() ) ) {
$checkReplica = !$this->getRequest()->wasPosted();
if (
$this->requiresUnblock() &&
$user->isBlockedFrom( $this->getTitle(), $checkReplica )
) {
$block = $user->getBlock();
if ( $block ) {
throw new UserBlockedError(

View file

@ -1311,13 +1311,17 @@ class Article implements Page {
// users, pretend like it does not exist at all.
$user = false;
}
if ( !( $user && $user->isRegistered() ) && !$ip ) { # User does not exist
$outputPage->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1\n</div>",
[ 'userpage-userdoesnotexist-view', wfEscapeWikiText( $rootPart ) ] );
} elseif (
$block !== null &&
$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
// 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
if ( $this->permissionManager->isBlockedFrom( $user, $this->targetObj ) ) {
$checkReplica = !$this->submitClicked;
if (
$this->permissionManager->isBlockedFrom(
$user,
$this->targetObj,
$checkReplica
)
) {
throw new UserBlockedError(
$user->getBlock(),
$user,

View file

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