У меня есть система, в которой администратор может управлять врачами, а врач может управлять собой Для этого я использую Авторизация Laravel используя политики. Я зарегистрировал политику для администраторов, чтобы к ней могли обращаться такие врачи, как:
Route::resource('doctors', 'DoctorsController')->middleware('can:access-doctors, App\Doctor');
Но мне нужна отдельная политика только для одного маршрута из группы ресурсов, т.е. doctors.edit
так что врач может редактировать свой профиль, например: can:edit-doctor, $doctor
что-то.
Есть ли возможность сделать это надлежащим образом, или мне приходится создавать маршруты вручную и назначать политики, а не использовать маршруты ресурсов ???
Если я не ошибаюсь, вам понадобится другая конечная точка для указания определенного промежуточного программного обеспечения для каждого маршрута.
Вы могли бы сделать:
Route::get('doctors/{doctor}/edit', 'DoctorsController@edit')
->middleware('can:edit-doctor', 'App\Doctor'));
Route::put('doctors/{doctor}', 'DoctorsController@update')
->middleware('can:edit-doctor', 'App\Doctor'));
Route::resource('doctors', 'DoctorsController')
->except(['edit', 'update'])
->middleware('can:access-doctors, App\Doctor'));
Других решений пока нет …