Я смог загрузить фреймворк XenForo из внешнего скрипта (того же сайта), выполнив это:
require(XF_ROOT . '/src/XF.php');
XF::start(XF_ROOT);
$XF = XF::setupApp('XF\Pub\App');
$XF->start();
if(XF::visitor()->user_id) {
// Logged user stuff...
}
Поскольку я не смог загрузить XF: Login как плагин, я попытался скопировать его вручную, и он работает, но я не уверен, что это правильный путь для достижения этого, и я думаю, что что-то упустил. Я пытался использовать XF: Login, используя плагин $ XF-> (‘XF: Login’), но метод не существует, и я не знаю, как правильно получить к нему доступ (поэтому я могу вызвать completeLogin и logoutUser при каждом обновлении cookie / сессии / токена).
К сожалению, я не могу понять, как обращаться с этим контроллером входа в систему.
$ip = $XF->request->getIp();
$service = $XF->service('XF:User\Login', $input, $ip);
$user = $service->validate($password, $error);
//completeLogin
$XF->session->changeUser($user);
XF::setVisitor($user);
$XF->repository('XF:SessionActivity')->clearUserActivity(0, $ip);
$XF->repository('XF:Ip')->logIp(
$user->user_id, $ip,
'user', $user->user_id, 'login'
);
//createVisitorRememberKey
$rememberRepo = $XF->repository('XF:UserRemember');
$key = $rememberRepo->createRememberRecord($user->user_id);
$value = $rememberRepo->getCookieValue($user->user_id, $key);
//$XF->response()->setCookie('user', $value, 365 * 86400); // Uh, didn't work...
setcookie('xf_user', $value, time() + (365 * 86400), '/'); // ugly
P.S. Я также использую XenForo 2.0x.
Задача ещё не решена.
Других решений пока нет …