Saltar al contenido principal

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

  1. Intentos iniciales: El usuario tiene 5 intentos disponibles
  2. Intentos fallidos: Cada PIN incorrecto reduce los intentos restantes
  3. Bloqueo: Después de 5 intentos fallidos, se bloquea por 15 minutos
  4. Desbloqueo automático: Después de 15 minutos, se resetean los intentos
  5. 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.