繁体   English   中英

如何检查用户在刀片 laravel 中是否具有角色或权限

[英]how to check if user has role or permission in blade laravel

我正在使用 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('admin') || @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

注意不要忘记在 provider 中导入 Gate门面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM