package org.springframework.samples.jpetstore.web.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.beans.support.PagedListHolder;
import org.springframework.samples.jpetstore.domain.Account;
public class SignonAction extends BaseAction {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
request.getSession().removeAttribute("workingAccountForm");
request.getSession().removeAttribute("accountForm");
if (request.getParameter("signoff") != null) {
request.getSession().invalidate();
return mapping.findForward("success");
}
else {
AccountActionForm acctForm = (AccountActionForm) form;
String username = acctForm.getUsername();
String password = acctForm.getPassword();
Account account = getPetStore().getAccount(username, password);
if (account == null) {
request.setAttribute("message", "Invalid username or password. Signon failed.");
return mapping.findForward("failure");
}
else {
String forwardAction = acctForm.getForwardAction();
acctForm = new AccountActionForm();
acctForm.setForwardAction(forwardAction);
acctForm.setAccount(account);
acctForm.getAccount().setPassword(null);
PagedListHolder myList = new PagedListHolder(getPetStore().getProductListByCategory(account.getFavouriteCategoryId()));
myList.setPageSize(4);
acctForm.setMyList(myList);
request.getSession().setAttribute("accountForm", acctForm);
if (acctForm.getForwardAction() == null || acctForm.getForwardAction().length() < 1) {
return mapping.findForward("success");
}
else {
response.sendRedirect(acctForm.getForwardAction());
return null;
}
}
}
}
}