From 95154f4b2895cb9e72015e4eba546475a1ce4899 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Fri, 30 Jan 2026 14:55:00 -0600 Subject: [PATCH] =?UTF-8?q?refactor:=20cambiar=20creaci=C3=B3n=20de=20perm?= =?UTF-8?q?isos=20a=20firstOrCreate=20y=20ajustar=20sincronizaci=C3=B3n=20?= =?UTF-8?q?de=20permisos=20en=20roles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/seeders/RoleSeeder.php | 42 ++++++++++++--------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/database/seeders/RoleSeeder.php b/database/seeders/RoleSeeder.php index b60ac51..bdd5d7f 100644 --- a/database/seeders/RoleSeeder.php +++ b/database/seeders/RoleSeeder.php @@ -30,19 +30,7 @@ class RoleSeeder extends Seeder public function run(): void { - // Limpiar tablas de permisos para poder re-ejecutar - app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions(); - - DB::statement('SET FOREIGN_KEY_CHECKS=0;'); - DB::table('role_has_permissions')->truncate(); - DB::table('model_has_permissions')->truncate(); - DB::table('model_has_roles')->truncate(); - DB::table('permissions')->truncate(); - DB::table('roles')->truncate(); - DB::table('permission_types')->truncate(); - DB::statement('SET FOREIGN_KEY_CHECKS=1;'); - - $users = PermissionType::create([ + $users = PermissionType::firstOrCreate([ 'name' => 'Usuarios' ]); @@ -56,7 +44,7 @@ public function run(): void $userSettings = $this->onPermission('users.settings', 'Configuración de usuarios', $users, 'api'); $userOnline = $this->onPermission('users.online', 'Usuarios en linea', $users, 'api'); - $roles = PermissionType::create([ + $roles = PermissionType::firstOrCreate([ 'name' => 'Roles' ]); @@ -67,13 +55,13 @@ public function run(): void $roleDestroy ] = $this->onCRUD('roles', $roles, 'api'); - $pulse = PermissionType::create([ + $pulse = PermissionType::firstOrCreate([ 'name' => 'Sistema' ]); $systemPulse = $this->onPermission('pulse', 'Monitoreo de Pulse', $pulse, 'api'); - $pulse = PermissionType::create([ + $pulse = PermissionType::firstOrCreate([ 'name' => 'Historial de actividades' ]); @@ -86,7 +74,7 @@ public function run(): void // ==================== NUEVOS PERMISOS PARA PDV ==================== // Permisos de Caja - $cashRegisterType = PermissionType::create([ + $cashRegisterType = PermissionType::firstOrCreate([ 'name' => 'Caja registradora' ]); @@ -96,7 +84,7 @@ public function run(): void $cashRegisterCurrent = $this->onPermission('cash-registers.current', 'Ver caja actual', $cashRegisterType, 'api'); // Permisos de Ventas - $salesType = PermissionType::create([ + $salesType = PermissionType::firstOrCreate([ 'name' => 'Ventas' ]); @@ -105,7 +93,7 @@ public function run(): void $salesCancel = $this->onPermission('sales.cancel', 'Cancelar venta', $salesType, 'api'); // Permisos de Inventario (solo lectura) - $inventoryType = PermissionType::create([ + $inventoryType = PermissionType::firstOrCreate([ 'name' => 'Inventario' ]); @@ -118,7 +106,7 @@ public function run(): void // Permisos de Clientes - $clientsType = PermissionType::create([ + $clientsType = PermissionType::firstOrCreate([ 'name' => 'Clientes' ]); @@ -130,7 +118,7 @@ public function run(): void ] = $this->onCRUD('clients', $clientsType, 'api'); // Permisos de Niveles de Clientes (Tiers) - $clientTiersType = PermissionType::create([ + $clientTiersType = PermissionType::firstOrCreate([ 'name' => 'Niveles de clientes' ]); @@ -145,18 +133,18 @@ public function run(): void // ==================== ROLES ==================== // Desarrollador - Role::create([ + Role::firstOrCreate([ 'name' => 'developer', 'description' => 'Desarrollador', 'guard_name' => 'api' - ])->givePermissionTo(Permission::all()); + ])->syncPermissions(Permission::all()); // Administrador - Role::create([ + Role::firstOrCreate([ 'name' => 'admin', 'description' => 'Administrador', 'guard_name' => 'api' - ])->givePermissionTo( + ])->syncPermissions( $userIndex, $userCreate, $userEdit, @@ -193,11 +181,11 @@ public function run(): void ); //Operador PDV (solo permisos de operación de caja y ventas) - Role::create([ + Role::firstOrCreate([ 'name' => 'operador_pdv', 'description' => 'Operador de Punto de Venta', 'guard_name' => 'api' - ])->givePermissionTo( + ])->syncPermissions( // Caja $cashRegisterIndex, // Ver historial de cajas $cashRegisterOpen, // Abrir caja