Я пытаюсь верить в мой код Laravel.
На данный момент у меня есть пользователи, разрешения и роли.
создать панель администратора, где вы хотите получить доступ к «разрешения» == «админ — панель»
Я хотел бы, чтобы это было сделано с помощью файла rout.php
Мои файлы:
Промежуточный / 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», чтобы доступ к «admin — панель /» был только тогда, когда «permissions» == «admin-панель»
—Редактировать—
Когда я использую этот метод, я получаю сообщение об ошибке:
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 добавить дополнительную безопасность или нет?
Если вы используете entrust
для всех тех routes
который вы хотите разрешить доступ для конкретных roles
, вам просто нужно поместить это в группу, которая будет выполнять работу, как говорится, вот как это будет выглядеть,
Route::group(['middleware' => ['add roles name here']], function () {
//put your routes here
});
Других решений пока нет …