Skip to main content

PinAuthOptions

Interface de opciones para el hook usePinAuth.

Propiedades

apiUrl

URL del backend de Camarauth.
apiUrl: string
Ejemplo:
apiUrl: 'http://localhost:3001'

whatsappNumber

Número de WhatsApp para enviar el PIN.
whatsappNumber: string
Ejemplo:
whatsappNumber: '+1234567890'

pinLength

Longitud del PIN a generar.
pinLength?: number
  • Default: 6
  • Mínimo: 4
  • Máximo: 10
Ejemplo:
pinLength: 8

expiresIn

Segundos antes de que expire el PIN.
expiresIn?: number
  • Default: 180 (3 minutos)
  • Mínimo: 60 (1 minuto)
  • Máximo: 600 (10 minutos)
Ejemplo:
expiresIn: 300  // 5 minutos

maxAutoRegenerations

Máximo número de regeneraciones automáticas.
maxAutoRegenerations?: number
  • Default: 3
Ejemplo:
maxAutoRegenerations: 5

autoGenerate

Generar PIN automáticamente al conectar.
autoGenerate?: boolean
  • Default: false
Ejemplo:
autoGenerate: true

messagePrefix

Prefijo del mensaje de WhatsApp.
messagePrefix?: string
  • Default: 'PIN:'
Ejemplo:
messagePrefix: 'Código:'

onPinGenerated

Callback cuando se genera un PIN.
onPinGenerated?: (pin: string, emojis: string[]) => void
Ejemplo:
onPinGenerated: (pin, emojis) => {
  console.log('PIN generado:', pin);
  console.log('Emojis:', emojis);
}

onSuccess

Callback cuando la autenticación es exitosa.
onSuccess?: (user: User) => void
Ejemplo:
onSuccess: (user) => {
  console.log('Usuario autenticado:', user);
  localStorage.setItem('token', user.token);
}

onError

Callback cuando hay un error.
onError?: (error: CamarauthError) => void
Ejemplo:
onError: (error) => {
  console.error('Error:', error.message);
  alert('Error: ' + error.message);
}

onExpire

Callback cuando el PIN expira.
onExpire?: () => void
Ejemplo:
onExpire: () => {
  console.log('PIN expirado');
  alert('El código ha expirado. Por favor genera uno nuevo.');
}

onMaxRegenerationsReached

Callback cuando se alcanza el máximo de regeneraciones.
onMaxRegenerationsReached?: () => void
Ejemplo:
onMaxRegenerationsReached: () => {
  console.log('Máximo de intentos alcanzado');
  alert('Has alcanzado el máximo de intentos.');
}

Ejemplo completo

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

function LoginComponent() {
  const auth = usePinAuth({
    // Requeridas
    apiUrl: 'http://localhost:3001',
    whatsappNumber: '+1234567890',
    
    // Opcionales
    pinLength: 6,
    expiresIn: 180,
    maxAutoRegenerations: 3,
    autoGenerate: false,
    messagePrefix: 'PIN:',
    
    // Callbacks
    onPinGenerated: (pin, emojis) => {
      console.log('PIN:', pin);
    },
    onSuccess: (user) => {
      console.log('Éxito:', user);
    },
    onError: (error) => {
      console.error('Error:', error);
    },
    onExpire: () => {
      console.log('Expirado');
    },
    onMaxRegenerationsReached: () => {
      console.log('Máximo alcanzado');
    }
  });

  return (
    <button onClick={auth.generate}>
      Generar PIN
    </button>
  );
}

Véase también