Я знаю, как использовать политики Laravel, и все работает, но я застрял с create(...)
методом.
Мое приложение - дневник тренировок для лыжников. Каждый гонщик может управлять (просматривать, добавлять, редактировать ..) своим собственным дневником. Каждый тренер может вести свой дневник, дневник всех гонщиков, но не других тренеров. Я использую нативную политику Laravel, и она прекрасно работает при *update(...)
и delete(...)
методе, но не create(...)
.
TrainingRecordPolicy.php:
public function update(User $user, TrainingRecord $record)
{
if ($user->id == $record->user->id) {
return true;
}
if ($user->isTrainer() && $record->user->isRacer()) {
return true;
}
return false;
}
Я использую его в контроллерах типа $this->authorize('update', $record)
. Но если я хочу проверить, может ли пользователь создать новую запись в дневнике других пользователей, я понятия не имею, как с этим справиться.
Это не работает $this->authorize('create', TrainingRecord::class, $diaryOwner)
, и если я использую $this->authorize('createDiaryRecord', $diaryOwner)
, он вызывает метод внутри UserPolicy
.
Как отправить $diaryOwner
в качестве дополнительного параметра методу create()
в политике?
Примечание : $diaryOwner
извлекается из параметра маршрута user
в маршруте с подписью /diary/{user}