web-dev-qa-db-ja.com

Joomlaの現在のユーザーとしてユーザーIDを設定します

UserId-_$uid_があります。

このユーザーをjoomlaのs/mにログインした状態にしたかったのです。

私はこれを試しました-

_$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
_

どうすればuid自体を使用してユーザーを現在のユーザーにすることができますか?

pdate:ユーザーをJUser :: load()でロードできることがわかりました

試験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)
_

Drupalにはwordpress wp_set_current_user($uid);user_load_by_name()があるので、joomlaに同様の関数はありますか?助けてください!!!

ありがとう!

1
jitendrapurohit

あなたはコアプラグインを使用してこれを簡単に行うことができます...

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