Пример #1
0
 /**
  * Update User email to become Facebook-reported email
  *
  * @param int $userId
  * @return bool
  */
 public function updateEmailFromFacebook($userId)
 {
     $userMap = \FacebookMapModel::lookupFromWikiaID($userId);
     if (!$userMap) {
         $this->error('Facebook user email update fail. Missing user mapping', ['title' => __METHOD__, 'userid' => $userId]);
         return false;
     }
     $fbUserId = $userMap->getFacebookUserId();
     $email = \FacebookClient::getInstance()->getEmail($fbUserId);
     if (!$email) {
         $this->info('Facebook user email update: No Facebook email', ['title' => __METHOD__, 'userid' => $userId, 'facebookid' => $fbUserId]);
         return false;
     }
     $this->updateUserEmail($userMap->getWikiaUserId(), $email);
     $this->info('Facebook user email update complete', ['title' => __METHOD__, 'userid' => $userId, 'facebookid' => $fbUserId, 'email' => $email]);
     return true;
 }
Пример #2
0
 /**
  * Get facebook mapping for current user
  * @return FacebookMapModel
  */
 public function getMapping()
 {
     $id = $this->getUserId();
     $map = FacebookMapModel::lookupFromFacebookID($id);
     return $map;
 }
 /**
  * Disconnect the user from Facebook. This can occur in one of two ways, either when the user
  * deletes the Wikia App from facebook, or when they explicitly disconnect via Special:Preferences.
  * If it comes from Facebook, the request is internal and is sent by FacebookClientController::deauthorizeCallback.
  * If it comes explicitly from the user, the request is external and is sent by preferences.js::disconnect.
  *
  * @requestParam user This is a user object.
  */
 public function disconnectFromFB()
 {
     if ($this->request->isInternal()) {
         // deauthorizeCallback which makes this internal request ensures 'user' is set
         $userId = $this->getVal('user');
         $user = User::newFromId($userId);
     } elseif ($this->isValidExternalRequest()) {
         $user = F::app()->wg->User;
     } else {
         $this->status = 'error';
         $this->msg = wfMessage('fbconnect-unknown-error')->escaped();
         return;
     }
     FacebookMapModel::deleteFromWikiaID($user->getId());
     $params = new FauxRequest(['wpName' => $user->getName()]);
     $loginForm = new LoginForm($params);
     if ($user->getGlobalFlag('fbFromExist')) {
         $res = $loginForm->mailPasswordInternal($user, true, 'fbconnect-passwordremindertitle-exist', 'fbconnect-passwordremindertext-exist');
     } else {
         $res = $loginForm->mailPasswordInternal($user, true, 'fbconnect-passwordremindertitle', 'fbconnect-passwordremindertext');
     }
     if ($res->isGood()) {
         $this->status = 'ok';
     } else {
         $this->status = 'error';
         $this->msg = wfMessage('fbconnect-unknown-error')->text();
     }
 }
Пример #4
0
 /**
  * Make sure a wikia user account is disconnected from their facebook account.
  *
  * @param  User $user The user account to disconnect
  */
 public static function disconnectFromFacebook(User $user)
 {
     if (!empty(F::app()->wg->EnableFacebookClientExt)) {
         FacebookMapModel::deleteFromWikiaID($user->getId());
     }
 }
Пример #5
0
 /**
  * Determine if Facebook account with given Id is connected to a Wikia account
  *
  * @param int $facebookId
  * @return bool
  */
 public function isFacebookIdInUse($facebookId)
 {
     return \FacebookMapModel::lookupFromFacebookID($facebookId) !== null;
 }
 /**
  * @dataProvider mappingIdProvider
  */
 public function testDBFacebookCRUD($wikiaUserId, $facebookUserId)
 {
     self::setupMockCache();
     /** @var PHPUnit_Framework_MockObject_MockObject|FacebookMapModel $mockMap */
     $mockMap = $this->getMock('FacebookMapModel', ['saveToCache']);
     $mockMap->expects($this->once())->method('saveToCache');
     // CREATE
     $mockMap->relate($wikiaUserId, $facebookUserId);
     $mockMap->save();
     // READ
     $this->assertTrue(FacebookMapModel::hasUserMapping($wikiaUserId, $facebookUserId), 'Mapping does not exist');
     $map = FacebookMapModel::lookupFromFacebookID($facebookUserId);
     $this->assertNotEmpty($map, 'Object not found in memcache');
     $this->assertEquals($wikiaUserId, $map->getWikiaUserId(), 'Wikia user ID does not match');
     $this->assertEquals($facebookUserId, $map->getFacebookUserId(), 'Facebook user ID does not match');
     // DELETE
     FacebookMapModel::deleteFromFacebookID($facebookUserId);
     $map = FacebookMapModel::lookupFromFacebookID($facebookUserId);
     $this->assertEmpty($map, 'Object still found in memcache after delete');
 }