Saltar al contenido principal

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

Estado de usuario cambiado exitosamente