* Check when actually saving should be done against master.
*/
private function getBlockedStatus( $bFromSlave = true ) {
- global $wgProxyWhitelist, $wgUser, $wgApplyIpBlocksToXff, $wgSoftBlockRanges;
+ global $wgProxyWhitelist, $wgApplyIpBlocksToXff, $wgSoftBlockRanges;
if ( -1 != $this->mBlockedby ) {
return;
# know which IP address they're actually coming from
$ip = null;
if ( !$this->isAllowed( 'ipblock-exempt' ) ) {
- // $wgUser->getName() only works after the end of Setup.php. Until
- // then, assume it's a logged-out user.
- $globalUserName = $wgUser->isSafeToLoad()
- ? $wgUser->getName()
- : IP::sanitizeIP( $wgUser->getRequest()->getIP() );
+ $sessionUser = RequestContext::getMain()->getUser();
+ // the session user is set up towards the end of Setup.php. Until then,
+ // assume it's a logged-out user.
+ $globalUserName = $sessionUser->isSafeToLoad()
+ ? $sessionUser->getName()
+ : IP::sanitizeIP( $sessionUser->getRequest()->getIP() );
if ( $this->getName() === $globalUserName ) {
$ip = $this->getRequest()->getIP();
}
}
// Avoid PHP 7.1 warning of passing $this by reference
- $user = $this;
+ $thisUser = $this;
// Extensions
- Hooks::run( 'GetBlockedStatus', [ &$user ] );
+ Hooks::run( 'GetBlockedStatus', [ &$thisUser ] );
}
/**
}
public function testSoftBlockRanges() {
- global $wgUser;
-
- $this->setMwGlobals( [
- 'wgSoftBlockRanges' => [ '10.0.0.0/8' ],
- 'wgUser' => null,
- ] );
+ $setSessionUser = function ( User $user, WebRequest $request ) {
+ $this->setMwGlobals( 'wgUser', $user );
+ RequestContext::getMain()->setUser( $user );
+ RequestContext::getMain()->setRequest( $request );
+ TestingAccessWrapper::newFromObject( $user )->mRequest = $request;
+ $request->getSession()->setUser( $user );
+ };
+ $this->setMwGlobals( 'wgSoftBlockRanges', [ '10.0.0.0/8' ] );
// IP isn't in $wgSoftBlockRanges
+ $wgUser = new User();
$request = new FauxRequest();
$request->setIP( '192.168.0.1' );
- $wgUser = User::newFromSession( $request );
+ $setSessionUser( $wgUser, $request );
$this->assertNull( $wgUser->getBlock() );
// IP is in $wgSoftBlockRanges
+ $wgUser = new User();
$request = new FauxRequest();
$request->setIP( '10.20.30.40' );
- $wgUser = User::newFromSession( $request );
+ $setSessionUser( $wgUser, $request );
$block = $wgUser->getBlock();
$this->assertInstanceOf( Block::class, $block );
$this->assertSame( 'wgSoftBlockRanges', $block->getSystemBlockType() );
// Make sure the block is really soft
- $request->getSession()->setUser( $this->getTestUser()->getUser() );
- $wgUser = User::newFromSession( $request );
+ $wgUser = $this->getTestUser()->getUser();
+ $request = new FauxRequest();
+ $request->setIP( '10.20.30.40' );
+ $setSessionUser( $wgUser, $request );
$this->assertFalse( $wgUser->isAnon(), 'sanity check' );
$this->assertNull( $wgUser->getBlock() );
}