Skip to main content

CamarauthClient

Cliente HTTP para interactuar con el backend de Camarauth desde aplicaciones Node.js.

Constructor

constructor(config: {
  apiUrl: string;
  httpClient?: HttpClient;
})

Parámetros

config.apiUrl
string
required
URL base de la API de Camarauth
config.httpClient
HttpClient
Cliente HTTP personalizado (opcional)

Ejemplo

import { CamarauthClient } from "@camarauth/sdk";

const client = new CamarauthClient({
  apiUrl: "http://localhost:3001",
});

Métodos

registerPin()

Registra un nuevo PIN en el backend.
async registerPin(pin: string): Promise<RegisterPinResponse>

Parámetros

pin
string
required
PIN a registrar

Retorna

success
boolean
Indica si el registro fue exitoso
message
string
Mensaje descriptivo

Ejemplo

const response = await client.registerPin("ABC123");
console.log(response.success); // true

checkLogin()

Verifica si un PIN ha sido autenticado.
async checkLogin(pin: string): Promise<AuthResponse>

Parámetros

pin
string
required
PIN a verificar

Retorna

success
boolean
Indica si la operación fue exitosa
verified
boolean
Indica si el PIN fue verificado
token
string
Token JWT de acceso (si está verificado)
user
User
Datos del usuario (si está verificado)

Ejemplo

const response = await client.checkLogin("ABC123");

if (response.verified) {
  console.log("Token:", response.token);
  console.log("Usuario:", response.user);
} else {
  console.log("Login pendiente...");
}

refreshToken()

Refresca el token de acceso usando el refresh token.
async refreshToken(refreshToken: string): Promise<{
  token: string;
  refreshToken: string;
}>

Parámetros

refreshToken
string
required
Refresh token válido

Ejemplo

const { token, refreshToken } = await client.refreshToken(storedRefreshToken);

// Guardar nuevos tokens
localStorage.setItem("token", token);
localStorage.setItem("refreshToken", refreshToken);

getProfile()

Obtiene el perfil del usuario autenticado.
async getProfile(accessToken: string): Promise<User>

Parámetros

accessToken
string
required
Token JWT de acceso

Retorna

id
string
ID del usuario
name
string
Nombre del usuario
phone
string
Teléfono del usuario
roles
string[]
Roles del usuario

Ejemplo

const user = await client.getProfile(accessToken);
console.log(`Hola, ${user.name}!`);

logout()

Cierra la sesión del usuario.
async logout(
  accessToken: string,
  userId: string
): Promise<{ success: boolean }>

Parámetros

accessToken
string
required
Token JWT de acceso
userId
string
required
ID del usuario

Ejemplo

await client.logout(token, userId);
// Limpiar storage
localStorage.removeItem("token");

Ejemplo completo

import { CamarauthClient } from "@camarauth/sdk";

class AuthService {
  private client: CamarauthClient;
  private token: string | null = null;
  private refreshToken: string | null = null;

  constructor() {
    this.client = new CamarauthClient({
      apiUrl: process.env.CAMARAUTH_API_URL!,
    });
  }

  async initiateLogin(pin: string): Promise<void> {
    // Registrar PIN
    await this.client.registerPin(pin);

    // Polling hasta que el usuario verifique
    const checkInterval = setInterval(async () => {
      const response = await this.client.checkLogin(pin);

      if (response.verified) {
        clearInterval(checkInterval);
        this.token = response.token!;
        this.refreshToken = response.refreshToken!;

        // Guardar tokens
        localStorage.setItem("token", this.token);
        localStorage.setItem("refreshToken", this.refreshToken);
      }
    }, 2000);
  }

  async getUserProfile(): Promise<User> {
    if (!this.token) {
      throw new Error("No autenticado");
    }
    return this.client.getProfile(this.token);
  }

  async logout(userId: string): Promise<void> {
    if (this.token) {
      await this.client.logout(this.token, userId);
    }
    this.token = null;
    this.refreshToken = null;
    localStorage.removeItem("token");
    localStorage.removeItem("refreshToken");
  }
}

Véase también