feat: version 4.6.0 -- Cambio de correo con aprobacion
El usuario solicita el cambio desde Mi cuenta (correo nuevo + clave actual). Lo aprueba un admin/superadmin (colaboradores), solo un superadmin (admins) o el propio superadmin mediante enlace a su correo actual. Tras aprobar se envia confirmacion al correo nuevo y aviso al actual; al confirmar se aplica el cambio y se cierran todas las sesiones. Todo el proceso queda en auditoria. Migracion 035. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -279,3 +279,16 @@ se registra en consola de desarrollo. Antes de usar estas rutas se debe aplicar
|
||||
- `403` sin permisos para la acción (según rol)
|
||||
- `404` no encontrado (incluye cuando el recurso existe pero no pertenece al usuario/alcance)
|
||||
- `500` error interno (sanitizado, sin detalle de stack en producción)
|
||||
|
||||
## Cambio de correo (v4.6.0)
|
||||
|
||||
- `GET /api/account/email-change`: última solicitud propia (requiere JWT).
|
||||
- `POST /api/account/email-change`: `{ newEmail, currentPassword }`; crea una solicitud tras validar la clave, con límite de 20 solicitudes por 15 minutos.
|
||||
- `DELETE /api/account/email-change`: cancela la solicitud propia pendiente o aprobada.
|
||||
- `GET /api/users/email-change-requests`: pendientes que el admin/superadmin puede decidir.
|
||||
- `POST /api/users/email-change-requests/:id/approve`: aprueba y envía el enlace de confirmación al correo nuevo.
|
||||
- `POST /api/users/email-change-requests/:id/reject`: `{ reason }` obligatorio; avisa al correo actual.
|
||||
- `POST /api/auth/email-change/self-approve`: `{ token }`; enlace público de aprobación exclusiva del superadmin, un solo uso.
|
||||
- `POST /api/auth/email-change/confirm`: `{ token }`; enlace público de confirmación del correo nuevo. Revoca todas las sesiones al aplicar.
|
||||
|
||||
Los endpoints públicos tienen límite de 20 solicitudes por 15 minutos. Los enlaces duran 24 horas; las solicitudes abiertas vencen a los 7 días. Los tokens se almacenan solo como SHA-256.
|
||||
|
||||
Reference in New Issue
Block a user