2009-08-05 7 views
0

Ich muss einen Benutzer automatisch anmelden, wenn bestimmte Ereignisse auftreten, z. B. wenn ein Benutzer sein Kennwort vergessen und erfolgreich zurückgesetzt. Nach Kundenanforderungen muss eine Datei in com_jumi eingebettet werden, um die Anmeldung zu machen und nicht com_user.Einen Benutzer in Joomla von com_jumi (oder einem anderen externen (zu Joomla) Skript anmelden)

ich die Funktion Login von jSite Objekt, wie in: $mainframe->login($credentials, $options)
und diese Methode true zurückkehrt, dann mache ich eine Umleitung $mainframe->redirect()
aber in der Zielseite kein Benutzer angemeldet ist ???

Fehle ich einige Schritt (s), um dies zu erreichen ???

+0

hast du überprüft ob $ mainframe-> login() aufgerufen wird und ob $ credentials richtiges array hat? Array-Schlüssel müssen Benutzername und Passwort haben. $ optionen sollten die erinnern mich in das Array, wenn Sie möchten, dass Joomla eine erinnern mich Cookie – jtanmay

Antwort

2

Ich weiß, dass dies ein alter Post ist, aber da ich diesen Post neulich gefunden habe, bevor ich das exakt gleiche Problem gelöst habe, habe ich beschlossen, meine Lösung hier trotzdem zu posten.

Dies ist die Funktion, die ich anmelden erstellt (ich benutze nicht die mir Optionen erinnern):

function joomla_login($user,$pass) 
{ 
    if (!$user) return false; 
    if (!$pass) return false; 
    $credentials = array('username' => $user, 'password' => $pass); 
    $login_site =& JFactory::getApplication('site'); 
    $login_site->login($credentials, $options=array()); 
    return; 
} 
+0

Perfekt, ich habe dies als die einfachste von allen gefunden, danke – mukamaivan

0
//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); 


     $instance->set('aid', 1); 
     $instance->set('usertype', 'Registered'); 


     // Register the needed session variables 

     $session->set('user',$instance); 


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


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

     // Get the session object 
     $table = & JTable::getInstance('session'); 
     $table->load($session->getId()); 

     $table->guest  = $instance->get('guest'); 
     $table->username = $instance->get('username'); 
     $table->userid  = intval($instance->get('id')); 
     $table->usertype = $instance->get('usertype'); 
     $table->gid   = intval($instance->get('gid')); 

     $table->update();       

     // 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

Vielen Dank für das Posten einer Antwort! Während ein Code-Snippet die Frage beantworten könnte, ist es immer noch großartig, Zusatzinformationen wie Erklärungen usw. hinzuzufügen. – j0k

0

Ich ziehe Benutzer-ID zu verwenden, und Benutzer-ID mit Jumi in Joomla I zu erhalten do:

defined('_JEXEC') OR defined('_VALID_MOS') OR die("Direct Access Is Not Allowed"); 

$jAp = & JFactory::getApplication(); 
$user = & JFactory::getUser(); 
echo $user->get('id');