Role 和 Permission 是两个模型,因为它们具有多对多关系,所以我有一个名为 permission_role
表的中间表。但这没有模型。我正在尝试将权限附加到角色。但是 $this->authorize('create', RolePermission::class);
总是失败并出现错误 "This action is unauthorized."
路线:
Route::post('/rolepermissions/{role}/addpermission', 'RolePermissionController@store')
->name('rolepermission.store');
RolePermissionController:
public function store(StoreRolePermission $request, Role $role)
{
$this->authorize('create', RolePermission::class);
...
}
RolePermissionPolicy:
public function create(User $user)
{
if (($user->usertype == 'ADMIN') || ($user->usertype == 'SUPERADMIN'))
{
return true;
}
else
{
return false;
}
}
是不是中间表没有关联Model?
最佳答案
我有一个类似的场景,我正在做:
Auth:user()->can('create', RolePermission::class);
,而不是授权。
我认为(还没有测试过)你也可以这样做:
$this->authorize('create', [RolePermission::class, Auth::user()])
。数组中的第二个参数将作为策略中的唯一参数传递。
我是 Laravel 的新手,我得到了一些解决类似问题的帮助,希望这对你有用。
关于php - 具有多对多关系的 Laravel 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48842783/