Я хотел бы установить глобальную переменную после аутентификации пользователя - назовем ее permissions
. Переменная должна быть доступна в контроллерах и представлениях.
Каков наилучший способ добиться этого? Теперь в каждом методе я должен выполнять запрос к базе данных и проверять роли пользователей, что не оптимально.
Я знаю, что могу объявить метод view::share
в appserviceprovider для передачи переменной в представления, но метод загрузки выполняется после аутентификации пользователя.
Обновить
Я создал BaseController, который расширяется от Controller.
Базовый контроллер:
class BaseController extends Controller {
public $permissions;
public function __construct() {
$this->permissions = GroupRoles::where('id', Auth::user()->id)->first();
}
}
Затем я пытаюсь получить доступ к переменной разрешений из UserController, которая наследуется от BaseController. Получение попытки получить доступ к не-объекту. Я думаю, это потому, что конструктор BaseController создается до промежуточного программного обеспечения.
class UserController extends BaseController {
public function showPermissions() {
return var_dump($this->permissions);
}
}
Окончательное решение
Краеугольным камнем было использование $this->middleware(function ($request, $next)
в BaseController.