[RESOLVIDO] Validação de rotina para alteração de senha

Pessoal,

na minha webApp quero possibilitar a troca de senha pelo usuário.

A lógica que pretendo usar é:
os campos não podem ser vazios;
a senha atual, que é digitada pelo usuário, tem que ser igual a senha obtida pelo objeto usuário criado na sessão;
a senha nova deve ser informada em 2 campos distintos para comparação.

Fiz conforme abaixo, mas não está correto.

Alguém pode me ajudar a montar esse fluxo de controle ?

        if (senha == "" || senhaD == "" || senhaN=="" || senhaC=="") {
            out.print("A senha não pode ser vazia.");
        } else if (senha==senhaD) {
            out.print("A senha atual não confere.<br>");
        } else if ((senhaN==senhaC)) {
            out.print("A senha Nova é diferente da Reinformada.<br>");
            } else if (!dao.trocaSenha(usuario)) {
            response.sendRedirect("error.jsp");
            out.print("erro<br>");
        } else if (dao.trocaSenha(usuario)) {
            out.print("Senha alterada com sucesso !");
            response.sendRedirect("sucesso.jsp");
        }

Agradeço pela ajuda.

Em qual if ta falhando?

OBS.: comparar String com ==? :shock: :shock: :shock:

Algumas considerações:

  • Não use == para comparar igualdade de objetos (como Strings), use o método equals.
  • Você está chamando 2x o método trocaSenha… ele irá no banco mais do que o necessário.
  • Não vi em que momento você coloca a nova senha no objeto usuário
  • Utilize nome mais claros para suas variaveis: ao invés de senhaN tente novaSenha

Ficaria algo mais ou menos assim:

        if (senha.isEmpty() || senhaD.isEmpty()  || senhaN.isEmpty() || senhaC.isEmpty() ) {
            out.print("A senha não pode ser vazia.");
        } else if (!senha.equals(senhaD) ) { //aqui você estava testando igualdade, tem que testar diferença
            out.print("A senha atual não confere.<br>");
        } else if ( !senhaN.equals(senhaC) ) { // novamente, testando igualdade, tem que testar diferença
            out.print("A senha Nova é diferente da Reinformada.<br>");
        } else  {
            usuario.setSenha(senhaN);
            boolean resultadoTrocaSenha = dao.trocaSenha(usuario);

            if ( resultadoTrocaSenha  ) {
                out.print("Senha alterada com sucesso !");
                response.sendRedirect("sucesso.jsp");
            } else {
                response.sendRedirect("error.jsp");
                out.print("erro<br>");
            }

        }

[quote=AbelBueno][quote=jMarcel]

        if (senha == "" || senhaD == "" || senhaN=="" || senhaC=="") {
            out.print("A senha não pode ser vazia.");
        } else if (senha==senhaD) {
            out.print("A senha atual não confere.<br>");
        } else if ((senhaN==senhaC)) {
            out.print("A senha Nova é diferente da Reinformada.<br>");
            } else if (!dao.trocaSenha(usuario)) {
            response.sendRedirect("error.jsp");
            out.print("erro<br>");
        } else if (dao.trocaSenha(usuario)) {
            out.print("Senha alterada com sucesso !");
            response.sendRedirect("sucesso.jsp");
        }

[/quote]

Algumas considerações:

  • Não use == para comparar igualdade de objetos (como Strings), use o método equals.
  • Você está chamando 2x o método trocaSenha… ele irá no banco mais do que o necessário.
  • Não vi em que momento você coloca a nova senha no objeto usuário
  • Utilize nome mais claros para suas variaveis: ao invés de senhaN tente novaSenha

Ficaria algo mais ou menos assim:

[code]
if (senha.isEmpty() || senhaD.isEmpty() || senhaN.isEmpty() || senhaC.isEmpty() ) {
out.print(“A senha não pode ser vazia.”);
} else if (!senha.equals(senhaD) ) { //aqui você estava testando igualdade, tem que testar diferença
out.print(“A senha atual não confere.
”);
} else if ( !senhaN.equals(senhaC) ) { // novamente, testando igualdade, tem que testar diferença
out.print(“A senha Nova é diferente da Reinformada.
”);
} else {
usuario.setSenha(senhaN);
boolean resultadoTrocaSenha = dao.trocaSenha(usuario);

        if ( resultadoTrocaSenha  ) {
            out.print("Senha alterada com sucesso !");
            response.sendRedirect("sucesso.jsp");
        } else {
            response.sendRedirect("error.jsp");
            out.print("erro<br>");
        }

    }

[/code][/quote]

Obrigado por tudo !