Na página HTML, possuo um formulário para o usuário alterar sua senha. Um dos campos do formulário é para ele inserir sua senha atual. No momento que ele insere sua senha atual e sai do campo (onblur), é chamada uma função JS que faz uma requisição ao Controller do Spring para verificar se a senha que o usuário digitou corresponde à sua senha atual. O problema é que eu não sei como passar o parâmetro senha para o Controller.
Estou tentando isso:
JavaScript
function buscarSenhaBD() {
var senha = $(’#senhaatual’).val();
if (senha !== null && senha !== undefined) {
var url = ‘/web/anunciante/validar-senha’;
$.post(url, {vals: senha}, function (dataReturn) {
if (dataReturn === true) {
$(“form #senhaatual”).css({“border-color”: “green”});
$(“form #btn-salvar”).prop(“disabled”, false);
$(“form #btn-salvar”).removeClass(“grey”);
} else {
Materialize.toast(‘Esta senha não corresponde à sua senha atual!’, 4000, ‘green rounded toast’);
$(“form #senhaatual”).css({“border-color”: “red”});
$(“form #btn-salvar”).prop(“disabled”, true);
$(“form #btn-salvar”).addClass(“grey”);
}
});
}
}
Eu não conheço o Spring, nem esse comando Controller, primeira vez que eu ouço falar deles, e com jQuery pior ainda…deve ser um algum framework!
Não sei qual o seu nível da linguagem JavaScript, mas tipo, tem como fazer usando PHP e Ajax (Técnica do JavaScript bem simples na minha opinião), quando der Onblur, o Javascript(Ajax) manda um POST com o nome do usuário e a senha digitada para uma página PHP, nesse script PHP você poderia tratar os dados do POST assim: Seleciona a senha dele no banco de dados pelo nome de usuário obviamente, que veio do POST, e depois transformar o POST da senha que ele digitou para MD5 e comparar as duas com um If…
if ($db_senha == $senha_post) {
echo “senha_ok”
}else {
senha_errada
}
Ai você pegaria essa string mostrada do “echo” com o reponseText do Ajax lá no JavaScript e comparava da mesma maneira (o ReponseText pega o retorno do php).
If(responseText == “senha_ok”) {
Você poderia por a mensagem, A senha corresponde, ou mudar a com do input para verde, fica da sua preferência)
}else {
Colocaria borda do input para vermelho talvez, e uma mensagem, Sua senha atual não corresponde,
}
Pronto, senha verificada sem Refresh e sem perder dados digitados com Ajax
Tem que saber um “pouquinho” de JavaScript e Ajax, tenho certeza que da para fazer com jQuery, não uso, mas o raciocínio deve ser o mesmo…
Agora o ideal mesmo se você é iniciante, estudar muito JavaScript de deixar jQuery para depois, porque o jQuery é o JavaScript com outra cara, tem que saber Js para dominar melhor o JQuery
Espero ter ajudado ou de alguma maneira ter dado outra ideia pra você fazer seu Script…Valeu
Bom, primeiramente obrigado pela resposta!!
Acabei fazendo de outra maneira, pelo fato de não ter muito conhecimento com JS, estava meio que indo por tentativa e erro.
O que fiz foi apenas fazer uma validação com JS puro para verificar se os campos “nova-senha” e “confirmar-senha” estavam iguais, assim é possível que o usuário submeta o formulário. E para garantir que o texto digitado no campo “senha-atual” corresponde a senha do usuário no BD, fiz a validação no próprio Java, após o usuário submeter o formulário. Caso a senha não está OK, acontece o redirecionamento pro formulário novamente com o aviso de que a senha não está correta, assim o usuário pode preencher o formulário novamente e submetê-lo com os dados corretos.