Bom dia pessoal, gostaria da ajuda de vocês mais uma vez.
Estou desenvolvendo um sistema com Primefaces 5.0 e até agora ia tudo bem, mas, me deparei com a necessidade de criar uma maneira do usuário alterar a sua própria senha.
O usuário, quando cadastrado, recebe uma senha “padrão” do sistema, aí o gestor informa o login e a senha para ele que, ao acessar pela primeira vez, recebe um Dialog em ‘modal’ para alterar a senha.
Outro caso de alteração seria por necessidade, caso o usuário ‘desconfie’ que alguém tenha utilizado a sua senha, etc…
O que eu tenho até então:
Quando o usuário loga no sistema, junto do login, eu retorno o usuário inteiro, não faço somente a verificação, recupero todos os dados do usuário na sessão.
LoginBean:
public String efetuaLogin() throws NoSuchAlgorithmException {
usuario.setSenha(Criptografia.criptografar(usuario.getSenha()));
Usuario perfilUsuario = dao.existe(this.usuario);
if (perfilUsuario != null) {
this.usuario = perfilUsuario;
usuarioLogado.logar(usuario);
// eventoLogin.fire(usuario);
FacesContext.getCurrentInstance().addMessage("LOGIN",
new FacesMessage(FacesMessage.SEVERITY_INFO, "Bem vindo ", usuario.getUsuarioNome()));
return "index?faces-redirect=true";
} else {
usuarioLogado.deslogar();
this.usuario = new Usuario();
FacesContext.getCurrentInstance().addMessage("LOGIN",
new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO DE LOGIN", "Usuário ou senha inválidos"));
return "login";
}
}
E aí no meu _template.xhtml eu coloquei o Dialog. Por que no _template.xhtml? Porque eu criei um ‘botão’ para ele no Menu ( megaMenu ), então, por questão de praticidade, ele está ali…
só o Dialog
<p:dialog widgetVar=“alteraSenha” header=“Alterar Senha"
visible=”#{usuarioLogadoBean.usuario.senha eq ‘altereiÉclaro’ ? ‘true’ : ‘false’}“
rendered=“true” appendTo=”@(body)" draggable=“false” modal="true"
resizable=“false” style=“width: 230px; height: 300px;”>
<h:form
style="width: 230px; height: 190px; margin-left: 1%; margin-right: 1px; padding-top: 5px;">
<p:growl id="msgs" showDetail="true" />
<div class="ui-g-12" style="padding-bottom: 10%">
<p:password id="nova" match="confirma"
validatorMessage="As senhas precisam ser iguais" required="true"
requiredMessage="Informe a nova senha" placeholder="Nova senha"
style="text-align:center; height: 25px;" />
</div>
<div class="ui-g-12" style="padding-bottom: 10%">
<p:password id="confirma" match="confirma"
value="#{usuarioBean.usuario.senha}" required="true"
requiredMessage="Confirme a nova senha"
placeholder="Confirmar senha"
style="text-align:center; height: 25px;" />
</div>
<p:separator />
<div class="ui-g12" style="padding-top: 10%;">
<h:commandButton value="Alterar" action="#{usuarioBean.grava()}"
ajax="false" />
</div>
</h:form>
</p:dialog>
O problema: não sei como passar os dados do usuário logado para o método que grava.
Vi um post que falava sobre “Adicionar e Recuperar” dados do usuário na sessão ( JSF ), mas, confesso que não entendi 'como eu devo fazer, ou aonde devo fazer isto"…
Este é o post: https://jbossdivers.wordpress.com/2011/09/12/adicionando-e-recuperando-objetos-de-sessao-no-jsf/
Eu agradeço muito pela ajuda.
Abraço!