netgescon-day0/app/Console/Commands/PermissionsSync.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;
}
}