【问题标题】:How to check multiple permission condition in if statement using laravel spatie package?如何使用 laravel spatie 包检查 if 语句中的多个权限条件?
【发布时间】:2018-08-17 00:38:11
【问题描述】:

我需要检查 if 语句中的条件以获得多个权限。它使用来自 laravel 的 spatie 包。我在下面使用此代码,但似乎不起作用。它可以显示输出,但输出不正确。它不过滤条件。

if (auth()->user()->can('View Consultant') || auth()->user()('View Administration') 
|| auth()->user()('View Accountant') || auth()->user()('All departments')) 
 {

        $itemregistrations = DB::table('itemregistrations')
                             ->where('categoryid','=', '1',',','2',',','3')
                             ->get();

        return view('profil.index', compact('itemregistrations'));

 } 

代码是否正确?

条件是有权限的用户(查看顾问、查看管理、查看会计、所有部门)可以查看所有部门的顾问、管理和会计列表。

对于有权限的用户(仅查看顾问)只能查看顾问列表。

【问题讨论】:

    标签: if-statement laravel-5 laravel-permission


    【解决方案1】:

    根据文档,

    您可以检查用户是否具有任何权限数组:

    $user->hasAnyPermission(['edit articles', 'publish articles', 'unpublish articles']);
    

    因此,您可以执行以下操作来检查多个条件。

    if (auth()->user()->hasAnyPermission(['View Consultant', 'View Administration', 'View Accountant', 'All departments']) 
     {
            $itemregistrations = DB::table('itemregistrations')
                                 ->where('categoryid','=', '1',',','2',',','3')
                                 ->get();
    
            return view('profil.index', compact('itemregistrations'));
    
     } 
    

    【讨论】:

    • 我正在使用(Auth::user()->hasPermissionTo('View Consultant')) 可以解决if语句的问题..谢谢您的回复..
    • 是的,也可以。我是按照你的问题码回答的。
    【解决方案2】:

    如果您需要检查模型是否具有所有权限,您应该使用方法hasAllPermissions()。例如:

    if (\Auth::user()->hasAllPermissions('View Consultant', 'View Administration', 'View Accountant', 'All departments')) {
        // do something
    } 
    

    【讨论】:

      【解决方案3】:

      可以以两种方式使用。 单控如下。

      @can('edit articles')
        //
      @endcan
      

      多重控制如下。

      @if(auth()->user()->can('edit articles') && auth()->user()->can('edit uploads'))
        //
      @endif
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 2020-07-17
        • 2020-07-02
        • 2021-05-31
        • 1970-01-01
        • 2021-06-29
        相关资源
        最近更新 更多