package action.cliente; import com.opensymphony.xwork2.ActionSupport; import dao.ClienteDAO; import dao.UsuarioDAO; import java.util.Map; import model.Cliente; import model.Usuario; import util.BCrypt; import org.apache.struts2.interceptor.SessionAware; import org.apache.struts2.interceptor.RequestAware; import org.bson.types.ObjectId; public class CambioPasswordAction extends ActionSupport implements RequestAware, SessionAware { /* Session */ private Map session; private Map<String, Object> request; /* Acceso a Datos*/ UsuarioDAO usuarioDAO; ClienteDAO clienteDAO; private String mensaje; private String oldPass, newPass1, newPass2, id; public String getOldPass() { return oldPass; } public void setOldPass(String oldPass) { this.oldPass = oldPass; } public String getNewPass1() { return newPass1; } public void setNewPass1(String newPass1) { this.newPass1 = newPass1; } public String getNewPass2() { return newPass2; } public void setNewPass2(String newPass2) { this.newPass2 = newPass2; } public String getId() { return id; } public void setId(String id) { this.id = id; } public CambioPasswordAction() { usuarioDAO = new UsuarioDAO(); clienteDAO = new ClienteDAO(); } public String execute() { System.out.println("-----------------"); System.out.println(oldPass); System.out.println(newPass1); System.out.println(newPass2); System.out.println("ID" + id); System.out.println("---------------"); session = getSession(); Usuario user = (Usuario) session.get("user"); // String hashedpw = BCrypt.hashpw(password, BCrypt.gensalt(12)); // cliente.setPassword(hashedpw); // boolean validate = BCrypt.checkpw(oldPass, user.getPassword()); //String actualPass = user.getPassword(); boolean validate = BCrypt.checkpw(oldPass, user.getPassword()); //String encodedOldPass = (StringMD.getStringMessageDigest(oldPass, StringMD.MD5)); String encodedOldPass = BCrypt.hashpw(oldPass, BCrypt.gensalt(12)); if (validate) { //actualPass igual al oldPass introducido //if (validate) { System.out.println("Sabe antiguo pass"); if (newPass1.equals(newPass2)) { //comprobacion nuevo pass iguales System.out.println("Guarda USER"); ObjectId oid = new ObjectId(id); Cliente cli = clienteDAO.find(oid); String hashedpw = BCrypt.hashpw(newPass1, BCrypt.gensalt(12)); cli.setPassword(hashedpw); //cli.setPassword((StringMD.getStringMessageDigest(newPass1, StringMD.MD5))); clienteDAO.save(cli); session.put("user", cli); } else { System.out.println("Error no corresponde nueva contraseƱa"); } } else { System.out.println("No corresponde con pass actual"); } /* ObjectId oid=new ObjectId(id); // Usuario us = usuarioDAO.find(oid); Cliente cli = clienteDAO.find(oid); // us.setUsername(user); // us.setEmail(email); cli.setUsername(user); cli.setNombre(nombre); cli.setApellido(apellido); cli.setEmail(email); clienteDAO.save(cli); // usuarioDAO.save(us); session=getSession(); session.put("user", cli); */ return "SUCCESS"; } public String getMensaje() { return mensaje; } public void setMensaje(String mensaje) { this.mensaje = mensaje; } @Override public void setSession(Map session) { this.session = session; } public Map getSession() { return session; } @Override public void setRequest(Map<String, Object> map) { this.request = map; } public Map getRequest() { return request; } }