我需要检查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'));
}
代码正确吗?
条件是拥有权限的用户(查看顾问,查看管理,查看会计师,所有部门)可以查看所有部门的顾问,行政和会计师列表。
对于具有权限的用户(仅查看顾问),只能查看顾问列表。
答案 0 :(得分: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'));
}
答案 1 :(得分:1)
如果需要检查模型是否具有所有权限,则应使用方法hasAllPermissions()
。例如:
if (\Auth::user()->hasAllPermissions('View Consultant', 'View Administration', 'View Accountant', 'All departments')) {
// do something
}
答案 2 :(得分:0)
可以以两种方式使用。 单控如下。
@can('edit articles')
//
@endcan
多重控制如下。
@if(auth()->user()->can('edit articles') && auth()->user()->can('edit uploads'))
//
@endif