Files
pos_heidiver/scripts/rename_proveedors.php
T
2026-01-29 16:15:28 -05:00

66 lines
2.2 KiB
PHP

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