CustomerAuthenticatedLoginWith2FA

Mutation que valida as credenciais do cliente (identificador + senha) e, somente em caso de sucesso, dispara o envio de uma chave de acesso para o e-mail cadastrado do cliente. Ela não emite CustomerAccessToken: o retorno é apenas o e-mail para o qual a chave foi enviada, que deve ser repassado à mutation CustomerAuthenticateAccessKey para concluir a autenticação.

É usada quando a loja precisa de um login com dois fatores — senha e chave de acesso enviada por e-mail — em um único ponto de entrada, no lugar de CustomerAuthenticatedLogin. Aplicações típicas: lojas com exigência de segurança reforçada ou conformidade que não podem autenticar apenas com senha, e lojas com a configuração LoginSegundoFatorObrigatorio ativa, onde os demais métodos de login passam a ser recusados. A mutation está sempre disponível, independentemente dessa configuração.

Argumentos

ArgumentoTipoObrigatórioDescrição
inputCustomerAuthenticateInput!SimCredenciais do cliente. Mesmo input aceito por CustomerAuthenticatedLogin.
recaptchaTokenStringCondicionalToken do Google reCAPTCHA. Obrigatório quando o grupo Autenticação está ativo na configuração de obrigatoriedade de reCAPTCHA do token do Storefront API utilizado.

Parâmetros de CustomerAuthenticateInput

CampoTipoObrigatórioDescrição
inputString!SimIdentificador do cliente. Aceita e-mail ou CPF/CNPJ, conforme a configuração PermitirLoginCPFeCNPJ da loja.
passwordString!SimSenha do cliente.

Retorno — TwoFactorLoginChallenge

CampoTipoDescrição
emailString!E-mail para o qual a chave de acesso foi enviada. É o e-mail do cadastro do cliente, que pode ser diferente do identificador usado no login quando a loja permite login por CPF/CNPJ.
❗️

Use sempre o email retornado na chamada seguinte a CustomerAuthenticateAccessKey. No login por CPF/CNPJ o identificador digitado pelo cliente não é o e-mail de destino da chave.

Exemplo — login por e-mail

mutation {
  customerAuthenticatedLoginWith2FA(
    input: { input: "[email protected]", password: "senha-do-cliente" }
    recaptchaToken: "03AGdBq26..."
  ) {
    email
  }
}
Response
{
  "data": {
    "customerAuthenticatedLoginWith2FA": {
      "email": "[email protected]"
    }
  }
}

Exemplo — login por CPF

mutation {
  customerAuthenticatedLoginWith2FA(
    input: { input: "12345678900", password: "senha-do-cliente" }
    recaptchaToken: "03AGdBq26..."
  ) {
    email
  }
}
Response
{
  "data": {
    "customerAuthenticatedLoginWith2FA": {
      "email": "[email protected]"
    }
  }
}

Exemplo — com variáveis

mutation CustomerAuthenticatedLoginWith2FA(
  $input: String!
  $password: String!
  $recaptchaToken: String
) {
  customerAuthenticatedLoginWith2FA(
    input: { input: $input, password: $password }
    recaptchaToken: $recaptchaToken
  ) {
    email
  }
}
{
  "input": "[email protected]",
  "password": "senha-do-cliente",
  "recaptchaToken": "03AGdBq26..."
}

SDK TypeScript

Disponível na versão full do SDK a partir da v1.2.0.

const { data } = await sdk.customer.authenticateWith2FA(
  input,          // e-mail, CPF ou CNPJ
  password,       // senha
  recaptchaToken  // opcional
);

// data.email → e-mail de destino da chave de acesso

Erros

CódigoMensagemSituação
LOG100Usuário ou senha inválidosSenha incorreta ou identificador inexistente. Os dois casos retornam o mesmo erro, sem distinção, e em nenhum deles a chave de acesso é enviada.
LOG156Este tipo de login não está disponível para esta lojaRetornado pelas demais mutations de login quando a configuração LoginSegundoFatorObrigatorio está ativa. Não é retornado por esta mutation.
Erro de reCAPTCHA obrigatóriorecaptchaToken ausente ou inválido enquanto o grupo Autenticação está ativo para o token utilizado. A senha não é validada.
🚧

Requisitos para funcionar

  • O tipo de e-mail LoginChaveAcesso precisa estar configurado e ativo na loja, pois é ele que entrega a chave de acesso ao cliente.
  • O tema precisa implementar os dois passos (senha e, em seguida, chave de acesso). Ligar a configuração LoginSegundoFatorObrigatorio sem essa implementação recusa todos os outros métodos de login da loja.