Функция ПОСЛЕ аутентификации и ПЕРЕД просмотром (laravel)

#php #laravel #authentication

Вопрос:

Я пытаюсь получить настройки из базы данных и поместить их в конфигурацию, моей функции нужен идентификатор пользователя, чтобы она могла вводить только его настройки, в поставщике услуг ( функция загрузки ) пока нет аутентификации, не могли бы вы посоветовать мне правильное место для запуска моей функции, пожалуйста, обратите внимание, что мне нужно, чтобы она работала до того, как представление будет отображено, потому что внутри нее есть настройки для макета, это моя функция :

 // public static becouse it's inside Class//
public static function getAppSettings(){
        if (!config('settings') amp;amp; Auth::check()) {
            $user_id = Auth::user()->id;
            $settings = AppSettings::where('user_id', $user_id)->get()->all();
            $settings = Cache::remember('settings', 60, function () use ($settings) {
                // Laravel >= 5.2, use 'lists' instead of 'pluck' for Laravel <= 5.1
                return $settings->pluck('value', 'key')->all();
            });
            config()->set('settings', $settings);
        }else{
            // this is for testing//
            dd('no');
        }
    }

 

без аутентификации он может работать внутри поставщика услуг ( функция загрузки), но он будет содержать все настройки для всех пользователей.

Ответ №1:

Для этого вы можете создать промежуточное программное обеспечение.Промежуточное программное обеспечение вызывает после маршрутов и до контроллера

 php artisan make:middleware Settings
 

Это создаст класс ниже

 <?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateHttpRequest;

class Settings
{
    /**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
      // exicute your logic here
        return $next($request);
    }
}
 

Вы можете вызвать свой метод внутри handle и перед следующим
Вы можете прочитать больше об этом в
https://laravel.com/docs/8.x/middleware