95 lines
3.0 KiB
PHP
95 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
/**
|
|
* Sửa guard_name từ 'admins' → 'admin' cho tất cả roles & permissions.
|
|
* Chạy 1 lần: php artisan db:seed --class=FixRoleGuardSeeder
|
|
*/
|
|
class FixRoleGuardSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
|
|
|
|
// Cập nhật permissions
|
|
DB::table('permissions')
|
|
->where('guard_name', 'admins')
|
|
->update(['guard_name' => 'admin']);
|
|
|
|
// Cập nhật roles
|
|
DB::table('roles')
|
|
->where('guard_name', 'admins')
|
|
->update(['guard_name' => 'admin']);
|
|
|
|
$this->command->info('✅ Đã cập nhật guard_name: admins → admin cho ' .
|
|
Role::where('guard_name', 'admin')->count() . ' roles, ' .
|
|
Permission::where('guard_name', 'admin')->count() . ' permissions.');
|
|
|
|
// Đảm bảo 6 roles tồn tại với guard admin
|
|
$roles = [
|
|
'Full Administrator',
|
|
'Administrator',
|
|
'Sale',
|
|
'IT',
|
|
'Customer Service',
|
|
'Marketing',
|
|
];
|
|
|
|
foreach ($roles as $name) {
|
|
Role::firstOrCreate([
|
|
'name' => $name,
|
|
'guard_name' => 'admin',
|
|
]);
|
|
}
|
|
|
|
// Full Administrator luôn có tất cả permissions
|
|
$fullAdmin = Role::where('name', 'Full Administrator')
|
|
->where('guard_name', 'admin')
|
|
->first();
|
|
|
|
if ($fullAdmin) {
|
|
$fullAdmin->syncPermissions(
|
|
Permission::where('guard_name', 'admin')->get()
|
|
);
|
|
$this->command->info('✅ Full Administrator đã được cấp tất cả quyền.');
|
|
}
|
|
|
|
// Administrator được cấp một số quyền cơ bản
|
|
$admin = Role::where('name', 'Administrator')
|
|
->where('guard_name', 'admin')
|
|
->first();
|
|
|
|
if ($admin) {
|
|
$adminPermissions = [
|
|
'customer.view',
|
|
'customer.create',
|
|
'customer.edit',
|
|
'customer.manager',
|
|
'product-service.view',
|
|
'product-service.create',
|
|
'product-service.edit',
|
|
'product-service.manager',
|
|
'order.view',
|
|
'order.create',
|
|
'order.edit',
|
|
'order.manager',
|
|
'administrator.view',
|
|
'administrator.manager',
|
|
];
|
|
$perms = Permission::whereIn('name', $adminPermissions)
|
|
->where('guard_name', 'admin')
|
|
->get();
|
|
$admin->syncPermissions($perms);
|
|
$this->command->info('✅ Administrator đã được cấp quyền: ' . implode(', ', $adminPermissions));
|
|
}
|
|
|
|
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
|
|
}
|
|
}
|