1

我需要检查 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'));

 } 

代码是否正确?

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

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

4

3 回答 3

3

根据文件,

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

$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'));

 } 
于 2018-12-17T16:05:44.687 回答
1

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

if (\Auth::user()->hasAllPermissions('View Consultant', 'View Administration', 'View Accountant', 'All departments')) {
    // do something
} 
于 2019-12-19T09:13:13.663 回答
0

可用于 2 种方式。单控如下。

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

多重控制如下。

@if(auth()->user()->can('edit articles') && auth()->user()->can('edit uploads'))
  //
@endif
于 2021-04-26T13:29:11.920 回答