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";