2012-04-04 14 views
3

私はカスタムjoomlaコンポーネントを構築しており、アカウントパスワードを使用せずにログインセッションを設定する方法を検討しています。私はすでに持っています:Joomla 2.5 - パスワードなしでユーザーをログイン

$app = &JFactory::getApplication('site'); 

$result = $app->login(array(

    'username' => 'james', 
    'password' => 'password' 

)); 

明らかにユーザーのパスワードが必要です。これらのハンドルのいずれかを使用できるように、私はユーザーIDとユーザー名にアクセスできます。ユーザーをログオンするために使用できる別のオブジェクトまたはメソッドがありますか、または必要なすべての$ _SESSION変数を手動で設定するなどのカスタムソリューションがありますか?

おかげで、事前に、任意の助けに感謝:)

+0

なぜあなたはそれをしたいですか? –

+0

コンポーネントの管理領域では、そのユーザーとしてログインしてアカウントを表示することができます。プロジェクトには必要です:) – jhdevuk

+0

誰か?いいえアイデア? :) – jhdevuk

答えて

5
//log user in 
if(!JFactory::getUser()->id) 
{ 
    $email = (string)$response['linkedin']->{'email-address'}; 

    $db = JFactory::getDbo(); 
    $app = JFactory::getApplication(); 

    $sql = "SELECT * FROM #__users WHERE email = " . $db->quote($email); 
    $db->setQuery($sql); 
    $result = $db->loadObject(); 

    if($result->id) 
    { 
      $jUser = JFactory::getUser($result->id); 
      //$userarray = array(); 
      //$userarray['username'] = $jUser->username; 
      //$userarray['password'] = $jUser->password; 
      //$app->login($userarray);    

      $instance = $jUser;  
      $instance->set('guest', 0); 

      // Register the needed session variables 
      $session =& JFactory::getSession(); 
      $session->set('user',$jUser); 


      // Check to see the the session already exists.       
      $app->checkSession(); 

      // Update the user related fields for the Joomla sessions table. 
      $db->setQuery(
        'UPDATE '.$db->quoteName('#__session') . 
        ' SET '.$db->quoteName('guest').' = '.$db->quote($instance->get('guest')).',' . 
        ' '.$db->quoteName('username').' = '.$db->quote($instance->get('username')).',' . 
        ' '.$db->quoteName('userid').' = '.(int) $instance->get('id') . 
        ' WHERE '.$db->quoteName('session_id').' = '.$db->quote($session->getId()) 
      ); 
      $db->query(); 

      // Hit the user last visit field 
      $instance->setLastVisit();   

      //return true; 

      $app->redirect('index.php?option=com_community&view=profile'); 
    } 
    else 
    { 

      $url = "index.php?option=com_community&view=register"; 
      $app->redirect($url,'We did not find your email address in our system. Please register.'); 
      //echo "redirect to registration page"; 
      //exit(); 


      //$url = 'index.php?option=com_users&view=registration&name=' . $user_profile['name'] . '&username=' . $user_profile['username'] . '&email=' . $user_profile['email']; 
      //$url = JRoute::_($url); 
      //$app->redirect($url); 
    } 

} 
+0

'$ session-> set( 'user'、$ jUser)'行が自分のページをログインページにリダイレクトしています。なぜ私は理解できませんでした。助けてください。 – Sayed

6

重要:

// Register the needed session variables 
$session =& JFactory::getSession(); 
$session->set('user', $jUser); 

優秀必要なセッション変数を登録する//後にセッションオブジェクトを追加するnecesaryです、THX

+0

未来のGoogle社員、この回答は、@oasisfleetingによる回答を編集したものです。それでも良いキャッチだったので、あなたは両方をupvoteできます。 :) –

関連する問題