Để phân quyền CRUD cho các trang (pages) trong Laravel sử dụng package spatie/laravel-permission

✅ Bước 1: Cài đặt package

bashCopyEditcomposer require spatie/laravel-permission

Đăng service provider và publish file config/migrations:

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate

✅ Bước 2: Cấu hình model User

Thêm HasRoles vào model User:

phpCopyEdituse Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;
}

✅ Bước 3: Tạo Roles và Permissions

Bạn có thể chạy trong seeder, controller hoặc tinker:

Tạo Seeder

✍ Nội dung database/seeders/RolePermissionSeeder.php:

✅ Chạy Seeder:

✅ 2. Policy cho Page

📄 Tạo Policy

app\Policies\PagePolicy.php

✅ 3. Đăng ký Policy trong AuthServiceProvider

app\Providers\AppServiceProvider.php

✅ 4. Sử dụng Policy trong Controller hoặc Blade

Trong Controller:

Trong Blade:

✅ Bước 4: Middleware kiểm tra quyền

Bạn có thể dùng middleware permission do Spatie cung cấp.

Đăng ký middleware trong app/Http/Kernel.php nếu chưa có:

Trong Laravel 11 và các phiên bản mới hơn, các middleware, bao gồm cả middleware của Spatie, sẽ được đăng ký trong file bootstrap/app.php.

bootstrap\app.php

Sau khi bạn đã đăng ký như trên, bạn có thể sử dụng các middleware này trong các route của mình như bình thường:

Áp dụng trong route:

✅ Bước 5: Hiển thị UI theo quyền (optional)

Trong Blade:

Last updated

Was this helpful?