Để 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
AuthServiceProviderapp\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?