Skip to content

Entrega 3 - Modulo de Administracion y Configuracion

gonzalo.ortiz.f requested to merge entrega-3-admin-configuracion into develop

Resumen

Implementa el modulo completo de administracion y configuracion con CRUD de roles, gestion de permisos, categorias de instancias y categorias de recordatorios, todo restringido al rol ADMINISTRADOR con auditoria en cada operacion.

Cambios principales

Roles y permisos

  • CRUD completo en /api/v1/admin/roles con validacion, auditoria y baja logica.
  • Nueva entidad Permission y tabla intermedia role_permissions para asociar permisos a un rol de forma dinamica.
  • Endpoint dedicado PUT /api/v1/admin/roles/{id}/permissions para reemplazar el conjunto de permisos en una sola operacion.
  • Seed de los roles base de la entrega (ADMINISTRADOR, DOCENTE, TUTOR, ESTUDIANTE) mediante migracion idempotente.

Categorias

  • CRUD de categorias de instancias en /api/v1/admin/instance-categories con seed inicial.
  • CRUD de categorias de recordatorios sobre el modulo existente (/api/v1/recordatorios/categorias), agregando campo code, timestamps y @PreAuthorize para admin.

Seguridad

  • @EnableMethodSecurity activado.
  • Matcher dedicado /api/v1/admin/** restringido a ADMINISTRADOR.
  • AuthenticationEntryPoint y AccessDeniedHandler globales que devuelven ApiErrorResponse con timestamp ISO 8601.
  • @PreAuthorize("hasRole('ADMINISTRADOR')") por controller.

Auditoria

  • Nuevas acciones en AuditAction para roles, permisos y categorias.
  • auditService.log(...) en cada operacion con actor, entityId, details y IP desde X-Forwarded-For.

Exception handler

  • Handlers para AccessDeniedException (403), HttpMessageNotReadableException (400) y MethodArgumentTypeMismatchException (400).
  • Excepciones especificas para cada caso de no encontrado o duplicado.

Migraciones

  • V17: seed de roles base.
  • V18: tablas permissions y role_permissions.
  • V19: tabla instance_categories con seed.
  • V20: extension de reminder_categories con code y timestamps.
  • V21: normalizacion del hash del admin a admin/admin123.
  • V22: inclusion de REACTIVATE en el CHECK de instances_audit.

Bug fixes preexistentes cerrados

  • CedulaUyValidator rechaza separadores en extremos de la cedula.
  • AuditLogEntity.user pasa a fetch EAGER para evitar LazyInitializationException en auditoria.
  • GlobalExceptionHandlerTest.shouldHandleResponseStatusException corregido para que el body pase la validacion.
  • PATCH /api/v1/instances/{id}/reactivate ahora persiste la accion REACTIVATE en instances_audit.
  • IncidentNotFoundException reemplaza EntityNotFoundException para devolver 404 en lugar de 500.
  • RoleServiceImpl.reemplazarPermisos usa deleteByRoleId con flush antes de reasignar para evitar duplicate key.
  • ReminderSecurityIntegrationTest y InstanceIntegrationTest limpian datos cruzados para que la suite completa corra sin errores de FK.

Pruebas

  • 155 tests, 0 failures, 0 errors. BUILD SUCCESS.
  • 15 tests nuevos para los endpoints admin.
  • Pruebas manuales con curl validadas: login, CRUD completo de cada modulo, casos negativos (401, 403, 400, 404, 409) y captura de IP en auditoria.
  • 63 entradas de auditoria registradas en un escenario E2E completo, con 19 acciones distintas y entity_name consistente.

Checklist

  • Compila sin warnings
  • Tests pasan
  • Pruebas manuales con curl verificadas
  • Auditoria persiste actor, entityId, details e IP
  • Endpoints admin restringidos a ADMINISTRADOR
  • Migraciones idempotentes donde aplica
  • No se introdujeron regresiones en modulos existentes

Merge request reports

Loading