Saya mencoba memeriksa apakah pengguna diizinkan melihat halaman menggunakan Gates dan Kebijakan di Laravel. Di web.php saya, saya memiliki rute:
$litter = Litter::find($id);
//Security gate
if(Gate::allows('edit-litter', Auth::user(), $litter)){
return View::make('mykennel.litters.pupsheet')->with([
//some variables
]);
}else{
$ip_info = log_user_connection('Authorization Error');
return View::make('errors.authorization')->with([
'ip_info' => $ip_info,
'litter_id' => $litter->id,
'user_id' => Auth::user()->id,
'litter_user' => $litter->user_id
]);
}
Kebijakan saya seperti ini (AuthServiceProvider.php):
public function boot()
{
$this->registerPolicies();
Gate::define('edit-litter', function ($user, $litter) {
return $user->id == $litter->user_id;
});
}
Ketika saya menguji ini, saya hanya mendapatkan kesalahan autentikasi, jadi saya memutuskan untuk memeriksa apakah saya tidak melihat sesuatu dengan mengirimkan variabel-variabel di atas ke tampilan kesalahan, dan tentu saja, user_id sama dengan liter_user (dua hal yang saya saya sedang membandingkan):
{$litter_user}}, {{$user_id}} //returns '55, 55'
Apakah saya melewatkan sesuatu yang jelas? Bantuan apa pun dihargai.
Gate::allows('ability', $resourceToCheck)
- person lagbox   schedule 18.08.2018