Example #1
0
 public function reset()
 {
     $mainframe = JFactory::getApplication();
     $params = JComponentHelper::getParams('com_bt_socialconnect');
     $jinput = JFactory::getApplication()->input;
     $model = $this->getModel('Profile', 'Bt_SocialconnectModel');
     //get accestoken ,user id type social from link
     $access_token = $jinput->get->get('access_token', '', 'STRING');
     $user_id = (int) $jinput->getInt('user_id');
     $social = $jinput->get('social');
     switch ($social) {
         case 'google':
             $user = JHtmlBt_Socialconnect::getUserGG($access_token);
             //Get user profile assign data
             $user = JHtmlBt_Socialconnect::prepareData($user, 'google');
             break;
         case 'facebook':
             /*
              * refresh access token after reset account and save new access token in database  
              */
             $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . trim($params->get('fbappId', '')) . "&client_secret=" . trim($params->get('fbsecret', '')) . "&grant_type=fb_exchange_token&fb_exchange_token=" . $access_token;
             $contents = self::file_get_content($token_url);
             $paramsfb = null;
             parse_str($contents, $paramsfb);
             $access_token = $paramsfb['access_token'];
             if ($access_token) {
                 $graph_url = "https://graph.facebook.com/me?access_token=" . $access_token;
                 $user = JHtmlBt_Socialconnect::curlResponse($graph_url);
                 $user = json_decode($user);
                 $user = JHtmlBt_Socialconnect::prepareData($user, 'facebook');
                 if ($user) {
                     $model->updateAccesstoken($user['id'], $access_token);
                 }
             }
             break;
         case 'twitter':
             $info = unserialize($access_token);
             if (!class_exists('TwitterOAuth')) {
                 require_once JPATH_SITE . '/components/com_bt_socialconnect/helpers/html/twitter/twitteroauth.php';
             }
             $connection = new TwitterOAuth(trim($params->get('ttappId', '')), trim($params->get('ttsecret', '')), $info['oauth_token'], $info['oauth_token_secret']);
             $user = $connection->get('account/verify_credentials');
             $user = JHtmlBt_Socialconnect::prepareData($user, 'twitter');
             break;
         case 'linkedin':
             $user = JHtmlBt_Socialconnect::fetch('GET', $access_token);
             if (isset($user->status)) {
                 $this->setMessage(JText::_('COM_BT_SOCIALCONNECT_PROFILE_RESET_FAILED'));
                 $this->setRedirect(JRoute::_('index.php?option=com_bt_socialconnect&view=profile&user_id=' . $user_id, false));
                 return;
             }
             $user = JHtmlBt_Socialconnect::prepareData($user, 'linkedin');
             break;
     }
     $user['user_id'] = $user_id;
     $rows = self::getInfouser($user_id);
     $user = JHtmlBt_Socialconnect::assignProfile($user);
     $user['username'] = $rows->username;
     $user['email1'] = $rows->email;
     $user['password1'] = '';
     unset($user['password2']);
     $return = $model->save($user);
     if ($return !== true) {
         $this->setError(JText::_('COM_BT_SOCIALCONNECT_PROFILE_RESET_FAILED'));
         return false;
     } else {
         $this->setMessage(JText::_('COM_BT_SOCIALCONNECT_PROFILE_RESET_SUCCESS'));
     }
     $this->setRedirect(JRoute::_('index.php?option=com_bt_socialconnect&view=profile&user_id=' . $return, false));
 }
 function onAfterInitialise()
 {
     $document = JFactory::getDocument();
     $document->addStyleSheet(JURI::root() . 'plugins/system/bt_socialconnect_system/element/css/style.css');
     $session = JFactory::getSession();
     $message = $session->get('bts-message');
     if ($message) {
         JFactory::getApplication()->enqueueMessage($message);
         $session->clear('bts-message');
     }
     $params = JComponentHelper::getParams('com_bt_socialconnect');
     if (JRequest::getVar("bttask") == "login" || JRequest::getVar("bttask") == "register") {
         if (file_exists(JPATH_ROOT . '/modules/mod_btsocialconnect_login/helper.php')) {
             require_once JPATH_ROOT . '/modules/mod_btsocialconnect_login/helper.php';
             modbt_socialconnectHelper::ajax();
         }
     }
     if (isset($_REQUEST["code"])) {
         $code = $_REQUEST["code"];
         if (isset($_REQUEST['state']) && $_REQUEST['state'] == 'sc_fb') {
             $callback_url = JURI::root();
             $token_url = JHtmlBt_Socialconnect::getTokenUrl(trim($params->get('fbappId', '')), $callback_url, trim($params->get('fbsecret', '')), $code);
             $response = JHtmlBt_Socialconnect::curlResponse($token_url);
             $paramsFB = null;
             parse_str($response, $paramsFB);
             $graph_url = "https://graph.facebook.com/me?access_token=" . $paramsFB['access_token'];
             $user = JHtmlBt_Socialconnect::curlResponse($graph_url);
             $user = JHtmlBt_Socialconnect::prepareData(json_decode($user), 'facebook');
             $user = JHtmlBt_Socialconnect::assignProfile($user);
             $user['access_token'] = $paramsFB['access_token'];
             JHtmlBt_Socialconnect::checkUser($user, $params);
             if ($params->get('fbregister', 'automatic') == 'automatic') {
                 JHtmlBt_Socialconnect::authenticationSocial($params, $user);
             } else {
                 if (!empty(JFactory::getUser()->id)) {
                     JHtmlBt_Socialconnect::authenticationSocial($params, $user);
                     JHtmlBt_Socialconnect::reloadParent($return_decode);
                 } else {
                     JHtmlBt_Socialconnect::loadDataForm($user);
                 }
             }
         }
         if (isset($_REQUEST['state']) && $_REQUEST['state'] == 'sc_tt') {
             if (!class_exists('TwitterOAuth')) {
                 require_once JPATH_SITE . '/components/com_bt_socialconnect/helpers/html/twitter/twitteroauth.php';
             }
             $session = JFactory::getSession();
             if (!isset($_REQUEST['btcallback'])) {
                 $connection = new TwitterOAuth(trim($params->get('ttappId', '')), trim($params->get('ttsecret', '')));
                 $uri = JFactory::getURI();
                 $mainframe = JFactory::getApplication();
                 $uri->setVar('btcallback', 1);
                 $request_token = $connection->getRequestToken($uri->toString());
                 $session->set('oauth_token', $request_token['oauth_token']);
                 $session->set('oauth_token_secret', $request_token['oauth_token_secret']);
                 /* If last connection failed don't display authorization link. */
                 switch ($connection->http_code) {
                     case 200:
                         $url = $connection->getAuthorizeURL($request_token['oauth_token']);
                         $mainframe->redirect($url);
                         break;
                     default:
                         JHtmlBt_Socialconnect::response('Could not connect to Twitter. Refresh the page or try again later.');
                 }
             } else {
                 if (isset($_REQUEST['oauth_token']) && $session->get('oauth_token') !== $_REQUEST['oauth_token']) {
                     $session->clear('oauth_token');
                     $session->clear('oauth_token_secret');
                 } else {
                     $connection = new TwitterOAuth(trim($params->get('ttappId', '')), trim($params->get('ttsecret', '')), $session->get('oauth_token'), $session->get('oauth_token_secret'));
                     $access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);
                     if (200 == $connection->http_code) {
                         $user = $connection->get('account/verify_credentials');
                         $user = JHtmlBt_Socialconnect::prepareData($user, 'twitter');
                         $user = JHtmlBt_Socialconnect::assignProfile($user, $params->get('tt-profiles'));
                         $user['access_token'] = serialize($access_token);
                         JHtmlBt_Socialconnect::checkUser($user, $params);
                         $session->set('connection', serialize($connection));
                         if ($params->get('ttregister', 'automatic') == 'automatic') {
                             JHtmlBt_Socialconnect::authenticationSocial($params, $user);
                         } else {
                             if (!empty(JFactory::getUser()->id)) {
                                 JHtmlBt_Socialconnect::authenticationSocial($params, $user);
                                 JHtmlBt_Socialconnect::reloadParent($return_decode);
                             } else {
                                 $user['email1'] = '';
                                 $user['email2'] = '';
                                 JHtmlBt_Socialconnect::loadDataForm($user);
                             }
                         }
                     } else {
                         JHtmlBt_Socialconnect::response('Error:' . $connection->http_code);
                     }
                 }
             }
         }
         if (isset($_REQUEST['state']) && $_REQUEST['state'] == 'sc_gg') {
             $token = JHtmlBt_Socialconnect::getTokenGG($code, trim($params->get('ggappId', '')), trim($params->get('ggsecret', '')), JURI::base(), 'authorization_code');
             $user = JHtmlBt_Socialconnect::getUserGG($token->access_token);
             $user = JHtmlBt_Socialconnect::prepareData($user, 'google');
             $user = JHtmlBt_Socialconnect::assignProfile($user, $params->get('gg-profiles'));
             $user['access_token'] = $token->access_token;
             // check existing user
             JHtmlBt_Socialconnect::checkUser($user, $params);
             if ($params->get('ggregister', 'automatic') == 'automatic') {
                 JHtmlBt_Socialconnect::authenticationSocial($params, $user);
             } else {
                 if (!empty(JFactory::getUser()->id)) {
                     JHtmlBt_Socialconnect::authenticationSocial($params, $user);
                     JHtmlBt_Socialconnect::reloadParent($return_decode);
                 } else {
                     JHtmlBt_Socialconnect::loadDataForm($user);
                 }
             }
         }
         if (isset($_REQUEST['state']) && $_REQUEST['state'] == 'sc_linkedin') {
             $callback_url = JURI::root();
             $token_url = JHtmlBt_Socialconnect::getTokenLinkedin(trim($params->get('linkappId', '')), $callback_url, trim($params->get('linksecret', '')), $code);
             $user = JHtmlBt_Socialconnect::fetch('GET', $token_url->access_token);
             $user = JHtmlBt_Socialconnect::prepareData($user, 'linkedin');
             $user = JHtmlBt_Socialconnect::assignProfile($user);
             $user['access_token'] = $token_url->access_token;
             JHtmlBt_Socialconnect::checkUser($user, $params);
             if ($params->get('linkregister', 'automatic') == 'automatic') {
                 JHtmlBt_Socialconnect::authenticationSocial($params, $user);
             } else {
                 if (!empty(JFactory::getUser()->id)) {
                     JHtmlBt_Socialconnect::authenticationSocial($params, $user);
                     JHtmlBt_Socialconnect::reloadParent($return_decode);
                 } else {
                     JHtmlBt_Socialconnect::loadDataForm($user);
                 }
             }
         }
     }
     //Check facebook login
     if (isset($_COOKIE['facebookid']) && $_COOKIE['facebookid'] != "") {
         $faceid = $_COOKIE['facebookid'];
         $userid = JHtmlBt_Socialconnect::getUser($faceid);
         if ($userid) {
             $email = JHtmlBt_Socialconnect::getEmail($userid);
             if ($email) {
                 if (empty(JFactory::getUser()->id)) {
                     JHtmlBt_Socialconnect::loginSocial($email);
                 }
             }
         }
     }
 }