Skip to main content

User

Interface que representa un usuario autenticado.

Propiedades

id

Identificador único del usuario.
id: string;
Ejemplo:
"123";
"user_456";
"550e8400-e29b-41d4-a716-446655440000";

name

Nombre del usuario.
name: string;
Ejemplo:
"Juan";
"María";

surname

Apellidos del usuario (opcional).
surname?: string
Ejemplo:
"Pérez García";
"López Martínez";

phone

Número de teléfono del usuario.
phone: string;
Ejemplo:
"+1234567890";
"+34612345678";

email

Email del usuario (opcional).
email?: string
Ejemplo:
"juan@example.com";

roles

Array de roles del usuario.
roles: string[]
Ejemplo:
["user"][("user", "admin")][("customer", "premium")];

Propiedades adicionales

El objeto User puede incluir propiedades adicionales según tu base de datos:
interface User {
  id: string;
  name: string;
  surname?: string;
  phone: string;
  email?: string;
  roles: string[];

  // Propiedades opcionales adicionales
  avatar?: string;
  foto?: string;
  createdAt?: string;
  updatedAt?: string;

  // Campos personalizados de tu DB
  [key: string]: any;
}

Ejemplo de uso

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

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

  if (!auth.user) {
    return <div>No autenticado</div>;
  }

  const { user } = auth;

  return (
    <div className="user-profile">
      <h2>
        {user.name} {user.surname}
      </h2>
      <p>Teléfono: {user.phone}</p>
      {user.email && <p>Email: {user.email}</p>}

      <div className="roles">
        {user.roles.map((role) => (
          <span key={role} className="role-badge">
            {role}
          </span>
        ))}
      </div>
    </div>
  );
}

Guardar en localStorage

auth.onSuccess = (user) => {
  // Guardar usuario
  localStorage.setItem("user", JSON.stringify(user));

  // Guardar token si existe
  if (user.token) {
    localStorage.setItem("token", user.token);
  }
};

// Recuperar usuario
const savedUser = JSON.parse(localStorage.getItem("user") || "null");

Verificar roles

function hasRole(user: User, role: string): boolean {
  return user.roles.includes(role);
}

// Uso
if (hasRole(user, "admin")) {
  // Mostrar panel de admin
}

Véase también