This commit is contained in:
Lizandro Guarnizo
2026-01-29 16:10:01 -05:00
parent f62d05cb28
commit d0ab74d3fc
2 changed files with 60 additions and 7 deletions
@@ -40,19 +40,29 @@ class ScanResourcesPermissions extends Command
continue;
}
$className = 'App\\Filament\\Resources\\' . str_replace('.php', '', $file->getFilename());
$filename = pathinfo($file->getFilename(), PATHINFO_FILENAME);
$className = 'App\\Filament\\Resources\\' . $filename;
// Si la clase está disponible, intentamos obtener su navigationLabel para usar nombres en español
// Intentar obtener un label legible: preferimos el método getNavigationLabel(), luego la propiedad estática
$label = null;
if (class_exists($className)) {
$label = $className::$navigationLabel ?? null;
} else {
$label = null;
if (method_exists($className, 'getNavigationLabel')) {
$label = $className::getNavigationLabel();
} elseif (isset($className::$navigationLabel)) {
$label = $className::$navigationLabel;
}
}
$base = $label ? Str::lower($label) : Str::lower(Str::replaceLast('Resource', '', $file->getFilename()));
// Si no hay label, usar el nombre del archivo sin extensión ni sufijo Resource
if ($label) {
$base = Str::lower($label);
} else {
$base = Str::lower(Str::replaceLast('Resource', '', $filename));
}
// Normalizar: eliminar espacios extra
// Normalizar: eliminar espacios extra y restos de extensión
$base = trim((string) Str::of($base)->lower());
$base = preg_replace('/\.php$/', '', $base);
// Generar formas singular y plural
$plural = Str::lower(Str::plural($base));
@@ -79,6 +89,9 @@ class ScanResourcesPermissions extends Command
$this->info('Permisos generados/asegurados: ' . count($created));
$this->line(implode("\n", array_slice($created, 0, 200)));
// Eliminar permisos mal formados (ej. que contienen '.php') generados por escaneos previos
Permission::where('name', 'like', '%.php%')->orWhere('name', 'like', '%.phps%')->delete();
// Crear rol y asignar todos los permisos
$roleName = $this->option('role') ?? 'Administrador';
$role = Role::firstOrCreate(['name' => $roleName]);