package action; import com.opensymphony.xwork2.ActionSupport; import pojo.Register; import pojo.SiteUser; import service.RegisterService; import service.SiteUserService; import util.EmailUtil; import util.MD5Util; import java.io.Serializable; import java.sql.Timestamp; import java.util.Date; public class ForgetPasswordAction extends ActionSupport { private String email; private SiteUserService siteUserService; private RegisterService registerService; public RegisterService getRegisterService() { return registerService; } public void setRegisterService(RegisterService registerService) { this.registerService = registerService; } public SiteUserService getSiteUserService() { return siteUserService; } public void setSiteUserService(SiteUserService siteUserService) { this.siteUserService = siteUserService; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public void validate() { if (this.email == null) { this.addFieldError("email", "You must enter a valid email"); } else if (!this.email.contains("@")) { this.addFieldError("email", "Your email is invalid, we can not send you reset password email"); } } public String execute() throws Exception { SiteUser siteUser = siteUserService.getSiteUserByEmail(this.email); if (siteUser == null) return SUCCESS; if (!siteUser.getActive()) { //If user has not been activated, we don't allow reset password this.addActionError("Your account has not been activated, please activate it first"); return INPUT; } if (siteUser.getBanned()) { this.addActionError("Your account has been banned, we will not reset your password"); return INPUT; } Register register = new Register(); register.setRegisterTime(new Timestamp(new Date().getTime())); String secret = MD5Util.generateArbitraryString(32); register.setRegisterSequence(secret); Serializable id = registerService.saveRegister(register); EmailUtil.sendPasswordRestEmail("smtp.gmail.com", 465, "yumingzhe.pt@gmail.com", "YMZ7565092", siteUser.getUsername(), "admin@researchzilla", "重置密码", this.email, id, siteUser.getInstituteId().toString(), secret); return SUCCESS; } }