Anmelden, um einen Benutzer in joomla von com_jumi (oder einem anderen externen (Joomla) Skript)

StackOverflow https://stackoverflow.com/questions/1235858

  •  22-07-2019
  •  | 
  •  

Frage

Ich habe einen Benutzer automatisch anmelden, wenn bestimmte Ereignisse passieren, wenn beispielsweise ein Benutzer vergessen hat, sein Passwort und es erfolgreich zurückgesetzt. Durch die Client-Anforderungen hat eine um eine Datei zu verwenden, eingebettet in com_jumi das Login und nicht com_user zu machen.

Ich bin mit der 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 gibt es keinen Benutzer angemeldet ???

Fehle ich einig Schritt (e) dies zu tun ???

War es hilfreich?

Lösung

Ich weiß, das ist eine alte Post, aber da ich mich dies neulich Post gefunden, bevor das exakt gleiche Problem zu lösen, entschied ich mich, meine Lösung hier sowieso zu veröffentlichen.

Dies ist die Funktion, die ich anmelden erstellt (ich bin nicht mit der erinnere mich Optionen):

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;
}

Andere Tipps

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

Ich ziehe Benutzer-ID zu verwenden, und Benutzer-ID mit Jumi in Joomla erhält ich tun:

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

$jAp = & JFactory::getApplication();  
$user = & JFactory::getUser();  
echo $user->get('id');  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top