Skip to main content

PinAuthState

Estado completo del sistema de autenticación retornado por usePinAuth.

Propiedades

pin

PIN actual generado.
pin: string | null;
  • null si no hay PIN activo
  • String de 6 caracteres por defecto
Ejemplo:
console.log(auth.pin); // "ABC123" o null

emojis

Array de emojis que representan el PIN.
emojis: string[]
  • Array vacío si no hay PIN
  • Cada elemento es un emoji codificado
Ejemplo:
console.log(auth.emojis); // ["🔐", "🔑", "🔒", "🔓", "🗝️", "🛡️"]

emojiString

PIN como string concatenado de emojis.
emojiString: string;
Ejemplo:
console.log(auth.emojiString); // "🔐🔑🔒🔓🗝️🛡️"

timeLeft

Segundos restantes antes de expirar.
timeLeft: number;
Ejemplo:
console.log(auth.timeLeft); // 175 (2 minutos 55 segundos)

formattedTime

Tiempo formateado como MM:SS.
formattedTime: string;
Ejemplo:
console.log(auth.formattedTime); // "02:55"

isExpired

Indica si el PIN expiró.
isExpired: boolean;

regenerationCount

Número de regeneraciones realizadas.
regenerationCount: number;

hasReachedMaxRegenerations

Indica si se alcanzó el máximo de regeneraciones.
hasReachedMaxRegenerations: boolean;

status

Estado actual de la autenticación.
status: "idle" | "polling" | "success" | "error" | "expired";
EstadoDescripción
idleSin actividad
pollingEsperando verificación
successAutenticado exitosamente
errorOcurrió un error
expiredPIN expirado

isLoading

Indica si está cargando o conectando.
isLoading: boolean;

user

Datos del usuario autenticado.
user: User | null;
Ejemplo:
{
  id: "123",
  name: "Juan",
  surname: "Pérez",
  phone: "+1234567890",
  roles: ["user"]
}

error

Error actual si existe.
error: CamarauthError | null;
Link de WhatsApp con mensaje.
whatsappLink: string;
Ejemplo:
console.log(auth.whatsappLink);
// "https://wa.me/1234567890?text=PIN%3A%20%F0%9F%94%90%F0%9F%94%91"

qrCodeUrl

URL del QR code para escanear.
qrCodeUrl: string | null;
Ejemplo:
<img src={auth.qrCodeUrl} alt="QR Code" />

fullMessage

Mensaje completo para WhatsApp.
fullMessage: string;
Ejemplo:
console.log(auth.fullMessage); // "PIN: 🔐🔑🔒🔓🗝️🛡️"

Métodos

generate

Genera un nuevo PIN.
generate: () => void
Ejemplo:
<button onClick={auth.generate}>
  Generar PIN
</button>

cancel

Cancela la autenticación actual.
cancel: () => void
Ejemplo:
<button onClick={auth.cancel}>
  Cancelar
</button>

reset

Resetea todo el estado.
reset: () => void
Ejemplo:
<button onClick={auth.reset}>
  Comenzar de nuevo
</button>

Ejemplo de uso

import { usePinAuth } from "@camarauth/sdk/react";

function AuthDisplay() {
  const auth = usePinAuth({
    apiUrl: "http://localhost:3001",
    whatsappNumber: "+1234567890",
  });

  return (
    <div>
      <p>Estado: {auth.status}</p>

      {auth.pin && (
        <>
          <p>Emojis: {auth.emojis.join(" ")}</p>
          <p>Tiempo: {auth.formattedTime}</p>
          <p>Expirado: {auth.isExpired ? "Sí" : "No"}</p>
        </>
      )}

      {auth.user && <p>Usuario: {auth.user.name}</p>}

      {auth.error && <p className="error">{auth.error.message}</p>}

      <button onClick={auth.generate}>Generar</button>
      <button onClick={auth.cancel}>Cancelar</button>
      <button onClick={auth.reset}>Reset</button>
    </div>
  );
}

Véase también