web-dev-qa-db-fra.com

définir l'ID utilisateur en tant qu'utilisateur actuel dans Joomla

J'ai un userId - $uid.

Je voulais que cet utilisateur soit connecté au s/m de joomla.

J'ai essayé ça -

$currentUser = new JUser($uid);

$mainframe = JFactory::getApplication('site');
$credentials = array();
$credentials['username'] = $currentUser->username;
$credentials['password'] = $currentUser->password; //this is the hashed password

//perform the login action
$mainframe->login($credentials);

$newuser = JFactory::getUser(); //this doesn't get updated to the new user ($uid) details

Comment puis-je définir l'utilisateur comme utilisateur actuel en utilisant l'ID lui-même?

Mise à jour: Je viens de trouver que cet utilisateur peut être chargé avec JUser :: load ()

Essai 2-

$user = JUser::getInstance($uid);
$user->load($uid); //this should load the new user.

$newuser = JFactory::getUser(); //still i get the anonymous details here 
            //($newuser->id = 0)

Comme il y a wp_set_current_user($uid); pour wordpress user_load_by_name()] dans Drupal, existe-t-il une fonction similaire pour joomla? Aide s'il vous plaît. !!!

Merci!

1
jitendrapurohit

Vous pouvez le faire simplement en utilisant un plugin principal ...

//Will obtain user object - what the question author needed.
$user = JFactory::getUser($uid);

//Will authorize you as this user.
JPluginHelper::importPlugin('user');
$options = array();
$options['action'] = 'core.login.site';
$response->username = $user->username;
$result = $app->triggerEvent('onUserLogin', array((array)$response, $options));
2
Kunal Nigam