Роль а также разрешение две модели, и так как они имеют отношение многие ко многим, у меня есть промежуточная таблица под названием 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;
}
}
Это потому, что промежуточная таблица не имеет ассоциированной модели?
У меня был похожий сценарий, и я делаю:
Auth:user()->can('create', RolePermission::class);
вместо авторизации.
Я думаю (не проверял) вы также можете сделать:
$this->authorize('create', [RolePermission::class, Auth::user()])
, Второй аргумент в массиве будет передан как единственный параметр в вашей политике.
Я очень новичок в Laravel, мне помогли решить подобную проблему, надеюсь, это сработает для вас.
Других решений пока нет …