Ejemplo n.º 1
0
 public static function getUser($jUserId, $provider = 'facebook')
 {
     if (self::$instances == null) {
         self::$instances = array();
     }
     if (!array_key_exists($jUserId, self::$instances)) {
         self::$instances[$jUserId] = array();
     }
     if (!array_key_exists($provider, self::$instances[$jUserId])) {
         $instance = new JFBConnectModelUserMap();
         $instance->getData($jUserId, $provider);
         self::$instances[$jUserId][$provider] = $instance;
     }
     return self::$instances[$jUserId][$provider];
 }
Ejemplo n.º 2
0
 function display($tpl = null)
 {
     $actionModel = $this->getModel('OpenGraphAction', 'JFBConnectModel');
     $activityModel = $this->getModel('OpenGraphActivity', 'JFBConnectModel');
     $objectModel = $this->getModel('OpenGraphObject', 'JFBConnectModel');
     $user = JFactory::getUser();
     if ($this->getLayout() == 'activity') {
         $activityModel->setUserId($user->get('id'));
         $rows = $activityModel->getActivityForUser();
         $this->rows = $rows;
         $this->actionModel = $actionModel;
         $this->objectModel = $objectModel;
         $pagination = $activityModel->getPagination();
         $this->pagination = $pagination;
     } else {
         if ($this->getLayout() == 'settings') {
             $user = JFactory::getUser();
             $userModel = JFBConnectModelUserMap::getUser($user->get('id'), 'facebook');
             $userData = $userModel->getData();
             $actionsDisabled = $userData->params->get('og_actions_disabled');
             $this->actionsDisabled = $actionsDisabled;
             $actionModel = $this->getModel('OpenGraphAction', 'JFBConnectModel');
             $actions = $actionModel->getActions(true);
             $editableActions = array();
             foreach ($actions as $action) {
                 if ($action->can_disable) {
                     $editableActions[] = $action;
                 }
             }
             $this->actions = $editableActions;
         }
     }
     JFBCFactory::addStylesheet('jfbconnect.css');
     parent::display($tpl);
 }
Ejemplo n.º 3
0
 function display($tpl = null)
 {
     $user = JFactory::getUser();
     $providers = JFBCFactory::getAllProviders();
     $providerData = array();
     foreach ($providers as $provider) {
         if ($provider->appId && $provider->secretKey) {
             $userModel = JFBConnectModelUserMap::getUser($user->get('id'), $provider->systemName);
             $userData = $userModel->getData();
             $providerInfo = new stdClass();
             $providerInfo->profileUrl = $userData->params->get('data.profile_url');
             if (empty($providerInfo->profileUrl)) {
                 //JOOMLA 2.5
                 $providerInfo->profileUrl = $userData->params->get('profile_url');
             }
             $providerInfo->isMapped = $userData->provider != null;
             $providerInfo->name = $provider->name;
             $providerInfo->provider = $provider;
             $providerInfo->systemName = $provider->systemName;
             $providerData[$provider->name] = $providerInfo;
         }
     }
     $this->providerData = $providerData;
     JFBCFactory::addStylesheet('jfbconnect.css');
     parent::display($tpl);
 }
Ejemplo n.º 4
0
 public function unlink()
 {
     JSession::checkToken('get') or die('Invalid Token');
     $provider = JRequest::getString('provider', '');
     $user = JFactory::getUser();
     $userModel = JFBConnectModelUserMap::getUser($user->get('id'), $provider);
     $provider_user_id = $userModel->getProviderUserId($user->get('id'), $provider);
     $userModel->deleteMapping($provider_user_id, $provider);
     JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_ACCOUNT_LINKED_ACCOUNTS_UNLINK_MESSAGE', $provider));
     $this->setRedirect(JRoute::_('index.php?option=com_jfbconnect&view=account'));
 }
Ejemplo n.º 5
0
 /**
  * Method to delete one or more records.
  *
  * @param   array &$pks  An array of record primary keys.
  *
  * @return  boolean  True if successful, false if an error occurs.
  *
  * Copied from the Joomla legacy folder. Removed content triggers and added deletion of scope for associated user
  */
 public function delete(&$pks)
 {
     $pks = (array) $pks;
     $table = $this->getTable();
     // Iterate the items to delete each one.
     foreach ($pks as $i => $pk) {
         if ($table->load($pk)) {
             if ($this->canDelete($table)) {
                 // Delete any scope for the user associated with this channel
                 $attribs = $table->attribs;
                 if (isset($attribs->user_id)) {
                     $userModel = JFBConnectModelUserMap::getUser($attribs->user_id, $table->provider);
                     $userModel->removeAllScope('channel', $table->id);
                 }
                 if (!$table->delete($pk)) {
                     $this->setError($table->getError());
                     return false;
                 }
             } else {
                 // Prune items that you can't change.
                 unset($pks[$i]);
                 $error = $this->getError();
                 if ($error) {
                     JLog::add($error, JLog::WARNING, 'jerror');
                     return false;
                 } else {
                     JLog::add(JText::_('JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED'), JLog::WARNING, 'jerror');
                     return false;
                 }
             }
         } else {
             $this->setError($table->getError());
             return false;
         }
     }
     // Clear the component's cache
     $this->cleanCache();
     return true;
 }
Ejemplo n.º 6
0
 function onAuthenticate($credentials, $options, &$response)
 {
     # authentication via facebook for Joomla always uses the FB API and secret keys
     # When this is present, the user's FB uid is used to look up their Joomla uid and log that user in
     jimport('joomla.filesystem.file');
     $configFile = JPATH_ROOT . DS . 'administrator' . DS . 'components' . DS . 'com_jfbconnect' . DS . 'models' . DS . 'config.php';
     if (JFile::exists($configFile)) {
         include_once JPATH_ROOT . DS . 'administrator' . DS . 'components' . DS . 'com_jfbconnect' . DS . 'models' . DS . 'config.php';
         $configModel = new JFBConnectModelConfig();
         # always check the secret username and password to indicate this is a JFBConnect login
         #echo "Entering JFBConnectAuth<br>";
         if ($credentials['username'] != $configModel->getSetting('facebook_api_key') || $credentials['password'] != $configModel->getSetting('facebook_secret_key')) {
             $response->status = JAUTHENTICATE_STATUS_FAILURE;
             $response->error_message = 'Facebook authentication failed';
             return false;
         }
         #echo "Passed API/Secret key check, this is a FB login<br>";
         include_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jfbconnect' . DS . 'models' . DS . 'usermap.php';
         $userMapModel = new JFBConnectModelUserMap();
         include_once JPATH_ROOT . DS . 'components' . DS . 'com_jfbconnect' . DS . 'libraries' . DS . 'facebook.php';
         $fbClient = JFBConnectFacebookLibrary::getInstance();
         $fbUserId = $fbClient->getUserId(FALSE);
         $app =& JFactory::getApplication();
         #echo "Facebook user = "******"User is logged into FB<br>";
             # Test if user has a Joomla mapping
             $jUserId = $userMapModel->getJoomlaUserId($fbUserId);
             if ($jUserId) {
                 #echo "User has joomla mapping<br>";
                 $jUser = JUser::getInstance($jUserId);
                 if ($jUser->id == null) {
                     #echo "user NOT loaded, deleting";
                     $userMapModel->deleteMapping($fbUserId);
                     return false;
                 }
                 $isAllowed = true;
                 # Trigger the jfbcProfile onAuthenticate to see if the user is allowed to login
                 if ($jUser->block) {
                     $isAllowed = false;
                     $app->enqueueMessage(JText::_('E_NOLOGIN_BLOCKED'), 'error');
                 } else {
                     JPluginHelper::importPlugin('jfbcprofiles');
                     $args = array($jUserId, $fbUserId);
                     $responses = $app->triggerEvent('jfbcProfilesOnAuthenticate', $args);
                     $return = base64_decode(JRequest::getVar('return'));
                     $isAllowed = true;
                     foreach ($responses as $response) {
                         if (is_object($response) && !$response->status) {
                             $isAllowed = false;
                             $app->enqueueMessage($response->message, 'error');
                         }
                     }
                 }
                 if ($isAllowed) {
                     $response->status = JAUTHENTICATE_STATUS_SUCCESS;
                     $response->username = $jUser->username;
                     if (!$configModel->getSetting('create_new_users')) {
                         // Update the J user's email to what it is in Facebook
                         $fbProfileFields = $fbClient->getUserProfile($fbUserId, array('email'));
                         if ($fbProfileFields != null && $fbProfileFields['email']) {
                             $jUser->email = $fbProfileFields['email'];
                             $jUser->save();
                         }
                     }
                     $response->email = $jUser->email;
                     $response->fullname = $jUser->name;
                     $response->error_message = '';
                     return true;
                 }
             } else {
                 if (!$configModel->getSetting('create_new_users')) {
                     # User is not in system, should create their account automatically
                     #echo "Creating a pseudo-user<br>";
                     $fbUser = $fbClient->_getUserName($fbUserId);
                     if ($fbUser == null) {
                         # no information returned from FB
                         return false;
                     }
                     // Get the email to use from Facebook
                     $fbProfileFields = $fbClient->getUserProfile($fbUserId, array('email'));
                     if ($fbProfileFields == null || !$fbProfileFields['email']) {
                         $newEmail = $fbUser['first_name'] . "_" . $fbUserId . "@unknown.com";
                     } else {
                         $newEmail = $fbProfileFields['email'];
                     }
                     $fullname = $fbUser['name'];
                     $username = "******" . $fbUserId;
                     #Use the Joomla User plugin to create the User row in the database
                     JPluginHelper::importPlugin('user');
                     $user['fullname'] = $fullname;
                     $user['username'] = $username;
                     $user['password_clear'] = "";
                     $user['email'] = $newEmail;
                     $jUser = $app->triggerEvent('_getUser', array($user));
                     $jUser = $jUser[0];
                     #Map the new user
                     include_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jfbconnect' . DS . 'models' . DS . 'usermap.php';
                     $userMapModel = new JFBConnectModelUserMap();
                     if ($userMapModel->mapUser($fbUserId, $jUser->get('id'))) {
                         $app->enqueueMessage(JText::_('MAP USER SUCCESS'));
                     } else {
                         $app->enqueueMessage(JText::_('MAP USER FAIL'));
                     }
                     $response->status = JAUTHENTICATE_STATUS_SUCCESS;
                     $response->email = $newEmail;
                     $response->fullname = $fullname;
                     $response->username = $username;
                     $response->error_message = '';
                     return true;
                 }
             }
         }
     }
     # catch everything else as an authentication failure
     #echo "Authentication Failure<br>";
     $response->status = JAUTHENTICATE_STATUS_FAILURE;
     $response->error_message = 'Facebook authentication failed';
     return false;
 }
Ejemplo n.º 7
0
 function getJoomlaUserID()
 {
     $userMapModel = new JFBConnectModelUserMap();
     return $userMapModel->getJoomlaUserId($this->jfbcLibrary->getUserId(FALSE));
 }
Ejemplo n.º 8
0
 function loginFacebookUser()
 {
     $app = JFactory::getApplication();
     $jfbcLibrary = JFBConnectFacebookLibrary::getInstance();
     $fbUserId = $jfbcLibrary->getUserId(FALSE);
     #echo "Con. Logging in FB User : "******"<br>";
     require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jfbconnect' . DS . 'models' . DS . 'usermap.php';
     $userMapModel = new JFBConnectModelUserMap();
     $configModel = $jfbcLibrary->configModel;
     $user = JFactory::getUser();
     if ($user->guest) {
         # Guest: Check if they have a Joomla user and log that user in. If not, create them one
         $jUserId = $userMapModel->getJoomlaUserId($fbUserId);
         if (!$fbUserId) {
             # Facebook isn't returning information about this user.  Redirect them.
             $app->enqueueMessage('We were unable to retrieve your Facebook account information. Please try again');
             $app->redirect('index.php');
         }
         # Check if automatic email mapping is allowed, and see if that email is registered
         # AND the Facebook user doesn't already have a Joomla account
         if ($configModel->getSetting('facebook_auto_map_by_email') && !$jUserId) {
             $fbProfileFields = $jfbcLibrary->getUserProfile($fbUserId, array('email'));
             if ($fbProfileFields != null && $fbProfileFields['email']) {
                 $fbEmail = $fbProfileFields['email'];
                 $jUserEmailId = $userMapModel->getJoomlaUserIdFromEmail($fbEmail);
                 if ($jUserEmailId && $jUserEmailId != 0) {
                     // Found a user with the same email address
                     // do final check to make sure there isn't a FB account already mapped to it
                     $jUserId = $userMapModel->getFacebookUserId($jUserEmailId);
                     if (!$jUserId) {
                         if ($userMapModel->mapUser($fbUserId, $jUserEmailId)) {
                             $app->enqueueMessage(JText::_('MAP USER SUCCESS'));
                         } else {
                             $app->enqueueMessage(JText::_('MAP USER FAIL'));
                         }
                         $app->enqueueMessage(JText::_('MAP USER SUCCESS'));
                         $jUserId = $jUserEmailId;
                         // Update the temp jId so that we login below
                     }
                 }
             }
         }
         if ($configModel->getSetting('create_new_users') && $jUserId == null) {
             # User not in system, create new users setting enabled. Redirect to the login/register form
             $app->redirect(JRoute::_('index.php?option=com_jfbconnect&view=loginregister', false));
         }
         #set the initial registration variable so that the user plugin knows to map user and trigger onAfterRegistration
         if ($jUserId == null) {
             $jfbcLibrary->setInitialRegistration();
         }
         require_once JPATH_COMPONENT . DS . 'controllers' . DS . 'loginregister.php';
         $loginController = new JFBConnectControllerLoginRegister();
         $loginController->login();
         // Perform the login function
     } else {
         #echo "Updating mapping only";
         if ($userMapModel->mapUser($fbUserId)) {
             $app->enqueueMessage(JText::_('MAP USER SUCCESS'));
         } else {
             $app->enqueueMessage(JText::_('MAP USER FAIL'));
         }
     }
     $return = base64_decode(JRequest::getVar('return'));
     $app->redirect($return);
 }
Ejemplo n.º 9
0
 function mapCurrentUser()
 {
     $app = JFactory::getApplication();
     require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jfbconnect' . DS . 'models' . DS . 'usermap.php';
     $jfbcLibrary = JFBConnectFacebookLibrary::getInstance();
     $userMapModel = new JFBConnectModelUserMap();
     # quick check to ensure no baddies
     $rawFbUserId = $jfbcLibrary->getUserId(FALSE);
     if ($rawFbUserId != JRequest::getVar('fbid', '', 'POST')) {
         $return = JRoute::_('index.php?option=com_jfbconnect&view=loginregister', false);
         $app->enqueueMessage(JText::_('MAP USER FAIL'), 'error');
         $app->redirect($return);
     }
     $username = JRequest::getVar('username', '', 'POST');
     $password = JRequest::getVar('password', '', 'POST');
     $error = $app->login(array('username' => $username, 'password' => $password));
     if (!JError::isError($error)) {
         # logged in successfully
         $lang = JFactory::getLanguage();
         $lang->load('com_jfbconnect');
         if ($userMapModel->mapUser($rawFbUserId)) {
             $app->enqueueMessage(JText::_('MAP USER SUCCESS'));
         } else {
             $app->enqueueMessage(JText::_('MAP USER FAIL'));
         }
         #$return = base64_decode(JRequest::getVar('return'));
         $configModel = $jfbcLibrary->configModel;
         $redirectURL = $configModel->getSetting('facebook_new_user_url', 'index.php');
         $app->redirect($redirectURL);
     } else {
         $return = JRoute::_('index.php?option=com_jfbconnect&view=loginregister', false);
         $app->redirect($return);
     }
 }
Ejemplo n.º 10
0
 public function enabledForUser()
 {
     if ($this->can_disable) {
         $user = JFactory::getUser();
         $userModel = JFBConnectModelUserMap::getUser($user->get('id'), 'facebook');
         $userData = $userModel->getData();
         $actionsDisabled = $userData->params->get('og_actions_disabled');
         $actId = $this->id;
         if (is_object($actionsDisabled) && property_exists($actionsDisabled, $actId) && $actionsDisabled->{$actId} == 1) {
             return false;
         }
     }
     return true;
 }
Ejemplo n.º 11
0
 function onBeforeDeleteUser($user)
 {
     require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jfbconnect' . DS . 'models' . DS . 'usermap.php';
     $model = new JFBConnectModelUserMap();
     $model->deleteMappingWithJoomlaId($user['id']);
 }
Ejemplo n.º 12
0
 function getFacebookMappedId()
 {
     $userMapModel = new JFBConnectModelUserMap();
     jimport('joomla.user.helper');
     $jUser =& JFactory::getUser();
     return $userMapModel->getFacebookUserId($jUser->id);
 }
Ejemplo n.º 13
0
 private function disableAction($id)
 {
     $user = JFactory::getUser();
     $userModel = JFBConnectModelUserMap::getUser($user->get('id'), 'facebook');
     $userData = $userModel->getData();
     $ogDisabledActions = $userData->params->get('og_actions_disabled', new stdClass());
     $actionModel = $this->getModel('OpenGraphAction', 'JFBConnectModel');
     $action = $actionModel->getAction($id);
     $actionId = $action->id;
     if ($action->can_disable) {
         $ogDisabledActions->{$actionId} = 1;
     }
     $userModel->saveParameter('og_actions_disabled', $ogDisabledActions);
 }
Ejemplo n.º 14
0
 public function onBeforeLogin()
 {
     $userModel = JFBConnectModelUserMap::getUser(JFBCFactory::usermap()->getJoomlaUserId($this->getProviderUserId(), $this->systemName), $this->systemName);
     $requiredScope = $userModel->_data->params->get('required_scope', null);
     if ($requiredScope) {
         $checkScope = array();
         foreach ($requiredScope as $key => $val) {
             $checkScope[] = $key;
         }
         // This may redirect the user back through the login flow to get the specific permissions for them.
         $neededScope = $this->checkRequiredScope($checkScope);
         if (count($neededScope)) {
             $this->fetchNewScope($neededScope);
         }
     }
 }
Ejemplo n.º 15
0
 function onUserAuthenticate($credentials, $options, &$response)
 {
     $response->type = 'JFBConnectAuth';
     # authentication via facebook for Joomla always uses the FB API and secret keys
     # When this is present, the user's FB uid is used to look up their Joomla uid and log that user in
     jimport('joomla.filesystem.file');
     $provider = null;
     if (isset($options['provider'])) {
         $provider = $options['provider'];
     }
     if (class_exists('JFBCFactory') && $provider) {
         # always check the secret username and password to indicate this is a JFBConnect login
         #echo "Entering JFBConnectAuth<br>";
         if ($credentials['username'] != $provider->appId || $credentials['password'] != $provider->secretKey) {
             $response->status = JAuthentication::STATUS_FAILURE;
             return false;
         }
         #echo "Passed API/Secret key check, this is a FB login<br>";
         include_once JPATH_ADMINISTRATOR . '/components/com_jfbconnect/models/usermap.php';
         $userMapModel = new JFBConnectModelUserMap();
         $providerUserId = $provider->getProviderUserId();
         $app = JFactory::getApplication();
         #echo "Facebook user = ".$fbUserId;
         # test if user is logged into Facebook
         if ($providerUserId) {
             # Test if user has a Joomla mapping
             $jUserId = $userMapModel->getJoomlaUserId($providerUserId, $provider->name);
             if ($jUserId) {
                 $jUser = JUser::getInstance($jUserId);
                 if ($jUser->id == null) {
                     $userMapModel->deleteMapping($providerUserId, $provider->name);
                     return false;
                 }
                 if ($jUser->block) {
                     $isAllowed = false;
                     JFBCFactory::log(JText::_('JERROR_NOLOGIN_BLOCKED'), 'error');
                 } else {
                     JPluginHelper::importPlugin('socialprofiles');
                     $args = array($provider->name, $jUserId, $providerUserId);
                     $responses = $app->triggerEvent('socialProfilesOnAuthenticate', $args);
                     $isAllowed = true;
                     foreach ($responses as $prResponse) {
                         if (is_object($prResponse) && !$prResponse->status) {
                             $isAllowed = false;
                             JFBCFactory::log($prResponse->message, 'error');
                         }
                     }
                 }
                 if ($isAllowed) {
                     $response->status = JAuthentication::STATUS_SUCCESS;
                     $response->username = $jUser->username;
                     $response->language = $jUser->getParam('language');
                     $response->email = $jUser->email;
                     $response->fullname = $jUser->name;
                     $response->error_message = '';
                     return true;
                 }
             }
         }
     }
     # catch everything else as an authentication failure
     $response->status = JAuthentication::STATUS_FAILURE;
     return false;
 }
Ejemplo n.º 16
0
 function login($provider = null)
 {
     if (!is_object($provider)) {
         $provider = JFBCFactory::provider(JRequest::getCmd('provider'));
     }
     // Let the provider do anything it wants before we try to login.
     $provider->onBeforeLogin();
     $loginRegisterModel = $this->getModel('LoginRegister', 'JFBConnectModel');
     // Set a cookie to prevent auto-logging in for the remainder of the session time
     $config = JFactory::getConfig();
     $lifetime = $config->get('lifetime', 15);
     setcookie('jfbconnect_autologin_disable', 1, time() + $lifetime * 60);
     // Not a perfect solution, but fixes autologin loops..
     $app = JFactory::getApplication();
     $providerUserId = $provider->getProviderUserId();
     if (!$providerUserId) {
         # Facebook isn't returning information about this user.  Redirect them.
         JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_UNABLE_TO_RETRIEVE_USER', $provider->name));
         $app->redirect('index.php');
     }
     $userMapModel = JFBCFactory::usermap();
     $jUser = JFactory::getUser();
     if (!$jUser->guest) {
         SCSocialUtilities::clearJFBCNewMappingEnabled();
         if ($userMapModel->map($jUser->get('id'), $providerUserId, strtolower($provider->name), $provider->client->getToken())) {
             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MAP_USER_SUCCESS', $provider->name));
         } else {
             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MAP_USER_FAIL', $provider->name));
         }
         $return = $loginRegisterModel->getLoginRedirect($provider);
         $app->redirect($return);
     }
     // They're not logged in. Check if they have a Joomla user and log that user in. If not, create them one
     $jUserId = $userMapModel->getJoomlaUserId($providerUserId, strtolower($provider->name));
     if (!$jUserId) {
         $profile = $provider->profile->fetchProfile($providerUserId, array('email'));
         $providerEmail = $profile->get('email', null);
         # Check if automatic email mapping is allowed, and see if that email is registered
         # AND the Facebook user doesn't already have a Joomla account
         if (!$provider->initialRegistration && JFBCFactory::config()->getSetting('facebook_auto_map_by_email')) {
             if ($providerEmail != null) {
                 $jUserEmailId = $userMapModel->getJoomlaUserIdFromEmail($providerEmail);
                 if (!empty($jUserEmailId)) {
                     // Found a user with the same email address
                     // do final check to make sure there isn't a FB account already mapped to it
                     $tempId = $userMapModel->getProviderUserId($jUserEmailId, strtolower($provider->name));
                     if (!$tempId) {
                         SCSocialUtilities::clearJFBCNewMappingEnabled();
                         if ($userMapModel->map($jUserEmailId, $providerUserId, strtolower($provider->name), $provider->client->getToken())) {
                             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MAP_USER_SUCCESS', $provider->name));
                             $jUserId = $jUserEmailId;
                             // Update the temp jId so that we login below
                         } else {
                             JFBCFactory::log(JText::sprintf('COM_JFBCONNECT_MAP_USER_FAIL', $provider->name));
                         }
                     }
                 }
             }
         }
         // Check if no mapping, and Automatic Registration is set. If so, auto-create the new user.
         if (!$jUserId && JFBCFactory::config()->getSetting('automatic_registration')) {
             # User is not in system, should create their account automatically
             if ($loginRegisterModel->autoCreateUser($providerUserId, $provider)) {
                 $jUserId = $userMapModel->getJoomlaUserId($providerUserId, strtolower($provider->name));
             }
         }
         // At this point, we have nothing left to do but redirect the user to the registration page
         if (!$jUserId) {
             $return = $loginRegisterModel->getLoginRedirect($provider);
             $app = JFactory::getApplication();
             $regComponent = JFBCFactory::config()->get('registration_component');
             if ($regComponent == 'jfbconnect') {
                 $app->redirect(JRoute::_('index.php?option=com_jfbconnect&view=loginregister&provider=' . strtolower($provider->name) . '&return=' . base64_encode($return), false));
             } else {
                 $app->setUserState('com_jfbconnect.registration.alternateflow', true);
                 $app->setUserState('com_jfbconnect.registration.provider.name', strtolower($provider->name));
                 $app->setUserState('com_jfbconnect.registration.provider.user_id', $providerUserId);
                 $plugins = $app->triggerEvent('socialProfilesGetPlugins');
                 foreach ($plugins as $plugin) {
                     if ($plugin->getName() == $regComponent) {
                         $redirect = $plugin->registration_url;
                     }
                 }
                 if ($redirect) {
                     $app->redirect(JRoute::_($redirect, false));
                 }
             }
         }
     }
     $jUser = JUser::getInstance($jUserId);
     $loginSuccess = false;
     // Try to log the user, but not if blocked and initial registration (then there will be a pretty message on how to activate)
     if (!$provider->initialRegistration || $jUser->get('block') == 0 && $provider->initialRegistration) {
         $options = array('silent' => 1, 'provider' => $provider, 'provider_user_id' => $providerUserId);
         // Disable other authentication messages
         // hack for J3.2.0 bug. Should remove after 3.2.1 is available.
         $password = $provider->secretKey;
         $loginSuccess = $app->login(array('username' => $provider->appId, 'password' => $password), $options);
     }
     if ($loginSuccess) {
         // lets update the user's access token with whatever we just received
         $jUser = JFactory::getUser();
         $userMapModel->updateUserToken($jUser->get('id'), $provider->systemName, $provider->client->getToken());
         // Store Profile URL and Avatar URL
         $userModel = JFBConnectModelUserMap::getUser($jUser->get('id'), $provider->name);
         $userModel->saveParameter('profile_url', JFBCFactory::provider($provider->name)->profile->getProfileUrl($providerUserId));
         $avatarSettings = new JRegistry();
         $avatarSettings->set('width', 50);
         $avatarSettings->set('height', 50);
         $userModel->saveParameter('avatar_thumb', JFBCFactory::provider($provider->name)->profile->getAvatarUrl($providerUserId, false, $avatarSettings));
         if (!$provider->initialRegistration) {
             $args = array(strtolower($provider->name), $jUser->get('id'), $providerUserId);
             $app->triggerEvent('socialProfilesOnLogin', $args);
         }
     }
     JFactory::getApplication()->setUserState('com_jfbconnect.' . strtolower($provider->name) . '.checkForNewMapping', null);
     $allProviders = JFBCFactory::getAllProviders();
     foreach ($allProviders as $p) {
         $p->checkNewMapping();
     }
     $redirect = $loginRegisterModel->getLoginRedirect($provider);
     // Clear the 'alternate flow' session bit to prevent further alterations to reg pages for this user/session
     $app->setUserState('com_jfbconnect.registration.alternateflow', false);
     $app->redirect($redirect);
 }