netgescon-day0/app/Console/Commands/UpdateContabilitaPermissions.php

68 lines
2.4 KiB
PHP
Executable File

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Illuminate\Support\Facades\DB;
class UpdateContabilitaPermissions extends Command
{
protected $signature = 'contabilita:permissions';
protected $description = 'Installa i permessi per il modulo Contabilità';
public function handle()
{
$this->info('🔧 Installazione permessi modulo Contabilità...');
// Definisci i permessi del modulo
$permissions = [
'contabilita_view' => 'Visualizzare registrazioni contabili',
'contabilita_create' => 'Creare nuove registrazioni contabili',
'contabilita_edit' => 'Modificare registrazioni contabili',
'contabilita_delete' => 'Eliminare registrazioni contabili',
'contabilita_export' => 'Esportare dati contabili',
'contabilita_import' => 'Importare dati contabili',
'contabilita_reports' => 'Visualizzare report contabili',
'contabilita_settings' => 'Gestire impostazioni contabilità'
];
// Crea i permessi
foreach ($permissions as $name => $description) {
$permission = Permission::firstOrCreate(
['name' => $name],
['guard_name' => 'web']
);
$this->line("✅ Permesso: {$name}");
}
// Assegna permessi ai ruoli amministrativi
$adminRoles = ['admin', 'amministratore', 'super-admin'];
foreach ($adminRoles as $roleName) {
$role = Role::where('name', $roleName)->first();
if ($role) {
foreach (array_keys($permissions) as $permissionName) {
$permission = Permission::where('name', $permissionName)->first();
if ($permission && !$role->hasPermissionTo($permission)) {
$role->givePermissionTo($permission);
}
}
$this->line("✅ Permessi assegnati al ruolo: {$roleName}");
}
}
// Aggiorna il record del modulo nel database
DB::table('modules')
->where('name', 'Contabilita')
->update([
'permissions' => json_encode(array_keys($permissions)),
'updated_at' => now()
]);
$this->info('🎉 Permessi modulo Contabilità installati con successo!');
return 0;
}
}