feat: Implement admin role and permission management, employee management APIs, and user profile extensions.
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user