Я пытаюсь интегрировать приложение Laravel с Xenforo. Кажется, самый простой способ сделать это — синхронизировать события создания, входа и выхода пользователя.
Поэтому, когда пользователь выходит из Xenforo, например, я бы хотел вызвать Laravel Auth::logout
,
Xenforo был установлен в Laravels public/forum
папка.
Выход из системы Xenforo выполняется в public/forum/src/XF/Pub/Controller/Logout.php
:
namespace XF\Pub\Controller;
use XF\Mvc\ParameterBag;
use XF\Mvc\Reply\AbstractReply;
use Illuminate\Support\Facades\Auth; // ===========> WONT WORK
class Logout extends AbstractController
{
public function actionIndex()
{
$this->assertValidCsrfToken($this->filter('t', 'str'));
/** @var \XF\ControllerPlugin\Login $loginPlugin */
$loginPlugin = $this->plugin('XF:Login');
$loginPlugin->logoutVisitor();
Auth::logout(); // =========================> WONT WORK
return $this->redirect($this->buildLink('index'));
}
(...)
}
Я думаю, это связано с тем, что Xenforo не знает об этом классе, потому что его автозагрузка не знает об этом.
Есть ли способ заставить Xenforo, который имеет свой собственный автозагрузчик, также рассматривать автозагрузчик Laravels?
Если нет, то как я могу добавить этот класс в автозагрузчик Xenforos?
Заранее спасибо.
Даже если ты мог, скорее всего, это будет грязно и может привести к ошибкам, которые вы бы не рассмотрели. Самым чистым подходом будет установка конечной точки API в Laravel, к которой вы можете сделать запрос из контроллера выхода из Xenforo, или кустарная команда, которую контроллер вызывает для выхода из системы данного пользователя. Таким образом, вы избавляете от необходимости загружать фреймворк из другого фреймворка, и вы сохраняете их хорошо разделенными.
Вы можете взглянуть на официальный композитор документы о том, как включить дополнительные автозагрузчики в.
РЕДАКТИРОВАТЬ:
Я собираюсь перефразировать мой ответ; вам не следует пытаться загрузить Laravel в Xenforo из-за возможных проблем с версиями сторонних библиотек, дублированных вспомогательных методов (если они есть у Xenforo), различных других проблем, лучше использовать Laravel как endpoint
и делая REST
звонки для входа в систему, выхода из системы и т. д. Именно то, что упоминал @samrap.
Мой вопрос: зачем вам использовать Xenforo, обязательно ли использовать его для достижения того, что вы пытаетесь сделать?