ฉันกำลังพยายามตรวจสอบว่าผู้ใช้ได้รับอนุญาตให้ดูเพจโดยใช้ Gates และนโยบายใน Laravel หรือไม่ ใน web.php ของฉัน ฉันมีเส้นทาง:
$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
]);
}
นโยบายของฉันเป็นเช่นนี้ (AuthServiceProvider.php):
public function boot()
{
$this->registerPolicies();
Gate::define('edit-litter', function ($user, $litter) {
return $user->id == $litter->user_id;
});
}
เมื่อฉันทดสอบสิ่งนี้ ฉันมักจะได้รับข้อผิดพลาดการรับรองความถูกต้องเท่านั้น ดังนั้นฉันจึงตัดสินใจตรวจสอบว่าฉันไม่เห็นบางสิ่งบางอย่างหรือไม่โดยการส่งตัวแปรเหล่านั้นด้านบนไปยังมุมมองข้อผิดพลาด และแน่นอนว่า user_id เท่ากับ litter_user (สองสิ่งที่ฉัน ฉันกำลังเปรียบเทียบ):
{$litter_user}}, {{$user_id}} //returns '55, 55'
ฉันพลาดบางสิ่งบางอย่างที่ชัดเจนไปหรือเปล่า? ความช่วยเหลือใด ๆ ที่ชื่นชม
Gate::allows('ability', $resourceToCheck)
- person lagbox   schedule 18.08.2018