Политика Laravel с отношениями «многие ко многим»

Роль а также разрешение две модели, и так как они имеют отношение многие ко многим, у меня есть промежуточная таблица под названием 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;
}
}

Это потому, что промежуточная таблица не имеет ассоциированной модели?

3

Решение

У меня был похожий сценарий, и я делаю:

Auth:user()->can('create', RolePermission::class);вместо авторизации.

Я думаю (не проверял) вы также можете сделать:

$this->authorize('create', [RolePermission::class, Auth::user()]), Второй аргумент в массиве будет передан как единственный параметр в вашей политике.

Я очень новичок в Laravel, мне помогли решить подобную проблему, надеюсь, это сработает для вас.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]