Dev to webs {Coding…}

ร บทเรียนฟรีด้านการพัฒนาซอฟต์แวร์ ที่ครอบคลุมเนื้อหาหลากหลาย ตั้งแต่การเขียนโค้ดพื้นฐานไปจนถึงเทคนิคขั้นสูง

บทที่ 5: การสร้างและใช้งาน Policy สำหรับ Authorization

🔹 เกริ่นนำ

ใน 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 โดยตรง