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;
}
}