Consultar estadísticas de intentos PIN
Endpoint: GET /auth/pin/attempts
Permite obtener información detallada sobre los intentos de verificación PIN del usuario autenticado, incluyendo intentos fallidos, estado de bloqueo y tiempo restante.
🔐 Requiere autenticación JWT
Debes enviar un token JWT válido en el header:
Authorization: Bearer <accessToken>
📋 Respuestas
✅ 200 OK
-
Sin intentos fallidos
{
"code": 1001,
"message": "PIN attempt statistics retrieved successfully",
"data": {
"hasAttempts": false,
"attempts": 0,
"maxAttempts": 5,
"remainingAttempts": 5,
"lastAttempt": null,
"isBlocked": false,
"blockedUntil": null
}
} -
Con intentos fallidos pero no bloqueado
{
"code": 1001,
"message": "PIN attempt statistics retrieved successfully",
"data": {
"hasAttempts": true,
"attempts": 2,
"maxAttempts": 5,
"remainingAttempts": 3,
"lastAttempt": "2025-01-20T14:40:00.000Z",
"isBlocked": false,
"blockedUntil": null
}
} -
Usuario bloqueado por intentos fallidos
{
"code": 1001,
"message": "PIN attempt statistics retrieved successfully",
"data": {
"hasAttempts": true,
"attempts": 5,
"maxAttempts": 5,
"remainingAttempts": 0,
"lastAttempt": "2025-01-20T14:42:00.000Z",
"isBlocked": true,
"blockedUntil": "2025-01-20T14:57:00.000Z"
}
}
❌ 401 Unauthorized
-
Sin token válido
{
"statusCode": 401,
"message": "Unauthorized"
}
📊 Campos de respuesta
- hasAttempts: Indica si el usuario tiene intentos fallidos registrados
- attempts: Número actual de intentos fallidos consecutivos
- maxAttempts: Número máximo de intentos permitidos (siempre 5)
- remainingAttempts: Intentos restantes antes del bloqueo
- lastAttempt: Fecha y hora del último intento fallido
- isBlocked: Indica si el usuario está actualmente bloqueado
- blockedUntil: Fecha y hora hasta cuándo estará bloqueado (si aplica)
🔄 Ciclo de intentos
- Intentos iniciales: El usuario tiene 5 intentos disponibles
- Intentos fallidos: Cada PIN incorrecto reduce los intentos restantes
- Bloqueo: Después de 5 intentos fallidos, se bloquea por 15 minutos
- Desbloqueo automático: Después de 15 minutos, se resetean los intentos
- Verificación exitosa: Un PIN correcto resetea inmediatamente los intentos
📝 Notas
- Los intentos se resetean automáticamente después de una verificación exitosa
- El bloqueo dura exactamente 15 minutos desde el último intento fallido
- Este endpoint no consume intentos, es solo informativo
- Útil para mostrar avisos al usuario sobre intentos restantes
- Los datos se mantienen hasta que se reseteen por éxito o expiración del bloqueo
💡 Casos de uso
- UI de advertencia: Mostrar intentos restantes antes de bloqueo
- Estado de bloqueo: Informar tiempo restante hasta desbloqueo
- Prevención de ataques: Ayudar al usuario a entender el estado de seguridad
- Debugging: Verificar el comportamiento del sistema de intentos
Información: Este endpoint es útil para implementar interfaces de usuario que informen al usuario sobre su estado de intentos PIN y posibles bloqueos.