Я использую промежуточное ПО, чтобы ограничить страницу администратора от не-администраторов, и я могу ограничить страницы списком "пациентов" от других пользователей, используя политику, но если я использую политику. Я должен повторить метод кода () в каждой функции. Если я использую промежуточное программное обеспечение, чтобы проверить, если user_id в URL == Auth :: user () -> id. Мне не нужно повторять это, но как мне получить user_id из URL в моем промежуточном программном обеспечении?
route
Route :: get ('/ пациентов / {пациент} ',' PatientController@edit ')
Что у меня сейчас
PatientPolicy
public function view(User $user, Patient $patient)
{
// does this patient belong to user
return $user->id == $patient->user_id;
}
PatientController
public function edit(Patient $patient)
{
// authenticate logged in user
$user = auth()->user();
// can the loged in user do this?(policy)
if($user->can('update', $patient)){
return view('patient.edit-patient', compact('patient', 'user'));
}
return view('403');
}
что я должен иметь в промежуточном программном обеспечении
UserMiddleware
/**
* @param $request
* @param Closure $next
* @return mixed
*/
public static function handle($request, Closure $next)
{
if (Auth::check() && Auth::user()->id == User::patients()->user_id) {
return $next($request);
} else {
return redirect()->route('login');
}
}
Кто-нибудь знает, как проверить, является ли {пациент} в маршрутах user_id == вошедшим в систему пользователем () -> id?