@Rus_K_o
Веб программист

Как включить debug laravel только для админов?

Хочу отключить debug в браузере для всех пользователей кроме админа, сделал все по этой инструкции, но что то не работает.
Фрагмент config/app.php (Debug Mode у меня отключен):
/*
    |--------------------------------------------------------------------------
    | Application Debug Mode
    |--------------------------------------------------------------------------
    |
    | When your application is in debug mode, detailed error messages with
    | stack traces will be shown on every error that occurs within your
    | application. If disabled, a simple generic error page is shown.
    |
    */

    'debug' => false,

app/Http/Middleware/OnEnter:
namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class OnEnter
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
	{
		if (Auth::user()->moderated == '8') //Так у меня идет проверка админа 
		{
			Config::set('app.debug', true);
		}
	}
}

Фрагмент app/Http/Kernel.php:
/**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
		'enter' => \App\Http\Middleware\OnEnter::class,
    ];

Сейчас при ошибке просто выдается страница ошибки, то есть не Debug Mode, короче мне нужно, что бы у пользователей с moderated = 8 работал Debug Mode.
Благодарю!
  • Вопрос задан
  • 309 просмотров
Решения вопроса 1
Rikcon
@Rikcon
Закиньте его не в routeMiddleware ( всё что в routeMiddleware вызывается только руками с роута или контроллера )
Я так понял вам нужен массив $middleware который выше, тогда милдлвар выполняется при КАЖДОМ запросе.

Но я думаю лучше его закинуть в группу web

protected $middlewareGroups = [
        'web' => [ вот сюда


P.S если у вас старая версия ларавела ( кажись до 5.2 ) то у вас такой группы нет, закидывайте в $middleware тогда или нужным роутам его пропишите.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы