Ai galera como posso fazer uma classe para a mudança de senha (login)??
esses são as coisas que a classe deve fazer:
Este caso de uso é utilizado quando a entidade decide mudar sua senha.
- A entidade informa login, senha atual, nova senha e confirmação.
- O sistema valida os dados e grava a nova senha.
se puderem ajudar agradeço!
Devo me passear nesse codigo:
package tecnig.system.server.beans;
import javax.persistence.*;
import tecnig.system.server.*;
import tecnig.system.datastore.*;
import tecnig.system.utils.*;
import tecnig.system.xml.*;
/**
* Classe (event handler) que implementa o caso de uso de login.
*/
public final class Login {
/**
* Construtor default requerido.
*/
public Login() {
}
/**
* Processa o evento de negócio.
*/
public BusinessResult execute(BusinessEvent event) {
try {
EntityManager em = (EntityManager) ServiceLocator.lookup("EM");
// Extrai dados
XML data = (XML) event.getData();
String login = data.getAttribute("login").asString();
String senha = data.getAttribute("senha").asString();
// Valida dados
if (login == null || login.equals("")) {
throw new ValidationException("Login não informado");
}
if (senha == null || senha.equals("")) {
throw new ValidationException("Senha não informada");
}
// Persistência
Entidade entidade = (Entidade) em.createNamedQuery(
"Entidade.findByLogin")
.setParameter("login", login)
.getSingleResult();
// Avalia regras de negócio
if (! entidade.isAtivado()) {
throw new RulesetException("Login desativado");
}
if (! entidade.getSenha().equals(CryptoUtils.encrypt(senha))) {
throw new RulesetException("Senha inválida");
}
// Persistência
entidade.setUltimoLogin(TypeUtils.now());
em.merge(entidade);
// Produz resultado
XML result = new XML("entidade");
result.addAttribute("entidadeId", entidade.getEntidadeId());
result.addAttribute("nome", entidade.getNome());
result.addAttribute("nomeCompleto", entidade.getNomeCompleto());
return new BusinessResult(result);
} catch (Throwable e) {
throw new BusinessException("Erro na tentativa de login", e);
}
}
}