up
This commit is contained in:
@@ -43,19 +43,27 @@ class ScanResourcesPermissions extends Command
|
||||
$filename = pathinfo($file->getFilename(), PATHINFO_FILENAME);
|
||||
$className = 'App\\Filament\\Resources\\' . $filename;
|
||||
|
||||
// Intentar obtener un label legible: preferimos el método getNavigationLabel(), luego la propiedad estática
|
||||
// Intentar obtener un label legible: preferimos el método getPluralModelLabel(), luego getNavigationLabel(), luego la propiedad estática
|
||||
$label = null;
|
||||
$pluralLabel = null;
|
||||
|
||||
if (class_exists($className)) {
|
||||
if (method_exists($className, 'getNavigationLabel')) {
|
||||
$label = $className::getNavigationLabel();
|
||||
} elseif (isset($className::$navigationLabel)) {
|
||||
$label = $className::$navigationLabel;
|
||||
if (method_exists($className, 'getPluralModelLabel')) {
|
||||
$pluralLabel = $className::getPluralModelLabel();
|
||||
}
|
||||
|
||||
if (! $pluralLabel && method_exists($className, 'getNavigationLabel')) {
|
||||
$pluralLabel = $className::getNavigationLabel();
|
||||
}
|
||||
|
||||
if (! $pluralLabel && isset($className::$navigationLabel)) {
|
||||
$pluralLabel = $className::$navigationLabel;
|
||||
}
|
||||
}
|
||||
|
||||
// Si no hay label, usar el nombre del archivo sin extensión ni sufijo Resource
|
||||
if ($label) {
|
||||
$base = Str::lower($label);
|
||||
// Si no hay label plural, usar el nombre del archivo sin sufijo Resource
|
||||
if ($pluralLabel) {
|
||||
$base = Str::lower($pluralLabel);
|
||||
} else {
|
||||
$base = Str::lower(Str::replaceLast('Resource', '', $filename));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
$app = require_once __DIR__ . '/../bootstrap/app.php';
|
||||
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
|
||||
$kernel->bootstrap();
|
||||
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use App\Models\User;
|
||||
|
||||
$perms = Permission::where('name', 'like', 'ver prov%')->pluck('name')->toArray();
|
||||
print "Permisos que empiezan con 'ver prov':\n";
|
||||
print_r($perms);
|
||||
|
||||
// Verificar rol y usuario
|
||||
$role = Role::where('name', 'Administrador')->first();
|
||||
print "\nPermisos del rol Administrador (filtrados por prov):\n";
|
||||
if ($role) {
|
||||
print_r($role->permissions->pluck('name')->filter(fn($n)=>str_contains($n,'prov'))->toArray());
|
||||
} else {
|
||||
print "Rol Administrador no encontrado\n";
|
||||
}
|
||||
|
||||
$user = User::where('email', 'info@creacionesheidivers.com')->first();
|
||||
if ($user) {
|
||||
print "\nUsuario: {$user->email}\nRoles: " . implode(', ', $user->getRoleNames()->toArray()) . "\n";
|
||||
print "Usuario puede 'ver proveedores'?: " . ($user->can('ver proveedores') ? 'si' : 'no') . "\n";
|
||||
print "Usuario tiene permisos relacionados con 'prov':\n";
|
||||
$userPerms = array_filter($user->getAllPermissions()->pluck('name')->toArray(), fn($n)=>str_contains($n,'prov'));
|
||||
print_r($userPerms);
|
||||
} else {
|
||||
print "\nUsuario info@creacionesheidivers.com no encontrado\n";
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
$app = require_once __DIR__ . '/../bootstrap/app.php';
|
||||
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
|
||||
$kernel->bootstrap();
|
||||
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use App\Models\User;
|
||||
|
||||
echo "Buscando permisos mal formados 'proveedors'...\n";
|
||||
$old = Permission::where('name', 'like', '%proveedors%')->get();
|
||||
if ($old->isEmpty()) {
|
||||
echo "No se encontraron permisos con 'proveedors'.\n";
|
||||
exit(0);
|
||||
}
|
||||
|
||||
foreach ($old as $perm) {
|
||||
$newName = str_replace('proveedors', 'proveedores', $perm->name);
|
||||
|
||||
$new = Permission::firstOrCreate(['name' => $newName]);
|
||||
|
||||
// Re-asignar a roles que tenían el permiso antiguo
|
||||
$roles = $perm->roles;
|
||||
foreach ($roles as $role) {
|
||||
$role->givePermissionTo($new);
|
||||
$role->revokePermissionTo($perm);
|
||||
echo "Rol '{$role->name}': reemplazado '{$perm->name}' por '{$newName}'\n";
|
||||
}
|
||||
|
||||
// Re-asignar a usuarios que tenían el permiso antiguo (a través de direct assign)
|
||||
$users = $perm->users ?? null; // spatie relationship may not be set on model depending on config
|
||||
if ($users) {
|
||||
foreach ($users as $user) {
|
||||
$user->givePermissionTo($new);
|
||||
$user->revokePermissionTo($perm);
|
||||
echo "Usuario '{$user->email}': reemplazado permiso '{$perm->name}' por '{$newName}'\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Finalmente eliminar el permiso antiguo
|
||||
$perm->delete();
|
||||
echo "Permiso antiguo '{$perm->name}' eliminado.\n";
|
||||
}
|
||||
|
||||
// Asegurar que el rol Administrador tenga el permiso nuevo
|
||||
$role = Role::firstWhere('name', 'Administrador');
|
||||
if ($role) {
|
||||
if (! $role->hasPermissionTo('ver proveedores')) {
|
||||
$role->givePermissionTo('ver proveedores');
|
||||
echo "Rol 'Administrador' ahora tiene 'ver proveedores'.\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Asegurar que el usuario tenga el permiso
|
||||
$user = User::where('email', 'info@creacionesheidivers.com')->first();
|
||||
if ($user) {
|
||||
$has = $user->can('ver proveedores');
|
||||
echo "Usuario '{$user->email}' puede 'ver proveedores'?: " . ($has ? 'si' : 'no') . "\n";
|
||||
if (! $has) {
|
||||
$user->givePermissionTo('ver proveedores');
|
||||
echo "Asignado permiso 'ver proveedores' al usuario.\n";
|
||||
}
|
||||
}
|
||||
|
||||
echo "Listo.\n";
|
||||
Reference in New Issue
Block a user