Saltar al contenido principal

Solicitar Restablecimiento de Contraseña

Solicita un enlace de restablecimiento de contraseña que se enviará por correo electrónico. El enlace es válido por 10 minutos.


Información General

Este endpoint permite a los usuarios solicitar un restablecimiento de contraseña cuando la han olvidado.
El sistema genera un token único, lo guarda en Redis por 10 minutos y envía un enlace al email del usuario.

POST/auth/forgot-password

Genera un token de restablecimiento y envía un enlace al email del usuario

📋 Parámetros

emailstringrequerido

Dirección de correo electrónico del usuario registrado

📤 Respuesta

{
"code": 1002,
"message": "Password reset link sent successfully.",
"data": {
  "status": "pending"
}
}

Validaciones

Email

  • Debe tener formato válido: usuario@dominio.com
  • Regex: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/
  • No puede estar vacío

Respuestas

✅ Enlace Enviado Exitosamente

Código 1002 - Se envió el enlace de restablecimiento al email.

{
"code": 1002,
"message": "Password reset link sent successfully.",
"data": {
"status": "pending"
}
}

Comportamiento del sistema:

  • Genera un token UUID único
  • Guarda en Redis: reset:{token} → email (TTL: 10 minutos)
  • Envía email con plantilla reset_password que contiene el enlace
  • Enlace (formato): https://www.swapbits.site/api/auth/reset-password?token={UUID}

❌ Email Inválido o Faltante

Código 4006 - Datos faltantes o formato inválido.

{
"code": 4006,
"message": "Missing required data."
}

❌ Usuario No Encontrado

Código 4001 - El email no está registrado.

{
"code": 4001,
"message": "User not found."
}

Nota de seguridad: actualmente el backend sí revela si el email existe o no (enumeración).


Detalles Técnicos

Almacenamiento en Redis

  • Key: reset:{token}
  • Value: email del usuario
  • TTL: 10 minutos (600,000 ms)

Email Enviado

  • Template: reset_password
  • Payload: { resetLink }

Ejemplo de enlace: https://www.swapbits.site/api/auth/reset-password?token=550e8400-e29b-41d4-a716-446655440000


Ejemplos

JavaScript / Fetch

async function requestPasswordReset(email) {
const response = await fetch('https://api.swapbits.co/auth/forgot-password', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email }),
});

const result = await response.json();

if (result.code === 1002) return { success: true };
return { success: false, code: result.code, message: result.message };
}

cURL

curl -X POST 'https://api.swapbits.co/auth/forgot-password' \
-H 'Content-Type: application/json' \
-d '{"email":"usuario@ejemplo.com"}'

Enlaces Relacionados