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