Промежуточное ПО Laravel Spatie с использованием роли ИЛИ разрешения - PullRequest
0 голосов
/ 16 июня 2019

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

Что я пытаюсь сделать:

Я пытаюсь проверить на каждом маршруте, является ли пользователь администратором (может делать НИЧЕГО) или нет администратором и имеет определенные разрешения.

Что я пробовал:

Я пытался добавить | знак.

// GET ALL SEASONS
Route::get('/', 'SeasonsController@index')
            -> name('index')
            -> middleware(['role:admin|permission:seasons show active']);

Что произошло VS ожидаемое поведение:

Всякий раз, когда я вхожу в систему с пользователем, у которого есть разрешение seasons show active, я получаю 403 Forbidden.

Но если я удаляю role:admin, пользователь получает разрешение.

1 Ответ

1 голос
/ 16 июня 2019

предпочтительно работать только с разрешениями.

Предоставьте все права на роль администратора (сезоны показывают активные ... и другие). Тогда вам не понадобится роль: admin в вашем промежуточном программном обеспечении.

Чтобы предоставить все разрешения для вашей роли, администраторский код, как показано ниже, должен выполнить работу

$permissions = \Spatie\Permission\Models\Permission::all()

$role = \Spatie\Permission\Models\Role::where('name', 'admin')->first();

// foreach on permissions
 $role->givePermissionTo($permission);
// end foreach 
...