我正在使用Laravel 8,我使用Laratrust包的角色和权限
i使用以下指令检查刀片视图中的角色或权限
@permission('add_user')
<a href="route({{'add_user')}}">create new user </a>
@endpermission
@role('admin')
<a href="route({{'add_user')}}">create new user </a>
@endrole
我的问题是有没有办法同时检查角色和权限
比如
@role(管理)| | @permission (add_user)
可以在视图中检查用户是否有权限:
$user->hasRole(['owner', 'admin']); // this returns true
或者由登录用户:
Auth::user()->hasRole('role-name');
或:
Auth::user()->hasPermission('permission-name');
对于这种工作我们在laravel中有gate你可以简单地在AuthServiceProvider.php中注册一个gate
Gate::define('owner',function(User $user){
if($user->hasRole == "owner" && $user->hasPermission == "permission-name"){
return true;
}
return false;
})
那么在叶片内部你可以使用@can操作符检查
@can('owner')
"write something which visible to owner"
@endcan
注意不要忘记在提供者
中导入Gate facade