info('🔧 Aggiornamento permessi modulo StampeRate...'); // Definisci tutti i permessi necessari $permissions = [ // Permessi base StampeRate [ 'name' => 'stampe.rate.view', 'description' => 'Visualizza stampe rate', 'guard_name' => 'web' ], [ 'name' => 'stampe.rate.create', 'description' => 'Crea nuove stampe rate', 'guard_name' => 'web' ], [ 'name' => 'stampe.rate.update', 'description' => 'Modifica stampe rate esistenti', 'guard_name' => 'web' ], [ 'name' => 'stampe.rate.delete', 'description' => 'Elimina stampe rate', 'guard_name' => 'web' ], [ 'name' => 'stampe.rate.send', 'description' => 'Invia stampe rate via email', 'guard_name' => 'web' ], // Permessi Template [ 'name' => 'stampe_rate_templates_view', 'description' => 'Visualizza template stampe rate', 'guard_name' => 'web' ], [ 'name' => 'stampe_rate_templates_create', 'description' => 'Crea nuovi template', 'guard_name' => 'web' ], [ 'name' => 'stampe_rate_templates_edit', 'description' => 'Modifica template esistenti', 'guard_name' => 'web' ], [ 'name' => 'stampe_rate_templates_delete', 'description' => 'Elimina template', 'guard_name' => 'web' ], [ 'name' => 'stampe_rate_templates_import', 'description' => 'Importa template esterni', 'guard_name' => 'web' ], // Permessi Cronologia [ 'name' => 'stampe_rate_history_view', 'description' => 'Visualizza cronologia invii', 'guard_name' => 'web' ], [ 'name' => 'stampe_rate_reports_view', 'description' => 'Visualizza report e statistiche', 'guard_name' => 'web' ], [ 'name' => 'stampe_rate_export', 'description' => 'Esporta dati stampe rate', 'guard_name' => 'web' ], [ 'name' => 'stampe_rate_admin', 'description' => 'Amministrazione completa modulo', 'guard_name' => 'web' ], ]; $createdCount = 0; $updatedCount = 0; // Crea o aggiorna i permessi foreach ($permissions as $permData) { $permission = Permission::firstOrCreate( ['name' => $permData['name'], 'guard_name' => $permData['guard_name']], $permData ); if ($permission->wasRecentlyCreated) { $createdCount++; $this->info("✅ Creato: {$permData['name']}"); } else { $permission->update(['description' => $permData['description']]); $updatedCount++; $this->info("🔄 Aggiornato: {$permData['name']}"); } } // Assegna i permessi ai ruoli amministrativi $this->assignPermissionsToRoles($permissions); // Aggiorna la configurazione del modulo nel database $this->updateModulePermissions($permissions); $this->info("🎉 Completato!"); $this->info("📊 Permessi creati: {$createdCount}"); $this->info("📊 Permessi aggiornati: {$updatedCount}"); return Command::SUCCESS; } private function assignPermissionsToRoles($permissions) { $adminRoles = ['admin', 'amministratore', 'super-admin']; $assignedCount = 0; $this->info('🔐 Assegnazione permessi ai ruoli...'); foreach ($adminRoles as $roleName) { $role = Role::where('name', $roleName)->first(); if (!$role) { $this->warn("⚠️ Ruolo '{$roleName}' non trovato, creazione..."); $role = Role::create(['name' => $roleName, 'guard_name' => 'web']); $this->info("✅ Ruolo '{$roleName}' creato"); } foreach ($permissions as $permData) { $permission = Permission::where('name', $permData['name'])->first(); if ($permission && !$role->hasPermissionTo($permission)) { $role->givePermissionTo($permission); $assignedCount++; } } $this->info("✅ Permessi assegnati al ruolo: {$roleName}"); } $this->info("📊 Assegnazioni totali: {$assignedCount}"); } private function updateModulePermissions($permissions) { $this->info('💾 Aggiornamento configurazione modulo...'); $permissionsData = array_map(function ($perm) { return [ 'name' => $perm['name'], 'description' => $perm['description'], ]; }, $permissions); DB::table('modules') ->where('name', 'StampeRate') ->update([ 'permissions' => json_encode($permissionsData), 'updated_at' => now() ]); $this->info('✅ Configurazione modulo aggiornata'); } }