package gr.ntua.ivml.athena.actions; import gr.ntua.ivml.athena.db.DB; import gr.ntua.ivml.athena.persistent.Organization; import gr.ntua.ivml.athena.persistent.User; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.InterceptorRef; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.apache.struts2.dispatcher.ServletActionRedirectResult; import org.apache.struts2.interceptor.SessionAware; @Results({ @Result(name="input", location="login.jsp"), @Result(name="error", location="login.jsp"), @Result(name="success", location="Home.action", type="redirectAction" ) }) public class Login extends GeneralAction implements SessionAware{ protected final Logger log = Logger.getLogger(getClass()); private String username; private Map session; @Action(value="Login",interceptorRefs=@InterceptorRef("defaultStack")) public String execute() throws Exception { User user; if( username== null || username.length()==0) { addFieldError("username", "Username is required"); } if( password== null || password.length()==0) { addFieldError("password","Password is required"); } if(!getFieldErrors().isEmpty()){ return ERROR; } user=DB.getUserDAO().getByLoginPassword(getUsername(),getPassword()); if(user!=null){ if(!user.isAccountActive()){ addActionError("account is no longer active"); return ERROR; } else if(user.getPasswordExpires()!=null && user.getPasswordExpires().getTime()<(new Date().getTime())){ addActionError("your password has expired"); return ERROR; } else{ log.debug( "Login successful for user:"+user.getLogin() ); user.getJobRole(); getSession().put("user", user); } } else { addActionError("wrong login/password combination"); return ERROR; } return SUCCESS; } @Override @Action(value="Login_input",interceptorRefs=@InterceptorRef("defaultStack")) public String input() throws Exception { return super.input(); } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public void setSession(Map session) { this.session = session; } public Map getSession() { return session; } }