}
$useReplica = ( $rigor !== 'secure' );
- $block = $user->getBlock( $useReplica );
-
- // The block may explicitly allow an action (like "read" or "upload").
- if ( $block && $block->prevents( $action ) === false ) {
- return $errors;
- }
-
- // Determine if the user is blocked from this action on this page.
- try {
+ if ( ( $action == 'edit' || $action == 'create' )
+ && !$user->isBlockedFrom( $this, $useReplica )
+ ) {
+ // Don't block the user from editing their own talk page unless they've been
+ // explicitly blocked from that too.
+ } elseif ( $user->isBlocked() && $user->getBlock()->prevents( $action ) !== false ) {
// @todo FIXME: Pass the relevant context into this function.
- $action = Action::factory( $action, WikiPage::factory( $this ), RequestContext::getMain() );
- } catch ( Exception $e ) {
- $action = null;
- }
-
- // If no action object is returned, assume that the action requires unblock
- // which is the default.
- if ( !$action || $action->requiresUnblock() ) {
- if ( $user->isBlockedFrom( $this, $useReplica ) ) {
- // @todo FIXME: Pass the relevant context into this function.
- $errors[] = $block
- ? $block->getPermissionsError( RequestContext::getMain() )
- : [ 'badaccess-group0' ];
- }
+ $errors[] = $user->getBlock()->getPermissionsError( RequestContext::getMain() );
}
return $errors;
<?php
-use MediaWiki\Block\Restriction\PageRestriction;
use MediaWiki\MediaWikiServices;
/**
'wgEmailAuthentication' => true,
] );
- $this->setUserPerm( [ 'createpage', 'edit', 'move', 'rollback', 'patrol', 'upload', 'purge' ] );
+ $this->setUserPerm( [ "createpage", "move" ] );
$this->setTitle( NS_HELP, "test page" );
# $wgEmailConfirmToEdit only applies to 'edit' action
'expiry' => 10,
'systemBlock' => 'test',
] );
-
- $errors = [ [ 'systemblockedtext',
+ $this->assertEquals( [ [ 'systemblockedtext',
'[[User:Useruser|Useruser]]', 'no reason given', '127.0.0.1',
'Useruser', 'test', '23:00, 31 December 1969', '127.0.8.1',
- $wgLang->timeanddate( wfTimestamp( TS_MW, $now ), true ) ] ];
-
- $this->assertEquals( $errors,
- $this->title->getUserPermissionsErrors( 'edit', $this->user ) );
- $this->assertEquals( $errors,
+ $wgLang->timeanddate( wfTimestamp( TS_MW, $now ), true ) ] ],
$this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
- $this->assertEquals( $errors,
- $this->title->getUserPermissionsErrors( 'rollback', $this->user ) );
- $this->assertEquals( $errors,
- $this->title->getUserPermissionsErrors( 'patrol', $this->user ) );
- $this->assertEquals( $errors,
- $this->title->getUserPermissionsErrors( 'upload', $this->user ) );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'purge', $this->user ) );
// partial block message test
$this->user->mBlockedby = $this->user->getName();
'expiry' => 10,
] );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'edit', $this->user ) );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'rollback', $this->user ) );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'patrol', $this->user ) );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'upload', $this->user ) );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'purge', $this->user ) );
-
- $this->user->mBlock->setRestrictions( [
- ( new PageRestriction( 0, $this->title->getArticleID() ) )->setTitle( $this->title ),
- ] );
-
- $errors = [ [ 'blockedtext-partial',
+ $this->assertEquals( [ [ 'blockedtext-partial',
'[[User:Useruser|Useruser]]', 'no reason given', '127.0.0.1',
'Useruser', null, '23:00, 31 December 1969', '127.0.8.1',
- $wgLang->timeanddate( wfTimestamp( TS_MW, $now ), true ) ] ];
-
- $this->assertEquals( $errors,
- $this->title->getUserPermissionsErrors( 'edit', $this->user ) );
- $this->assertEquals( $errors,
+ $wgLang->timeanddate( wfTimestamp( TS_MW, $now ), true ) ] ],
$this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
- $this->assertEquals( $errors,
- $this->title->getUserPermissionsErrors( 'rollback', $this->user ) );
- $this->assertEquals( $errors,
- $this->title->getUserPermissionsErrors( 'patrol', $this->user ) );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'upload', $this->user ) );
- $this->assertEquals( [],
- $this->title->getUserPermissionsErrors( 'purge', $this->user ) );
}
}