68 lines
2.4 KiB
PHP
Executable File
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;
|
|
}
|
|
}
|