package action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import pojo.Register;
import pojo.SiteUser;
import service.RegisterService;
import service.SiteUserService;
import java.sql.Timestamp;
import java.util.Date;
/**
* User: yumingzhe
* Date: 5/21/12
* Time: 11:35 AM
*/
public class AccountConfirm extends ActionSupport {
private String uid;
private String secret;
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 getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
@Override
public String execute() throws Exception {
SiteUser siteUser = siteUserService.getSiteUserByUID(Integer.parseInt(uid));
if (siteUser == null) {
this.addActionError("We can not activate your account because of the wrong activate link");
return INPUT;
}
if (siteUser.getActive()) {
this.addActionError("The user whose uid is " + uid + " has been activated before");
return INPUT;
}
Register register = registerService.getRegisterBySequence(secret);
if (register == null) {
this.addActionError("The activate link is invalid");
return INPUT;
}
if (!register.getSiteUser().getUid().toString().equals(uid)) {
this.addActionError("The activate link is unmatched with the user, we can not activate you");
return INPUT;
}
String registerEmailTTL = (String) ServletActionContext.getServletContext().getAttribute("registerEmailTTL");
if (registerEmailTTL == null) {
registerEmailTTL = "24";
}
int ttl = Integer.parseInt(registerEmailTTL);
//email validate timeout
if (register.getRegisterTime().before(new Timestamp(new Date().getTime() - ttl * 1000 * 60 * 60))) {
this.addActionError("Your validate email has expired, we can not activate your account");
return ERROR;
}
siteUser.setActive(true);
siteUserService.updateSiteUser(siteUser);
//registerService.deleteAllRegistersByUID(siteUser.getUid());
return SUCCESS;
}
}