it-swarm-eu.dev

Come accedere all'utente in Joomla 3.x da uno script esterno

Spero che tu mi possa aiutare con questo per trovare una soluzione.

Sul sito1 ho un'installazione di Joomla 3.x. Voglio eseguire uno script esterno che convalida un utente sul sito2 (questo sta già funzionando).

Dopo aver ottenuto una risposta positiva da site2, ottengo il nome utente restituito allo script Joomla site1 (o, se necessario, un secondo script sul sito1).

Ora quello che devo fare è controllare sul sito1 se questo nome utente esiste nel DB Joomla. Se vero, l'utente dovrebbe accedere a Joomla e reindirizzato a un URL. In caso contrario, l'utente dovrebbe essere creato in Joomla con una password casuale e quindi aver effettuato l'accesso.

Ho provato il tutorial del plugin di autenticazione, ma questo non mi ha aiutato. Inoltre ho provato questo script, ma non ha funzionato troppo: https://Gist.github.com/AdamMadrzejewski/020c4fa4b1d0e7af78b8

Qualche idea su come accedere a un utente in Joomla da uno script esterno?

Grazie!

1
JoomlaRookie11

Questa è una risposta piuttosto tardiva ma può aiutare qualcuno.

Se si desidera accedere all'utente da Joomla stesso poiché il Sito 1 è Joomla, è possibile ottenere l'ID utente dell'utente e utilizzare il seguente metodo per accedere se esiste un ID utente altrimenti è necessario prima registrare l'utente utilizzando il modello di registrazione.

function _forceLogin($userId)
{
    $user = JFactory::getUser($userId);
    if ($user->guest) {
        return 'guest';
    } else {
        //Will authorize you as this user.
        JPluginHelper::importPlugin('user');
        $options = array();
        $options['action'] = 'core.login.site';
        $response = new stdClass();
        $response->username = $user->username;
        $response->language = '';
        $response->email = $user->email;
        $response->password_clear = '';
        $response->fullname = '';
        $result = JFactory::getApplication()->triggerEvent(
            'onUserLogin', array((array)$response, $options)
        );
        return $result;
    }
}

Questo è l'unico modo migliore per accedere come se non lo utilizzassi, il tuo utente verrà registrato ma la sessione per l'utente non verrà aggiornata.

Inoltre, se hai trovato un modo migliore, condividi qui.

1
Pratyush