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); } } } }