Laravel策略和Gate忽略是否已记录管理员

时间:2019-09-07 10:18:24

标签: laravel authentication laravel-authorization

我正在使用策略和门(角色-Role_User用户)向我的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');

1 个答案:

答案 0 :(得分:0)

您可以为管理员角色定义门拦截器。

Gate::before(function ($user, $ability) {
    if ($user->isAdmin()) {
        return true;
    }
});