Я создал политику для защиты моей модели.То, что я пытаюсь сделать, это заблокировать кого-либо от редактирования записи мысли, которой там нет
web.php
Auth::routes();
Route::prefix('/')->middleware(['auth','can:viewAny,App\ThoughtRecord'])->group(function() {
Route::get('/record/{id}/edit', 'ThoughtRecordController@edit')->middleware('can:isOwner,App\ThoughtRecord');
Route::patch('/record/{thoughtRecord}','ThoughtRecordController@update')->middleware('can:isOwner,App\ThoughtRecord');
});
ThoughtRecordPolicy.php
public function isOwner(User $user, ThoughtRecord $thoughtRecord)
{
return $user->id == $thoughtRecord->user_id;
}
->middleware(['auth','can:viewAny,App\ThoughtRecord'])
работает отлично.Промежуточное программное обеспечение на других маршрутах, однако, не ->middleware('can:isOwner,App\ThoughtRecord')
и выдает эту ошибку:
Ошибка
Symfony \ Component \ Debug \ Exception \ FatalThrowableError Too Tooнесколько аргументов для функции App \ Policies \ ThoughtRecordPolicy :: isOwner (), 1 передано в /Applications/MAMP/htdocs/thought-records/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php в строке 706 иожидается ровно 2
Редактировать:
Я изменил маршрут на:
Route::get('/record/{thoughtRecord}/edit', 'ThoughtRecordController@edit')->middleware('can:isOwner,thoughtRecord');
Теперь я 'Я получаю 403 при условии, что я довольно позитивен, это правда.