Change user status (Admin only)
POST/company/users/status/:id
Cambia el estado de un usuario (activar/desactivar) mediante el campo status. Solo administradores pueden cambiar el estado de usuarios.
Objective
Permitir a administradores controlar el acceso de usuarios a la plataforma mediante activación/desactivación de cuentas.
Use Cases
- Desactivar un usuario temporalmente
- Activar un usuario que estaba desactivado
- Suspender acceso por razones de seguridad
- Bloquear usuario por falta de pago o incumplimiento
Authentication & Authorization
- Requiere JWT válido (middleware m.isLoged)
- Requiere rol admin o dev (middleware m.isAdmin)
Behavior
- reason = "NONE": Activa usuario (status = true), limpia reason, reasonDate, reasonMessage
- reason ≠ "NONE": Desactiva usuario (status = false), establece reason y reasonMessage
- Valida razón con model.isValidReason()
- Actualiza reasonDate si es válida (formato ISO8601)
Valid Reasons
- NONE: Usuario normal activo sin incidencias (activa usuario)
- BAD_USER: Bloqueado por mal comportamiento (reportes, fraude)
- PENDING: Registro completado, esperando activación
- ACTIVE: Usuario verificado y operativo
- BLOCKED: Bloqueado administrativamente (impago, seguridad)
Validation Flow
flowchart TD
A[Recibir POST /status/:id] --> B{Usuario Admin?}
B -->|No| C[403 Forbidden]
B -->|Sí| D{Usuario Existe?}
D -->|No| E[404 Not Found]
D -->|Sí| F{Reason === 'NONE'?}
F -->|Sí| G[Activar Usuario]
G --> H[status = true]
H --> I[reason = NONE]
I --> J[Limpiar reasonDate y reasonMessage]
F -->|No| K[Desactivar Usuario]
K --> L[status = false]
L --> M[Establecer reason]
M --> N[Establecer reasonDate]
N --> O[Establecer reasonMessage]
J --> P[Validar Rol]
O --> P
P --> Q[Guardar y Retornar 200]
Notes
- Este es el método preferido para bloquear/desbloquear usuarios temporalmente
- Diferente de soft delete (DELETE /:id) que elimina el registro
Request
Responses
- 200
- 400
- 401
- 403
- 404
Estado de usuario cambiado exitosamente
Solicitud inválida. Posibles causas:
- Razón no válida
- Error al guardar
No autorizado (se requiere rol admin o dev)
Prohibido (usuario no es administrador)
Usuario no encontrado