44 lines
1.4 KiB
PHP
44 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use Illuminate\Console\Command;
|
|
use Spatie\Permission\PermissionRegistrar;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
class PermissionsSync extends Command
|
|
{
|
|
protected $signature = 'permissions:sync {--assign-to-existing : Assegna ai ruoli i permessi previsti (non solo creazione)}';
|
|
|
|
protected $description = 'Crea/aggiorna ruoli e permessi Spatie (allineamento con RoleSeeder) e opzionalmente assegna i permessi previsti ai ruoli.';
|
|
|
|
public function handle(): int
|
|
{
|
|
app(PermissionRegistrar::class)->forgetCachedPermissions();
|
|
|
|
$seed = new \Database\Seeders\RoleSeeder();
|
|
|
|
if (! method_exists($seed, 'run')) {
|
|
$this->error('RoleSeeder non disponibile.');
|
|
return 1;
|
|
}
|
|
|
|
$seed->run();
|
|
|
|
app(PermissionRegistrar::class)->forgetCachedPermissions();
|
|
|
|
if (! $this->option('assign-to-existing')) {
|
|
$this->info('Ruoli/permessi sincronizzati (create/firstOrCreate).');
|
|
$this->info("Suggerimento: usa --assign-to-existing per riallineare i ruoli.");
|
|
return 0;
|
|
}
|
|
|
|
// RoleSeeder già assegna: qui solo conferma e report.
|
|
$this->info('Ruoli/permessi sincronizzati e assegnati (vedi RoleSeeder).');
|
|
|
|
$this->line('Ruoli: ' . Role::query()->count() . ' | Permessi: ' . Permission::query()->count());
|
|
return 0;
|
|
}
|
|
}
|