/** * @covers CentralAuthUser::newUnattached */ public function testNewUnattached() { $ca = CentralAuthUser::newUnattached('FooBar'); $this->assertInstanceOf('CentralAuthUser', $ca); $this->assertEquals('FooBar', $ca->getName()); $this->assertFalse($ca->isAttached()); }
/** * @covers CentralAuthUser::getAuthToken * @covers CentralAuthUser::resetAuthToken */ public function testGetAuthToken() { $caUserUnattached = CentralAuthUser::newUnattached('UnattachedUser', false); $token = $caUserUnattached->getAuthToken(); $this->assertEquals(32, strlen($token)); $this->assertSame(0, preg_match('/[^a-f0-9]/', $token)); }
public function provideAbortLogin() { $user = User::newFromName('GlobalUser'); $lockedUser = User::newFromName('GlobalLockedUser'); // We can fake out CentralAuthUser::getInstance() by adding centralAuthObj $noUser = User::newFromName('NoUser'); $noUser->centralAuthObj = CentralAuthUser::newUnattached('NoUser'); return array(array($user, true, 'Attached user can login'), array($noUser, true, 'Unattached user can login'), array($lockedUser, false, 'Locked User cannot login')); }
/** * @param $row */ function setCurrent($row) { parent::setCurrent($row); if ($row !== false) { if (isset($this->globalData[$row->user_name])) { $caRow = $this->globalData[$row->user_name]; // Like taken from GlobalRenameUserStatus::getNames $renameUser = array(); if ($caRow->ru_oldname) { $renameUser = array($caRow->ru_oldname, $caRow->ru_newname); } $this->current->centralAuthObj = CentralAuthUser::newFromRow($caRow, $renameUser); } else { $this->current->centralAuthObj = CentralAuthUser::newUnattached($row->user_name); } } }
function process($username) { $central = new CentralAuthUser($username); if (!$central->exists()) { $this->output("ERROR: [{$username}] Central account does not exist. So how'd we find it?\n"); return; } try { $unattached = $central->queryUnattached(); } catch (Exception $e) { // This might happen due to localnames inconsistencies (bug 67350) $this->output("ERROR: [{$username}] Fetching unattached accounts failed.\n"); return; } foreach ($unattached as $wiki => $local) { if ($local['email'] === '' && $local['password'] === '') { $this->output("SKIP: [{$username}] Account on {$wiki} has no password or email\n"); return; } } if ($this->fix) { $reason = wfMessage('centralauth-delete-empty-account')->inContentLanguage()->text(); $status = $central->adminDelete($reason); if (!$status->isGood()) { $msg = $status->errors[0]['message']; if ($msg instanceof Message) { $msg = $msg->getKey(); } $this->output("ERROR: [{$username}] Delete failed ({$msg})\n"); return; } $this->output("DELETE: [{$username}] Deleted\n"); } else { $this->output("DELETE: [{$username}] Would delete\n"); } if (count($unattached) !== 0 && $this->migrate) { if ($this->fix) { $central = CentralAuthUser::newUnattached($username, true); if ($central->storeAndMigrate(array(), !$this->suppressRC, $this->safe)) { $unattachedAfter = count($central->queryUnattached()); $this->output("MIGRATE: [{$username}] Success; {$unattachedAfter} left unattached\n"); } else { $this->output("MIGRATE: [{$username}] Fail\n"); } } else { $this->output("MIGRATE: [{$username}] Would attempt\n"); } } }