EquipoController
Este controlador maneja las operaciones relacionadas con la gestión de usuarios tipo "equipo" en el sistema. Permite crear, actualizar, filtrar, eliminar (lógicamente) y listar miembros del equipo, con base en el rol y tipo de usuario autenticado.
🔍 Ubicación
src/controllers/equipo.controller.ts
🔐 Seguridad
Todas las rutas están protegidas por JWT (@Security("jwt")
).
Solo los usuarios con tipoUsuario = EMPRESARIAL o rol = ADMIN pueden realizar acciones sobre los miembros del equipo.
📌 Endpoints
📤 Crear nuevo equipo
POST /equipo
Crea un nuevo usuario de tipo equipo para una empresa.
Requiere
- Token JWT válido.
- Objeto
EquipoDTO
en el cuerpo de la solicitud. - Si el usuario es
ADMIN
, debe incluirempresaId
explícitamente.
Respuesta
201 Created
con el equipo creado.400 Bad Request
si faltaempresaId
siendoADMIN
.403 Forbidden
si no tiene permisos.
📥 Obtener todos los equipos
GET /equipo
Lista todos los equipos.
Si el usuario es EMPRESARIAL, se limita a su propia empresa.
Requiere
- Token JWT válido.
Respuesta
- Lista de equipos según el contexto.
403 Forbidden
si no tiene permisos.
🔎 Filtrar equipos
GET /equipo/filtrar
Permite filtrar equipos por múltiples parámetros.
Parámetros (query
)
nombreCompleto
(string) – Filtrar por nombre.correo
(string) – Filtrar por correo.rolEquipo
(LECTOR
|COMENTARISTA
|EDITOR
) – Rol dentro del equipo.estado
(activo
|inactivo
) – Estado del equipo.perfilCompleto
(true
|false
) – Si el equipo completó el perfil.
Requiere
- Token JWT válido.
- Si es EMPRESARIAL, solo verá equipos de su empresa.
Respuesta
- Lista de equipos filtrados.
403 Forbidden
si no tiene permisos.
📄 Obtener equipo por ID
GET /equipo/{id}
Obtiene los datos de un miembro del equipo por su ID.
Requiere
- Token JWT válido.
- Si el usuario es EMPRESARIAL, solo podrá acceder a miembros de su empresa.
Respuesta
- Objeto del equipo.
403 Forbidden
si intenta acceder a otro equipo fuera de su empresa.
✏️ Actualizar equipo
PUT /equipo/{id}
Actualiza campos específicos de un usuario equipo.
Requiere
- Token JWT válido.
- Cuerpo con los campos a modificar (
Partial<EquipoDTO>
). - EMPRESARIAL solo puede modificar equipos de su empresa.
Respuesta
- Equipo actualizado.
403 Forbidden
si no tiene permisos.
🗑️ Eliminación lógica de equipo
DELETE /equipo/eliminar-logico/{id}
Realiza una eliminación lógica (no física) de un miembro del equipo.
Requiere
- Token JWT válido.
- El equipo debe pertenecer a la empresa del usuario si es EMPRESARIAL.
Respuesta
- Confirmación de eliminación.
403 Forbidden
si no tiene permisos o el equipo no pertenece a su empresa.404 Not Found
si el equipo no existe.
🧨 Eliminar todos los equipos de una empresa
DELETE /equipo/todos/{empresaId}
Elimina todos los usuarios de equipo asociados a una empresa.
Requiere
- Token JWT válido.
- Solo
ADMIN
o EMPRESARIAL de la misma empresa pueden ejecutar esta acción.
Respuesta
- Confirmación de eliminación masiva.
403 Forbidden
si se intenta eliminar los equipos de otra empresa.
🛠️ Notas técnicas
- Toda la lógica está contenida en el
EquipoService
. - Se aplica validación de acceso según:
req.user.tipoUsuario === "EMPRESARIAL"
req.user.rol === "ADMIN"
- Si el usuario es EMPRESARIAL, se restringen acciones a su propio
empresaId
. - Los campos
estado
yperfilCompleto
pueden usarse como filtros adicionales en los endpoints de consulta.