Acesso Comercial / Docs / Storefront
Ctrl K

Autenticação

Login seguro com cookies httpOnly. Sem tokens no frontend, sem gerenciamento manual de sessão.

Como funciona

A Storefront API usa cookies httpOnly para autenticação. Isso significa que o token de sessão nunca é acessível por JavaScript no navegador — proteção contra XSS por design.

  1. Login: O cliente chama clientLogin com email e senha. O servidor seta o cookie automaticamente na resposta.
  2. Requisições autenticadas: O navegador envia o cookie em cada request com credentials: 'include'. Zero gerenciamento de tokens.
  3. Logout: A mutation logout limpa os cookies no servidor.

Login

JavaScript
const response = await fetch('/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    query: `mutation($input: ClientLoginMutationInput!) {
      clientLogin(input: $input) { auth hostname }
    }`,
    variables: {
      input: {
        email: "cliente@email.com",
        password: "senha123",
        hostname: "minhaloja"
      }
    }
  }),
  credentials: 'include'
});
Importante: Sempre use credentials: 'include' em todas as chamadas fetch. Sem isso, os cookies de autenticação não serão enviados nem recebidos.

Requisições autenticadas

Após o login, todas as requisições subsequentes com credentials: 'include' já estão autenticadas:

JavaScript
const cart = await fetch('/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    query: `{ shoppingCart(hostname: "minhaloja") {
      totalPrice
      products { title quantity }
    } }`
  }),
  credentials: 'include'
});

Signup

JavaScript
await fetch('/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    query: `mutation($input: ClientSignupMutationInput!) {
      clientSignup(input: $input) { auth hostname }
    }`,
    variables: {
      input: {
        name: "João Silva",
        email: "joao@email.com",
        password: "senha123",
        hostname: "minhaloja"
      }
    }
  }),
  credentials: 'include'
});

Logout

JavaScript
await fetch('/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    query: `mutation($input: LogoutMutationInput!) {
      logout(input: $input) { success }
    }`,
    variables: { input: { hostname: "minhaloja" } }
  }),
  credentials: 'include'
});

Google Login

Também disponível para login/signup via Google OAuth:

Outras mutations de autenticação