То, что я пытаюсь сделать, - это применить политику к методу управления, который перечисляет кучу записей вместо одной записи, как большинство примеров, которые я видел.
Вместо проверки на ThoughtRecords
Я хочу проверить зарегистрированного пользователя hashedId для пользователя, который запрашивается hashedId в методе контроллера index()
.
Очевидно, в Laravel документах класс модели должен быть передан для действий, которые не требуют модели. Поэтому я запутался, как заставить это работать.
AuthServiceProvider. php
protected $policies = [
'App\ThoughtRecord' => 'App\Policies\ThoughtRecordPolicy',
];
public function boot()
{
$this->registerPolicies();
}
ThoughtRecordPolicy. php
public function view(User $signedInUser, User $client)
{
//return true;
dd('Policy working');
//return $signedInUser->id === $client->id;
}
ThoughtRecordController. php
public function index($userHashedId)
{
$client = User::where('hashed_id', $userHashedId)->first();
$this->authorize('view', ThoughtRecord::class, $client);
$records = ThoughtRecord::where('user_id', $client->id)->latest()->paginate(1);
return ThoughtRecordResource::collection($records);
}
Ошибка
Слишком мало аргументов для функции App \ Policies \ ThoughtRecordPolicy :: view ()
Я также пробовал:
$this->authorize('view', $client);
Это действие не авторизовано.