package org.openiam.webadmin.login; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.openiam.idm.srvc.menu.dto.Menu; import org.openiam.idm.srvc.menu.ws.NavigatorDataWebService; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class LoginController extends SimpleFormController { private static final Log log = LogFactory.getLog(LoginController.class); protected String rootMenu; protected NavigatorDataWebService navigationDataService; public LoginController() { super(); } @Override protected Object formBackingObject(HttpServletRequest request) throws Exception { LoginCommand loginCmd = new LoginCommand(); loginCmd.setClientIP( request.getRemoteHost()); return loginCmd; } @Override protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { log.debug("onSubmit called."); System.out.println("onSubmit called."); LoginCommand loginCmd = (LoginCommand)command; HttpSession session = request.getSession(); session.setAttribute("userId", loginCmd.getSubject().getUserId()); session.setAttribute("token", loginCmd.getSubject().getSsoToken().getToken()); session.setAttribute("login", loginCmd.getSubject().getPrincipal()); session.setAttribute("domainId", loginCmd.getDomainId()); // get the menus that the user has permissions too List<Menu> menuList = navigationDataService.menuGroupByUser(rootMenu, loginCmd.getSubject().getUserId(), "en").getMenuList(); session.setAttribute("permissions", menuList); // load the objects that are needed in the primary application ModelAndView mav = new ModelAndView(getSuccessView()); mav.addObject("loginCmd", command); mav.addObject("subject", loginCmd.getSubject()); return mav; } public String getRootMenu() { return rootMenu; } public void setRootMenu(String rootMenu) { this.rootMenu = rootMenu; } public NavigatorDataWebService getNavigationDataService() { return navigationDataService; } public void setNavigationDataService( NavigatorDataWebService navigationDataService) { this.navigationDataService = navigationDataService; } @Override protected Map referenceData(HttpServletRequest request) throws Exception { String expire = request.getParameter("expire"); if (expire != null && expire.equalsIgnoreCase("1")) { request.setAttribute("message", "Session has expired. Please login in again."); } return super.referenceData(request); } }