Laravel - как получить текущего пользователя в AppServiceProvider

поэтому я обычно получаю текущего пользователя с помощью Auth::user() и когда я определяю, действительно ли пользователь вошел в систему Auth::check. Однако это, похоже, не работает в my AppServiceProvider. Я использую его для обмена данными во всех представлениях. Я!--4--> и Auth::user() и Auth::check() при входе в систему и я получаю NULL и false.

как я могу получить текущего пользователя в моем AppServiceProvider ? Если это невозможно, как получить данные, уникальные для каждого пользователя (данные, которые отличаются согласно user_id) для всех видов. Вот мой код для уточнения.

if (Auth::check()) {
        $cart = Cart::where('user_id', Auth::user()->id);
        if ($cart) {
            view()->share('cart', $cart);

        }
    } else {
        view()->share('cartItems', Session::get('items'));
    }

2 ответов


сеанс Laravel инициализируется в промежуточном ПО, поэтому вы не можете получить доступ к сеансу от поставщика услуг, потому что они выполняют до промежуточное ПО в жизненном цикле запроса

вы должны использовать промежуточное ПО, чтобы поделиться своими вариациями из сеанса

Если по какой-то другой причине вы хотите сделать это в поставщике услуг, вы можете использовать посмотреть композитор с обратным вызовом, как это:

public function boot()
{
    //compose all the views....
    view()->composer('*', function ($view) 
    {
        $cart = Cart::where('user_id', Auth::user()->id);

        //...with this variable
        $view->with('cart', $cart );    
    });  
}

обратный вызов будет выполняться только когда представление фактически составляется, поэтому промежуточные программы будут уже выполнены и сеанс будет доступен


на AuthServiceProvider ' s boot() функция напишите эти строки кода

public function boot()
{
    view()->composer('*', function($view)
    {
        if (Auth::check()) {
            $view->with('currentUser', Auth::user());
        }else {
            $view->with('currentUser', null);
        }
    });
}

здесь * означает - во всех ваших взглядах $currentUser переменная доступна.

затем из view file {{ currentUser }} даст вам информацию о пользователе, если пользователь аутентифицируется иначе null.