Skip to content

feat: seguridad TelefonoService, reactivar recordatorio e integridad referencial en categorías

juan.viera.c requested to merge feature/seguridad-y-ciclodevida into master

Este MR cierra tres gaps identificados durante la revisión de Sprint 5 en la rama feature/seguridad-y-ciclo-vida.

¿Qué se hizo y por qué?

  1. TelefonoService — @PreAuthorize faltante Los tres métodos del service operaban sin restricción de acceso: cualquier usuario autenticado podía listar, agregar o eliminar teléfonos de cualquier estudiante independientemente de su rol. Se agregaron las anotaciones correspondientes usando los permisos ya definidos en el schema, siguiendo el principio del proyecto de que toda la seguridad vive en la capa service.

listarPorEstudiante → VER_ESTUDIANTE agregar → EDITAR_ESTUDIANTE eliminar → ELIMINAR_ESTUDIANTE

No se crearon permisos nuevos. Los tres corresponden al dominio de datos del estudiante, que es lo que TelefonoService manipula. 2. RecordatorioService / RecordatorioController / RecordatorioRepository — reactivar recordatorio El ciclo de vida del recordatorio estaba incompleto: existía darDeBaja pero no su operación inversa. Esto es inconsistente con el resto del sistema donde todas las entidades con baja lógica tienen reactivación (Rol, CategoriaInstancia, CategoriaRecordatorio, Estudiante). Se agregó:

findByCodRecordatorio en el repository, para buscar sin filtrar por estado (necesario para encontrar el registro inactivo) Método reactivar en el service con validación de estado previo y permiso EDITAR_RECORDATORIO Endpoint PATCH /api/recordatorios/{id}/reactivar en el controller

  1. CategoriaInstanciaRepository / CategoriaRecordatorioRepository / sus services — integridad referencial en baja darDeBajaCategoria en ambos services ejecutaba la baja sin verificar si había instancias o recordatorios activos usando esa categoría. Esto permitía dejar referencias huérfanas en la práctica: un registro activo apuntando a una categoría inactiva. Se agregó en cada repository una query JPQL que verifica la existencia de registros activos asociados, y en cada service la validación correspondiente antes de ejecutar la baja, respondiendo 409 con mensaje descriptivo si hay referencias activas.

Merge request reports

Loading