RF61: Administrador elimina curso
Descripción
Como administrador, quiero eliminar (o despublicar) un curso para retirar contenido obsoleto o incorrecto del catálogo.
Operación restringida por control de acceso por roles (RBAC): solo usuarios con rol admin pueden ejecutarla (Compliance §5.1 — RBAC). Se favorece el borrado lógico (despublicar/archivar) para no romper inscripciones y certificados existentes.
| Campo | Valor |
|---|---|
| Módulo | Courses Module (administración) |
| Actor | Administrador (rol admin) |
| Endpoint | DELETE /admin/courses/:id |
| Precondiciones | Sesión activa con rol admin |
| Prioridad | Baja (post-MVP) |
| Etapa | MBI 1 |
| Requisitos relacionados | RF60, RF62 |
Reglas de negocio
- RN-61.1 — Solo el rol
admin(validado en el backend, no en el cliente) puede eliminar cursos. - RN-61.2 — Por defecto se hace borrado lógico (despublicar/archivar) para preservar inscripciones, progreso y certificados.
- RN-61.3 — Un curso archivado deja de aparecer en el catálogo (RF47) pero conserva su historial.
- RN-61.4 — La acción se registra en el log de auditoría (quién, cuándo, qué curso).
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
id | Obligatorio. Curso existente. | "Curso no encontrado." (404) |
| Rol | Debe ser admin. | "No tienes permisos para esta acción." (403) |
Authorization | Bearer válido. | "Sesión no válida." (401) |
Criterios de aceptación
Escenario 1: Eliminación (lógica) exitosa
Dado que soy administrador,
Cuando elimino un curso,
Entonces el sistema lo archiva/despublica,
Y responde 200 OK,
Y el curso desaparece del catálogo conservando su historial.
Escenario 2: Usuario sin rol admin (seguridad)
Dado que soy un usuario sin rol admin,
Cuando intento eliminar un curso,
Entonces el sistema responde 403 Forbidden,
Y registra el intento.
Escenario 3: Curso inexistente
Dado que envío un id que no existe,
Cuando intento eliminar,
Entonces el sistema responde 404 Not Found.
Escenario 4: Auditoría
Dado que se elimina un curso, Cuando la operación se completa, Entonces se registra el evento de auditoría (admin, fecha, curso).
Criterios no funcionales
- RBAC validado en backend; auditoría obligatoria.
- Comunicación TLS 1.2+.