feat(oggui): sistema de permisos por rol + mejoras de UX y tests #95

Merged
narenas merged 10 commits from devel into main 2026-06-16 17:59:55 +02:00
Collaborator

Resumen

  • Sistema completo de control de acceso por rol en la GUI (4 perfiles)
  • Mejoras de comportamiento en la vista de grupos
  • Tests unitarios y E2E de permisos
  • Visor de logs de disco integrado en el estado global

Cambios principales

Permisos por rol

  • roleGuard protege rutas según rol: ou-operator solo accede a operaciones
    de equipos; ou-minimal solo a /groups
  • Botones de infraestructura (DHCP, Boot, repos, comandos) ocultos para ou-admin
  • Botones de creación de OU y cliente ocultos para ou-operator y ou-minimal

Tests

  • auth.service.spec.ts: cobertura de los 5 roles y sus métodos
  • role.guard.spec.ts: matriz completa 26 rutas × 4 roles
  • sidebar.component.spec.ts: visibilidad de ítems del sidebar por rol
  • Infraestructura E2E Playwright con 4 specs de permisos y helpers de setup/teardown

Mejoras de UX

  • Clic en aula: petición de equipos y actualización de estado secuenciales
    (evita loader general mientras se resuelven estados individuales)
  • Botón de cerrar en ventana de plano de aula
  • Ficheros de idiomas ordenados alfabéticamente; revisión del catalán

Visor de logs de disco

  • Integrado en páginas de estado de ogcore, ogboot, ogdhcp y ogrepository
  • Soporte de múltiples SYSLOG_IDENTIFIER por componente
  • Polling cada 5 segundos con modo live/pausa

Test plan

  • Verificar acceso a rutas según rol (ou-admin, ou-operator, ou-minimal)
  • Verificar que los botones de infraestructura están ocultos para ou-admin
  • Verificar que los botones de creación de OU/cliente están ocultos para ou-operator
  • Ejecutar tests unitarios: npm test
  • Verificar visor de logs en /global-status
## Resumen - Sistema completo de control de acceso por rol en la GUI (4 perfiles) - Mejoras de comportamiento en la vista de grupos - Tests unitarios y E2E de permisos - Visor de logs de disco integrado en el estado global ## Cambios principales ### Permisos por rol - `roleGuard` protege rutas según rol: ou-operator solo accede a operaciones de equipos; ou-minimal solo a `/groups` - Botones de infraestructura (DHCP, Boot, repos, comandos) ocultos para ou-admin - Botones de creación de OU y cliente ocultos para ou-operator y ou-minimal ### Tests - `auth.service.spec.ts`: cobertura de los 5 roles y sus métodos - `role.guard.spec.ts`: matriz completa 26 rutas × 4 roles - `sidebar.component.spec.ts`: visibilidad de ítems del sidebar por rol - Infraestructura E2E Playwright con 4 specs de permisos y helpers de setup/teardown ### Mejoras de UX - Clic en aula: petición de equipos y actualización de estado secuenciales (evita loader general mientras se resuelven estados individuales) - Botón de cerrar en ventana de plano de aula - Ficheros de idiomas ordenados alfabéticamente; revisión del catalán ### Visor de logs de disco - Integrado en páginas de estado de ogcore, ogboot, ogdhcp y ogrepository - Soporte de múltiples `SYSLOG_IDENTIFIER` por componente - Polling cada 5 segundos con modo live/pausa ## Test plan - [ ] Verificar acceso a rutas según rol (ou-admin, ou-operator, ou-minimal) - [ ] Verificar que los botones de infraestructura están ocultos para ou-admin - [ ] Verificar que los botones de creación de OU/cliente están ocultos para ou-operator - [ ] Ejecutar tests unitarios: `npm test` - [ ] Verificar visor de logs en `/global-status`
narenas added 10 commits 2026-06-16 17:59:43 +02:00
9872b9c7e4 fix(oggui): ocultar botones de escritura de infraestructura para ou-admin
Los botones de crear, editar y eliminar en servidores DHCP, Boot,
Comandos y Repositorios quedan visibles unicamente para super-admin,
alineando la UI con las restricciones de backend anadidas en ogcore.
1e1319d10c fix(oggui): permitir acceso de ou-operator a despliegue, particion e imagen
Las rutas clients/deploy-image, clients/partition-assistant,
clients/run-script y clients/:id/create-image ahora incluyen
'ou-operator' en allowedRoles.

El execute-command ya tenia deploy-image y partition en la lista de
comandos permitidos para ou-operator; solo faltaba el acceso a la ruta.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7fca193c2a fix(oggui): ocultar botones de creacion de OU y cliente para ou-operator
Los botones 'Nueva Unidad Organizativa' y 'Nuevo Cliente' (cabecera y
menu contextual del arbol) quedan ocultos para ou-operator, alineando
la UI con la restriccion de backend en ogcore.
oggui-debian-package/pipeline/head This commit looks good Details
testing/ogGui-multibranch/pipeline/head There was a failure building this commit Details
bc3190380e
Añadido botón de cerrar en la ventana de plano de aula
oggui-debian-package/pipeline/head There was a failure building this commit Details
testing/ogGui-multibranch/pipeline/head There was a failure building this commit Details
15265b7a67
Merge branch 'devel' of https://ognproject.evlt.uma.es/gitea/opengnsys/oggui into devel
583e846b36 test(oggui): añadir tests unitarios de permisos por rol
- auth.service.spec.ts: tests para isSuperAdmin, isOUAdmin, isOUOperator,
  isOUMinimal, userCategory y getCurrentRole con tokens JWT sintéticos
- role.guard.spec.ts: matriz completa 26 rutas × 4 roles, verifica
  redirección a /groups cuando el acceso está bloqueado
- sidebar.component.spec.ts: verifica ítems visibles por rol
  (ou-operator/minimal ven solo /groups; admins ven los 9 ítems)
- ogboot-status.component.spec.ts: corrige import incorrecto
  OgbootStatusComponent → GlobalOgbootStatusComponent
oggui-debian-package/pipeline/head There was a failure building this commit Details
testing/ogGui-multibranch/pipeline/head There was a failure building this commit Details
testing/ogGui-multibranch/pipeline/pr-main Build started... Details
221131718f
feat(oggui): añadir infraestructura E2E con Playwright
- playwright.config.ts: configuración con globalSetup/Teardown,
  webServer (reuseExistingServer), SSL bypass para cert autofirmado
- e2e/helpers/api.ts: crea/borra usuarios de test vía API de ogCore,
  persiste IRIs en .e2e-state.json para evitar problemas entre procesos
- e2e/helpers/auth.ts: loginAs(), navigateTo(), expectSidebarLink()
- e2e/permissions/: 4 specs (super-admin, ou-admin, ou-operator, ou-minimal)
  que verifican sidebar, rutas y botones de acción por rol
- package.json: scripts e2e, e2e:headed, e2e:ui, e2e:report
  y dependencia @playwright/test
- .gitignore: añade .e2e-state.json y playwright-report/
- elimina test-results/ogGui-junit-report.xml del tracking de git
narenas merged commit d856439444 into main 2026-06-16 17:59:55 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: opengnsys/oggui#95
There is no content yet.