Laravel маршруты с доверием

Я пытаюсь верить в мой код Laravel. На данный момент у меня есть пользователи, разрешения и роли.

создать панель администратора, где вы хотите получить доступ к "разрешения" == "админ - панель"

Я хотел бы, чтобы это было сделано с помощью файла rout.php

Мои файлы: Middleware / EntrustMiddleware.php

class EntrustMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!Entrust::can('admin-panel')) {
        return Redirect::to('home');
        }
        return $next($request);
    }
}

routes.php

Route::get('admin-panel', ['middleware' => ['auth', 'Entrust'], function () {

}]);

Я перепробовал много методов, но все равно не работает. Может кто-нибудь подсказать, как настроить файл "rout.php", чтобы доступ к "админ - панель /" был только тогда, когда "разрешения" == "админ-панель"

--Редактировать--

Когда я использую этот метод, я получаю сообщение об ошибке:

Route::group(['middleware' => ['Entrust']], function () {
    //put your routes here
    Route::get('/admin', 'Admin\AdminController@index');
});

ErrorException в строке Pipeline.php 136: call_user_func_array() ожидает, что параметр 1 будет допустимым обратным вызовом, класс 'Zizaco\Entrust\EntrustFacade' не имеет метода 'handle'

--edit2--

['middleware' => ['permission:NAME']]

Теперь я понимаю:)

Должен ли Contoller добавить дополнительную безопасность или нет?

1 ответ

Решение

Если вы используете entrustдля всех тех routes который вы хотите разрешить доступ для конкретных roles, вам просто нужно поместить это в группу, которая будет делать эту работу, как говорится, вот как это будет выглядеть,

Route::group(['middleware' => ['add roles name here']], function () {
  //put your routes here
});
Другие вопросы по тегам