Не понятно про Policy в Laravel
В контроллере Task Controller в методе
public function create()
{
$this->authorize('create', auth()->user());
}
проверяется разрешение выполнить действие.
При этом есть 2 политики: Task Policy и UserPolicy с одинаковыми методами :
public function create(User $user)
{
return $user->isAdmin();
}
Вопрос: почему для Task Controller проверка идет в User Policy, а не в TaskPolicy? Кто подскажет что я упустил?
Ответы (1 шт):
Автор решения: Dinario
→ Ссылка
Laravel не связывает контроллер с политиками, как вы подумали. Он связывает модель с политикой. Читаем "Policy Auto-Discovery" и "Actions That Don't Require Models". После полученных знаний становится понятно, что не нужно указывать пользователя. Нужно указывать имя класса для которого нужна проверка:
$this->authorize('create', Task::class);