youmixx
@youmixx
PHP Developer

Laravel как включить debugbar только для админов?

Создал middleware с названием DebugForAdmins

Вот его код:
public function handle(Request $request, Closure $next, $guard = null)
    {
        $auth = Auth::guard($guard);

        if ($auth->user()->isAdmin()) {
            \Debugbar::enable();
        }

        return $next($request);
    }


Теперь по сути мне надо подключить его в Kernel.php:
\App\Http\Middleware\DebugForAdmins::class,
Есть два варианта куда я могу добавить эту строку:
1. В $middlewareGroups в 'web' - но тогда код просто не работает. Т.е. успешно определяется админ ли юзер, но дэбагбар попросту не включается.
2. В $middleware - тогда я могу просто в своем DebugForAdmins вызвать \Debugbar::enable() без никаких проверок и все заработает. Но для всех пользователей. Но если я добавлю проверки на админа, код перестанет работать, т.к. сессия подключается позже и на данном этапе я еще не могу проверить, админ ли юзер.

Т.е. вот, Старт сессии происходит только в $middlewareGroups в 'web', так-что и мой миделвейр DebugForAdmins нужно подключать ниже него. Но в этом случае, как я и сказал выше \Debugbar::enable() попросту не работает.
\Illuminate\Session\Middleware\StartSession::class,


Итог: В одном случае я могу включить DebugBar, но не могу проверить юзера на админа. В втором случае я могу проверить юзера на админа, но попросту не смогу включить DebugBar.
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы