66 lines
2.2 KiB
PHP
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"; |