Политики Laravel и Gate игнорируют, если администратор зарегистрирован

Я использую Policies и Gate (Roles - Role_User Users) для назначения разрешений пользователям в моем проекте Laravel, все работает нормально. Но я не знаю, как учетная запись администратора может выполнять каждое действие, не назначая ей все разрешения.

// AuthServiceProvider
public function boot()
{
    $this->registerPolicies();
    $this->registerStaffPolicies();
    $this->registerTaskPolicies();
    $this->registerDepartmentPolicies();
    $this->registerPositionPolicies();
    $this->registerPermissionPolicies();
}

public function registerStaffPolicies()
{
    Gate::define('staff-view', function($user){
        return $user->hasAccess(['staff-view']);
    });
    Gate::define('staff-add', function($user){
        return $user->hasAccess(['staff-add']);
    });
    Gate::define('staff-edit', function($user){
        return $user->hasAccess(['staff-edit']);
    });
    Gate::define('staff-delete', function($user){
        return $user->hasAccess(['staff-delete']);
    });
}
// registerTaskPolicies ...

// My route
Route::get('/staff', 'StaffController@index')->middleware('can:staff-view');
Route::get('/staff/add', 'StaffController@add')->middleware('can:staff-add');
Route::post('/staff/add', 'StaffController@add')->middleware('can:staff-add');

person colinmorgan    schedule 07.09.2019    source источник


Ответы (1)


Вы можете определить перехватчик ворот для своей роли администратора.

Gate::before(function ($user, $ability) {
    if ($user->isAdmin()) {
        return true;
    }
});
person Dino Numić    schedule 07.09.2019
comment
Спасибо за отличный ответ, это то, что я искал - person colinmorgan; 07.09.2019