Не понятно про 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); 
→ Ссылка