CamarauthClient
Cliente HTTP para interactuar con el backend de Camarauth desde aplicaciones Node.js.
Constructor
constructor(config: {
apiUrl: string;
httpClient?: HttpClient;
})
Parámetros
URL base de la API de Camarauth
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
Retorna
Indica si el registro fue exitoso
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
Retorna
Indica si la operación fue exitosa
Indica si el PIN fue verificado
Token JWT de acceso (si está verificado)
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
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
Retorna
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
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