【问题标题】:how to check if user has role or permission in blade laravel如何检查用户是否在刀片 laravel 中具有角色或权限
【发布时间】:2021-10-18 17:10:37
【问题描述】:

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

【问题讨论】:

    标签: php laravel laratrust


    【解决方案1】:

    对于这种工作,我们在 laravel 中有门,你可以简单地在 AuthServiceProvider.php 中注册一个门

    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 门面

    【讨论】:

    • 如果你没有权限,那么你可以在 laravel 中使用策略
    【解决方案2】:

    您可以检查用户是否在视图中具有权限:

    $user->hasRole(['owner', 'admin']);  // this returns true
    

    或由登录的用户:

    Auth::user()->hasRole('role-name');
    

    或者这个:

    Auth::user()->hasPermission('permission-name');
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      相关资源
      最近更新 更多