You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.7 KiB
PHTML

2 months ago
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
2 months ago
use Spatie\Permission\PermissionRegistrar;
2 months ago
class RoleSeeder extends Seeder
{
public function run(): void
{
2 months ago
// 🔥 Limpiar cache de permisos para evitar conflictos
app()[PermissionRegistrar::class]->forgetCachedPermissions();
2 months ago
2 months ago
/* ================= PERMISOS ================= */
$permissions = [
// Ejemplo: CRUD de preguntas
'ver-preguntas',
'crear-preguntas',
'editar-preguntas',
'eliminar-preguntas',
// Ejemplo: CRUD de cursos
'ver-cursos',
'crear-cursos',
'editar-cursos',
'eliminar-cursos',
];
foreach ($permissions as $permission) {
Permission::firstOrCreate([
'name' => $permission,
'guard_name' => 'web',
]);
}
/* ================= ROLES ================= */
2 months ago
$roles = [
2 months ago
'usuario' => [], // rol básico sin permisos
'administrador' => $permissions, // asigna todos los permisos al administrador
'superadmin' => $permissions, // opcionalmente igual que administrador
2 months ago
];
2 months ago
foreach ($roles as $roleName => $rolePermissions) {
$role = Role::firstOrCreate([
'name' => $roleName,
2 months ago
'guard_name' => 'web',
]);
2 months ago
// Asignar permisos si los hay
if (!empty($rolePermissions)) {
$role->syncPermissions($rolePermissions);
}
2 months ago
}
}
}