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.
--------------------//--------------------
Com 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.php
vai 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
Deixe um Comentário
Você precisa fazer login para publicar um comentário.
É 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.
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.
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?
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.
Olá consegui fazer mais não estou conseguindo fazer esse link virar um botão de pagar agora..
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.
Vejam a versão 2.0, o auto login foi totalmente reformulado:
https://gofas.net/whmcs/whmcs-auto-login/
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/
Poxa, parabens pelo trabalho, mas infelizmente no meu caso só da Hash Inválido.
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 ;)
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.
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.
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.
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?
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>
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.
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.
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.
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}.
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).
O meu deu link expirado.
Bem vindo José!
Todos os pedidos de suporte agora são respondidos apenas no fórum, publique sua questão lá que logo mais eu lhe respondo:
https://gofas.net/forums/forum/whmcs/gofas-whmcs-autologin/
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?
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.
Olá Maurício Gofas, está funcionando perfeitamente. Olha no tutorial, passo 3 a linha descrita também tem que atualizar.
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.