Skip to main content

PinData

Representa un PIN de autenticación en el sistema.

Propiedades

id

Identificador único del PIN.
id
string
ID único generado automáticamente
id: "a1b2c3d4e5f6g7";

pin

El código PIN en texto plano.
pin
string
PIN de autenticación
pin: "ABC123";

emojiString

El PIN codificado en emojis.
emojiString
string
PIN representado como string de emojis
emojiString: "🔐🔑🔒🔓";

status

Estado actual del PIN.
status
'pending' | 'verified'
Estado del PIN
status: "pending"; // Esperando verificación
status: "verified"; // Verificado exitosamente

userId

ID del usuario asociado (asignado después de la verificación).
userId
string | undefined
ID del usuario que verificó el PIN

phoneNumber

Número de teléfono que verificó el PIN.
phoneNumber
string | undefined
Teléfono del usuario en formato internacional
phoneNumber: "+1234567890";

socketId

ID del socket de Socket.IO que registró el PIN.
socketId
string | undefined
ID del socket del cliente

expiresAt

Timestamp de expiración (milisegundos desde epoch).
expiresAt
number
Momento en que expira el PIN
expiresAt: 1704067200000;

createdAt

Timestamp de creación (milisegundos desde epoch).
createdAt
number
Momento en que se creó el PIN

userData

Datos del usuario (asignado después de la verificación).
userData
any
Información completa del usuario
userData: {
  id: "user_123",
  name: "Juan",
  surname: "Pérez",
  phone: "+1234567890",
  roles: ["user"]
}

accessToken

Token JWT de acceso (asignado después de la verificación).
accessToken
string | undefined
Token JWT para acceder a recursos protegidos

refreshToken

Token JWT de refresco (asignado después de la verificación).
refreshToken
string | undefined
Token para obtener nuevos access tokens

Ciclo de vida de un PIN

1. CREACIÓN
   id, pin, emojiString, status='pending', expiresAt, createdAt

2. VERIFICACIÓN
   + userId, phoneNumber, userData
   + accessToken, refreshToken
   status='verified'

3. EXPIRACIÓN / LIMPIEZA
   El PIN se elimina del Map después de 5 segundos de verificación
   o cuando expira el tiempo

Ejemplo de uso

import { CamarauthBackend } from "@camarauth/sdk/server";

const backend = new CamarauthBackend({
  /* config */
});

// Obtener PINs activos
const pins = backend.getPins();

for (const [pin, data] of pins) {
  console.log({
    pin: data.pin,
    status: data.status,
    expiresIn: data.expiresAt - Date.now(),
    phoneNumber: data.phoneNumber || "N/A",
  });
}

Véase también