Tuyệt, để xây dựng giao diện quản lý người dùng và phân quyền với spatie/laravel-permission

Tuyệt, để xây dựng giao diện quản lý người dùng và phân quyền với spatie/laravel-permission, ta sẽ làm theo các bước sau:

✅ 1. Cài đặt mối quan hệ Role/Permission/User

Trong User model:

use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
    use HasRoles;
}

✅ 2. Tạo Seeder cho Roles và Permissions

bphp artisan make:seeder RolePermissionSeeder

Trong database/seeders/RolePermissionSeeder.php:

use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
public function run()
{
    $permissions = [
        'view page',
        'create page',
        'edit page',
        'delete page',
        'manage users',
        'manage roles'
    ];
    foreach ($permissions as $permission) {
        Permission::firstOrCreate(['name' => $permission]);
    }

    $admin = Role::firstOrCreate(['name' => 'admin']);
    $admin->syncPermissions($permissions);

    $editor = Role::firstOrCreate(['name' => 'editor']);
    $editor->syncPermissions(['view page', 'edit page']);

    $user = \App\Models\User::find(1); // hoặc user đầu tiên
    if ($user) $user->assignRole('admin');
}

✅ 3. Tạo Controller quản lý User/Role/Permission

✅ 4. Route

Trong routes/web.php hoặc routes/admin.php:

routes\web.php

routes\admin.php

✅ 5. Giao diện phân quyền (UserController)

Trong UserController:

resources\views\admin\users\index.blade.php

resources\views\admin\users\edit.blade.php

Chúng ta sẽ bổ sung logic vào các phương thức create, store, và show.

app\Http\Controllers\Admin\UserController.php

resources\views\admin\users\create.blade.php

resources\views\admin\users\edit.blade.php

resources\views\admin\users\index.blade.php

resources\views\admin\users\show.blade.php

✅ 6. (Tùy chọn) Quản lý permission theo role

Tạo file database/seeders/PermissionSeeder.php

Middleware & Policy (global check)

bootstrap\app.php

Trong App\Providers\AuthServiceProvider:

Controller quản lý User / Role / Permission

app\Http\Controllers\Admin\UserController.php

Giao diện Blade

resources\views\admin\users\create.blade.php

resources\views\admin\users\edit.blade.php

resources\views\admin\users\index.blade.php

resources\views\admin\users\show.blade.php

routes\admin.php

Middleware Kiểm Tra Quyền

Trong PageController, thêm middleware:

View: Giao diện danh sách quyền

resources\views\admin\permissions\index.blade.php

Gợi ý: Nếu bạn muốn thêm tính năng tạo, sửa, xóa permission, tôi có thể bổ sung thêm các action và giao diện tương ứng (form, validate,...).

https://chatgpt.com/c/683f0b40-af48-8003-9fd6-1c42fc60142f

Last updated

Was this helpful?