Saltar al contenido
Guías

Cuentas de cliente

Login, registro y las rutas de cuenta generadas por el framework.

Última actualización:

Las cuentas son opcionales para navegar y comprar como invitado. Login, perfil, direcciones y pedidos vienen resueltos por el framework con Better Auth: no necesitas AuthProvider ni archivos lib/auth*.

No crees pages/api/auth.$.ts ni pages/api/$.ts: son rutas reservadas (/api/auth/* y /api/*).

1. Sesión

pages/account.tsx
import { useAuth } from "@ecomiq/storefront";

export function SessionButton({
  email,
  password,
}: {
  email: string;
  password: string;
}) {
  const { session, isPending, signIn, signOut } = useAuth();

  if (isPending) return <span>Cargando…</span>;

  if (!session?.user) {
    return (
      <button onClick={() => void signIn({ email, password })}>
        Iniciar sesión
      </button>
    );
  }

  return <button onClick={() => void signOut()}>Cerrar sesión</button>;
}

2. Registro

registerCustomer necesita el cliente del proxy:

pages/api/register.ts
import { createStorefrontProxyApi, registerCustomer } from "@ecomiq/storefront";

await registerCustomer(createStorefrontProxyApi(), {
  email: "andrea@ejemplo.pe",
  password: "una-clave-segura",
  firstName: "Andrea",
  lastName: "Ramos",
  countryIsoCode: "PE",
  phone: "+51 999 888 777",
});

Después del registro, llama a signIn para crear la sesión.

Rutas de cuenta

El framework genera y protege:

  • /api/* — proxy same-origin de la API.
  • /api/auth/* — Better Auth.
  • /account/ — perfil.
  • /account/addresses — direcciones.
  • /account/orders y /account/orders/:orderId — pedidos.
  • /account/devices — pantalla informativa; el endpoint de dispositivos aún no existe.

/login y /register no se generan. Debes crearlas en pages/.

Los helpers getCustomerMe, patchCustomer, getCustomerAddresses, createCustomerAddress, updateCustomerAddress, deleteCustomerAddress, getCustomerOrders y getCustomerOrder reciben primero un Api:

lib/customer.ts
import { createStorefrontProxyApi, getCustomerMe } from "@ecomiq/storefront";

const customer = await getCustomerMe(createStorefrontProxyApi());

Variables del servidor

VariableUso
BETTER_AUTH_SECRETSecreto de sesión; defínelo como secreto en producción.
STOREFRONT_API_URLURL usada por el login; por defecto https://storefront.ecomiq.pe.
BETTER_AUTH_TRUSTED_HOSTSHosts permitidos separados por comas; normalmente es opcional.

API de login

api.baseUrl de ecomiq.config.js configura serverApi, pero el login de Better Auth usa STOREFRONT_API_URL. Si trabajas contra otro entorno, define ambos con la misma API.

En esta página