Различные политики для «Ресурсных» маршрутов в Ларавеле - PullRequest
0 голосов
/ 03 октября 2018

У меня есть система, в которой администратор может управлять врачами, а врач может управлять собой.Для этого я использую Laravel Authorization с использованием политик.Я зарегистрировал политику для администраторов, к которой он может обращаться к врачам, например:

Route::resource('doctors', 'DoctorsController')->middleware('can:access-doctors, App\Doctor');

Но мне нужна отдельная политика только для одного маршрута из группы ресурсов, т.е. doctors.edit, чтобы врач мог редактировать свой профиль, например: can:edit-doctor, $doctor что-то.

Есть ли возможность сделать это надлежащим образом, или мне приходится создавать маршруты вручную и назначать политики вместо использования маршрутов ресурсов ???

1 Ответ

0 голосов
/ 03 октября 2018

Если я не ошибаюсь, вам понадобится другая конечная точка для указания определенного промежуточного программного обеспечения для каждого маршрута.

Вы можете сделать:

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'));
...