🔹 เกริ่นนำ
ใน Laravel การจัดการสิทธิ์ (Authorization) ใช้ได้หลายวิธี และหนึ่งในวิธีที่ชัดเจนและปรับขยายได้ดีที่สุดคือ Policy ซึ่งช่วยให้คุณสามารถควบคุมการเข้าถึงของผู้ใช้ต่อ resource ต่าง ๆ ได้อย่างเป็นระบบ เช่น ใครสามารถแก้ไขโพสต์ หรือลบข้อมูลได้
บทนี้จะสอนวิธีสร้าง Policy เชื่อมโยงกับ Model และใช้งานใน Controller หรือ Blade อย่างเหมาะสม
🔸 การสร้าง Policy
php artisan make:policy PostPolicy --model=Post
จะได้ไฟล์ใหม่ที่ app/Policies/PostPolicy.php
พร้อม method เช่น view
, update
, delete
ตามที่ Laravel สร้างไว้ให้
🔸 การ Register Policy (ถ้าไม่ได้ใช้ --model
)
// app/Providers/AuthServiceProvider.php
protected $policies = [
Post::class => PostPolicy::class,
];
🔸 การเรียกใช้ใน Controller
public function update(Request $request, Post $post)
{
$this->authorize('update', $post);
// ถ้าไม่ผ่าน จะถูก redirect พร้อม error 403
}
🔸 การใช้ใน Blade Template
@can('delete', $post)
<button>ลบโพสต์</button>
@endcan
💡 ใช้
php artisan make:policy
ได้ทั้งแบบทั่วไปหรือผูกกับ model โดยตรง