Auto Login compatível com WHMCS 7 e com múltiplas URLs de destino

--------------------//--------------------

Atualização 14/03/2017:

Esse post se aplica a versões anteriores à 2.0 do módulo, baixe a versão mais recente e confira as instruções de instalação atualizadas neste link.

--------------------//--------------------

gofas_whmcs_autologinCom a atualização para o WHMCS 7, quem usa técnicas de auto login no WHMCS pode ter o envio de e-mails interrompidos, devido a mudanças que impedem que os e-mails sejam gerados se o template de email contiver merge tags não registradas pelo WHMCS ou por algum hook. A partir dessa descoberta, decidimos criar o Gofas WHMCS Autologin, que resolve essa e outras dificuldades.

O auto login é um recurso simples (e até mesmo "manjado"), essa funcionalidade é ideal para redirecionar o cliente diretamente para o Boleto, gerado pelo módulo Gofas Gerencianet Boleto para WHMCS.
O que torna o nosso método de auto login especial é:

  • Capacidade de escolha do destino após o login, configurado diretamente na merge tag do template de e-mail;
  • Não é necessário inserir o hash diretamente no template do e-mail, apenas a tag {hash};
  • Configuração mais simples, merge tags e urls dinâmicos menores;

Instalação

1) Baixe aqui o módulo., descompacte o arquivo gofaswhmcsautologin.zip, mova o arquivo auth.php para a pasta raiz e o arquivo gofas_hash_email.php para a pasta /includes/hooks/ do WHMCS;

2) Ative a opção AutoAuth do WHMCS adicionando a variável $autoauthkey com uma chave única ao arquivo configuration.php, localizado na raíz da instalação do WHMCS. Como no exemplo da linha 15 do nosso configuration.php, adicione uma senha única que será usada nos próximos passos, se a sua chave autoauthkey for por exemplo 123456abcdef, a linha da variável $autoauthkey vai ficar assim:

$autoauthkey = "123456abcdef";

3) Adicione a mesma chave $autoauthkey do arquivo configuration.php na linha 11 do arquivo auth.php. Exemplo: Se a sua chave for 123456abcdef, a linha 11 do arquivo auth.php vai ficar desta forma:

$autoauthkey = "123456abcdef"; // chave igual à inserida no /configuration.php

4) Crie uma nova chave (diferente da atribuída à $autoauthkey) e atribua à variável $secret_key na linha 12 do arquivo auth.php. Exemplo: Se a sua secret_key for abcdef123456, a linha 12 do auth.phpvai ficar assim:

$secret_key = "abcdef123456"; // chave igual à inserida no /includes/hooks/gofas_hash_email.php

5) Adicione a mesma chave atribuída à $secret_key no arquivo auth.php (descrito no passo anterior) na linha 21 do arquivo /includes/hooks/gofas_hash_email.php. Exemplo: Se a sua secret_key é abcdef123456, a linha 21 do arquivo gofas_hash_email.php vai ficar assim:

$secret_key = 'abcdef123456'; // chave igual à inserida no /auth.php

6) Após concluir esses passos, ao adicionar a tag dinâmica {hash} a um template de email, ela será substituída por uma senha que será utilizada para identificar o usuário e conceder acesso à área do cliente do WHMCS após o login. Para gerar os URLs com o hash, adicione as tags abaixo nos modelos de email seguindo a lógica dos exemplos a seguir:

URL dinâmico para colar no template de email "Invoice Created" que leva o usuário para a visualização da fatura após o login:

{$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

URL dinâmico que leva o usuário para a edição do perfil após o login:

{$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=clientarea.php?action=details

Exemplo de URL para que leva o usuário para a visualização de um ticket respondido após o login:

{$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto={$ticket_link}

 

Agora você possui um sistema de Auto Login simples e funcional, se ele é útil para você, compartilhe sua gratidão com um comentário!

 

CONTRATAR INSTALAÇÃO E SUPORTE

Instalação de módulos Gofas

  • Instalação da versão mais recente ou atualização;
  • Configuração das opções disponíveis com as suas preferências;
  • Relatório de testes.

     R$100

Suporte para módulos Gofas

  • Até 1 hora de conversa com um especialista via Slack ou Skype;
  • Ajuda com dificuldades no uso de algum de nossos módulos;
  • Explicações didáticas com compartilhamento e capturas de tela.

     R$100 a primeira hora + R$75/hora adicional.

26 comentários

  1. Henrique em 15/10/2017 às 01:01

    É possível através desse sistema também criar um link autologin permanente que não seja necessário ser enviado pelo Whmcs via E-mail?

    Minha ideia é introduzir um botão de pagar fatura diretamente em meus projetos de E-commerce de meus clientes, sem que tenha a necessidade deles irem no E-mail. Claro o E-mail também iria funcionar, mais teria esse segunda opção no painel admin da Loja deles.

    • Gofas em 16/10/2017 às 15:28

      Oi Henrique!
      Sim, você pode criar ou utilizar o link já criado pelo WHMCS para enviar manualmente para o cliente, pode inclusive utilizar algum encurtador de links para enviar uma versão resumida e sem exibir o hash, a única recomendação é para que o cliente tome cuidado para ninguém mais além dele ter acesso ao link.

  2. paulo em 14/07/2017 às 17:59

    boa tarde, hoje instalei o vallid acount para envio de documentos e queria algo assim;
    criar um email para o cliente clicar e ja cair na tela de uplod dos documentos sem ter q clicar na opçao em seu perfil.
    Como iria criar este email?

    • Gofas em 15/07/2017 às 01:43

      Olá Paulo!

      Se essa página é diferente das páginas padrão de faturas e tickets da área do cliente, é necessário adaptar o módulo para reconhecer a origem do e-mail, atualmente o módulo consegue verificar os dados dos clientes a partir de e-mails referentes à faturas e tickets.

  3. Elias em 28/03/2017 às 11:08

    Olá consegui fazer mais não estou conseguindo fazer esse link virar um botão de pagar agora..

    • Gofas em 01/04/2017 às 01:20

      Oi Elias, por favor, nos envie o código que você usou para criar o botão “pagar agora” no seu template de email que eu lhe ajudo a editar o botão.

  4. Gofas em 14/03/2017 às 02:42

    Vejam a versão 2.0, o auto login foi totalmente reformulado:
    https://gofas.net/whmcs/whmcs-auto-login/

  5. Gofas em 11/02/2017 às 01:49

    Para quem ainda tiver alguma dificuldade, descobrimos novas formas de resolver incompatibilidades e criamos uma versão mais simples do módulo, que você podem conferir neste link:
    https://gofas.net/forums/topico/gofas-whmcs-autologin/

  6. Marcelo Araujo em 27/01/2017 às 02:08

    Poxa, parabens pelo trabalho, mas infelizmente no meu caso só da Hash Inválido.

    • Gofas em 27/01/2017 às 02:50

      Gratidão pelo feedback Marcelo!
      Esse módulo é bem simples de fazer funcionar, só precisa entender a estrutura do URL gerado para conferir qual informação precisa ser corrigida.

      Uma dica a conferir, o URL dinâmico deve incluir:

      – URL do WHMCS = {$whmcs_url};
      – Email do cliente = {$client_email};
      – ID do usuário = {$client_id}
      – Nome = {$client_first_name};
      – Sobrenome = {$client_last_name};
      – Hash gerado pelo hook = {$hash};
      – ID da fatura (no caso do destino ser uma fatura) = {$invoice_id};

      Resolvemos isso rápido se você publicar no fórum os 3 arquivos .php com exemplo das chaves que você usou, exemplo da tag que você inseriu no template de email e o URL gerado, este tópico trata desse assunto:
      https://gofas.net/forums/topico/gofas-whmcs-autologin/

      Nós também oferecemos o serviço de instalação por apenas R$100 😉

  7. Alexandre em 06/01/2017 às 08:21

    Uma sugestão para a linha 15 do arquivo: auth.php
    DE: die();
    PARA (dentro if): header(“Location: “.$_GET[“whmcsurl”]);
    exit;

    Desta maneira quando entrar no if na vai para uma tela em branco, o usuário é enviado para a tela de login.

    • Gofas em 06/01/2017 às 13:12

      Obrigado pela sugestão Alexandre!
      Mas tome cuidado ao editar o módulo, pois a alteração que você citou faz o contrário do correto,
      dessa forma você permite o login de hashs Inválidos e bloqueia logins de hashs Válidos.

      O laço `if (md5($_GET[‘email’].$_GET[‘uid’].$_GET[‘uname’].$secret_key) != $_GET[‘hash’]){` “traduzido” quer dizer:
      “Se a junção do email, ID, Nome, Sobrenome do cliente + a secret_key não formam um hash md5 igual ao do URL, execute a ação a seguir:”
      Então tudo o que estiver “dentro do if” é executado quando o hash é inválido.
      Por segurança, adicionamos comentários no código do arquivo auth.php nas linhas 14, 15 e 17.
      Também adicionamos uma mensagem de erro à função `die()` para não aparecer apenas a tela em branco.

      Da uma olhada nos posts do fórum desse módulo, pode ser que alguma dessas questões lhe ajude a diagnosticar e corrigir sua dificuldade.

      Por favor, nos avise se deu certo, ou não.

      • Alexandre em 06/01/2017 às 19:27

        Obrigado pela resposta Mauricio!
        Eu fiz voltei como estava o arquivo auth.php, habilitei a opção de aparecer as mensagens de erro que estaria gerando e não apareceu nada.
        Lendo o seu comentário, em vez de deixar a variável $_GET[“whmcurl”] eu coloquei uma URL fixa que é a página principal da tela de login para os meus clientes.
        Obrigado.

  8. bruno em 08/12/2016 às 12:53

    Olá exemplo no email coloco assim

    Exemplo
    Para acessar seu boleto clique no link
    {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

    Isso ?

    Porem gera o link mais tem que copiar e colar, queria que gera-se o link só clica e redireciona.

    Outra duvida copio o link e colo no navegador porem fica tela branca

    Alguem pode me ajudar?

    • Gofas em 09/12/2016 às 15:34

      Olá Bruno, bem vindo!

      Se você deseja que o URL seja adicionado como um link em uma palavra ou botão no corpo do e-mail, você precisa colocar a tag dinâmica dentro de um atributo html href, exemplo de link no email “New Invoice Created”:

      <a href="{$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}" rel="nofollow">Clique aqui para acessar a fatura</a>

  9. Fabio Ricardo em 05/12/2016 às 11:15

    Tive problemas na geração de faturas e resolvi da seguinte forma.

    no arquivo auth.php fiz a seguinte modificação:

    $nome = str_replace(” “,””,$_GET[‘uname’]);
    if (md5($_GET[‘email’].$_GET[‘uid’].$nome.$secret_key) != $_GET[‘hash’]){
    die();
    }

    Esse problema acontecia pois a url estava contando com o espaço entre nome/sobrenome e o que deixava diferente o md5.

    Espero ter ajudado que mais estava com o mesmo problema.

    • Gofas em 05/12/2016 às 14:16

      Legal, gratidão pela contribuição Fabio!
      Realmente, havia um espaço proposital entre o primeiro nome e sobrenome que da forma atual montaria um md5 diferente, removemos por que pode causar conflito em instalações instalações onde as configurações de exibição de nome do cliente são diferentes do padrão.

      Mas você pode editar apenas a tag do email para remover o espaço,
      de:
      {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name} {$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}
      para:
      {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

      Atualizamos o passo a passo acima com as tags corretas.

  10. Mauro em 04/12/2016 às 00:52

    Olá, gostaria antes de mais nada de agradecer muito obrigado por dispor de seu tempo para compartilhar este modulo com todos.
    Em segundo ponto executei todos os passos e depois revisei novamente e mais outra e nada aqui só fica uma pagina em branco, se poder ajudar em algo fico grato.

    • Gofas em 05/12/2016 às 14:18

      Oi Mauro, gratidão pelo feedback!

      Acredito que o problema pode ter o espaço entre o nome e sobrenome na tag do e-mail, como o Fabio Ricardo relatou no outro comentário, tente trocar a tag pela nova, sem o espaço entre {$client_first_name} e {$client_last_name}.

  11. Gofas em 03/12/2016 às 01:38

    Corrigimos o erro “link expirado” agora há pouco, para atualizar o autologin é necessário apenas substituir a linha 23 do arquivo gofas_hash_email.php pela nova disponível no github (https://github.com/gofas/whmcs-autologin/blob/master/includes/hooks/gofas_hash_email.php#L23).

    Esse erro acontecia especificamente em instalações do whmcs onde a exibição do nome do cliente foi configurada para exibir o nome da empresa, ao invés do nome do cliente (quando há nome da empresa no cadastro do cliente).

  12. Jose Rick em 30/11/2016 às 18:01

    O meu deu link expirado.

  13. Fábio Seabra em 24/10/2016 às 01:28

    Olá, não estou conseguindo aplicar a solução. Acho que o passo 4 está confuso, porque não existe o informado para colocação do $merge_fields[‘hash’] . A não ser no $merge_fields[‘hash’] = md5($getClientResults[‘client’][‘email’]…
    Neste caso teria que remover o = md5($getClientResults[‘client’] é isso?

    • Gofas em 24/10/2016 às 01:57

      Olá Fábio, gratidão por comentar!
      O código foi atualizado e por isso a numeração das linhas mudou, acabei de corrigir o post, tente seguir as instruções novamente.
      Dando certo ou não, nos avise por favor.

      • Fábio Seabra em 04/11/2016 às 11:37

        Olá Maurício Gofas, está funcionando perfeitamente. Olha no tutorial, passo 3 a linha descrita também tem que atualizar.

        • Gofas em 07/11/2016 às 23:06

          Legal, que bom que deu tudo certo!
          Grato pelo comentario, corrigi o trecho que citava a linha 17 do auth.php, troquei por 12 que é a linha correta.

Deixe seu Comentário

Você precisa fazer login para comentar.