Bug que impossibilita a recuperação de senha via código de ativação

Quero reportar um bug da versão 9.6.005 na recuperação de senha via código de ativação. O bug está na aplicação app_change_pswd_apl.php, gerada pelo módulo de segurança. Ele impede completamente a recuperação de senha via código de ativação. O erro acontece antes do evento onValidate na aplicação controle app_change_pswd gerada pelo módulo de segurança. O passo a passo normal seria o seguinte:

  1. Usuário clica que esqueceu a senha e recebe o link contendo um código de ativação em seu email;
  2. Ao clicar no link gerado, este código de ativação é enviado pela URL via GET para a aplicação app_retrieve_pswd (não deveria ser via GET para não ficar visível na URL e também deveria ter um prazo de validade, mas isso é outra história, fica a sugestão);
  3. A aplicação app_retrieve_pswd salva o código de ativação no banco de dados, no registro do usuário (sec_users) e redireciona para a aplicação app_change_pswd passando como parâmetro a variável act_code;
  4. Ao receber esta variável no método onLoad da app_change_pswd, ela oculta o campo {old_pswd} com o método sc_field_display. É aqui que acontece o início do problema.
  5. A partir daqui, o usuário deveria apenas entrar com a nova senha e confirmar, mas não importa o que ele faça, acertando ou errando, colocando senhas que cumpram os requisitos ou colocando senhas diferentes entre os campos {pswd} e {confirm_pswd}, que o bug que está na rotina da app_change_pswd_apl.php entrará antes do evento onValidate com uma mensagem: “Senha antiga: exige um mínimo de [x] caracteres.” O [x] depende de quantos caracteres o usuário configurou como mínimo no módulo de segurança, tipo 6, 8, tanto faz. E dai o usuário não tem como gerar uma nova senha, não importa o que ele faça.

No modo debug o script é interrompido na linha 1130 da app_change_pswd_apl.php. Mas o erro acontece na function Valida_campos ou mais especificamente na function ValidateField_old_pswd que não aceita o campo {old_pswd} como vazio, embora ele tenha sido ocultado (display off) pelo evento onLoad da própria aplicação, porque não tem sentido mesmo, já que a recuperação de senha, ou melhor, a geração de nova senha é feita via código de ativação e não pela senha antiga, que não deve participar mesmo.

A confirmação de que o problema é esse foi feita da seguinte forma. Eu comentei a linha no onLoad que oculta o campo {old_pswd} deixando ele visível e colocando uma senha qualquer maior que o número mínimo de caracteres. Somente assim ele deixa o usuário gerar uma nova senha.
O bug é facilmente recriado em modo de desenvolvimento. Basta executar a aplicação app_change_pswd (sem alterar em nada o código gerado pela aplicação, deixando o campo {old_pswd} oculto mesmo) e entrar com um código de ativação qualquer (não importa qual, porque o bug irá interceptar a rotina antes da validação) e um usuário qualquer. Daí entre com uma senha valida e confirme com a mesma senha. A mensagem de erro do número mínimo de caracteres no campo senha antiga irá aparecer impedindo o usuário de prosseguir. Depois entre com uma senha válida e erre propositalmente a confirmação de senha com uma senha diferente. Ele deveria interceptar o erro com uma mensagem diferente pela rotina que está no evento onValidate, mas o bug intercepta antes do evento e reclama que o campo Senha Antiga {oldpswd} que está oculto, está com menos do que o mínimo de caracteres exigido.
Um bug pelo jeito muito antigo, pelo que vi no fórum aqui, de 2011 a 2016, que ficou sem resolução, pode ter sido corrigido em algum momento, mas voltou agora com certeza.
Esse bug gera um transtorno imenso para os desenvolvedores e usuários e precisa ser corrigido imediatamente. A única maneira de alterar uma senha que o usuário esqueceu agora é deletando o usuário do banco de dados e recriando um via aplicação, com uma nova senha.

3 Curtidas

Netmake resposta ajuda, help, que falta ?

1 Curtida

Boa tarde pessoal…
alguma novidade sobre este tópico? estou com a mesma dificuldade e já revirei o fórum…
preciso especificamente com essa opção de link gerado para emissão de nova senha…

1 Curtida

Ainda não houve resposta ou solução de contorno para esse problema?

2 Curtidas

Já vai para 2 anos e nada de solução, lançam versão (9.8) e o problema continua.

1 Curtida

Já enviou para feedback@netmake.com.br e bugs@netmake.com.br

1 Curtida

Bom dia Alexandre,
Não sei se enviaram, com já faz quase 2 anos acredito que sim.
Para contornar o BUG copiei a aplicação " app_change_pswd" para " app_change_pswd_email", esta copia removi o campo “old_pswd” removi em “OnValidate” onde se referenciava as “old_pswd”.
E por fim no aplicativo " app_retrieve_pswd" em " onScriptInit" troquei o sc_redir para “app_change_pswd_email”.
Não modifiquei direto a aplicação “app_change_pswd” pois ela é usada para alterar senha quando estamos logados.

Espero que ajude quem esta passando pelo mesmo problema.

2 Curtidas

Obrigado pelo retorno

1 Curtida