package org.openiam.selfsrvc.prov; import java.util.HashMap; import java.util.List; import java.util.Date; import java.util.Map; import java.util.Set; import java.text.SimpleDateFormat; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.validation.BindException; import org.springframework.validation.Errors; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractWizardFormController; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openiam.idm.srvc.continfo.dto.Address; import org.openiam.idm.srvc.continfo.dto.ContactConstants; import org.openiam.idm.srvc.continfo.dto.EmailAddress; import org.openiam.idm.srvc.continfo.dto.Phone; import org.openiam.idm.srvc.user.dto.User; import org.openiam.idm.srvc.user.dto.UserAttribute; import org.openiam.idm.srvc.user.dto.UserStatusEnum; import org.openiam.idm.srvc.user.service.UserDataService; import org.openiam.idm.srvc.user.ws.UserDataWebService; import org.openiam.idm.srvc.user.dto.Supervisor; import org.openiam.idm.srvc.auth.dto.LoginId; import org.openiam.idm.srvc.auth.dto.Login; import org.openiam.idm.srvc.auth.login.LoginDataService; import org.openiam.idm.srvc.grp.dto.Group; import org.openiam.idm.srvc.grp.service.GroupDataService; import org.openiam.idm.srvc.grp.ws.GroupDataWebService; import org.openiam.idm.srvc.org.dto.Organization; import org.openiam.idm.srvc.org.service.OrganizationDataService; import org.openiam.idm.srvc.prov.request.dto.ProvisionRequest; import org.openiam.idm.srvc.prov.request.dto.ProvisioningConstants; import org.openiam.idm.srvc.prov.request.dto.RequestUser; import org.openiam.idm.srvc.prov.request.service.RequestDataService; import org.openiam.idm.srvc.res.dto.Resource; import org.openiam.idm.srvc.res.service.ResourceDataService; import org.openiam.idm.srvc.role.dto.Role; import org.openiam.idm.srvc.role.service.RoleDataService; import org.openiam.idm.srvc.role.ws.RoleDataWebService; import org.openiam.idm.srvc.secdomain.dto.SecurityDomain; import org.openiam.idm.srvc.loc.dto.Location; import org.openiam.idm.srvc.loc.service.LocationDataService; import org.openiam.idm.srvc.menu.dto.Menu; import org.openiam.idm.srvc.menu.service.NavigatorDataService; import org.openiam.idm.srvc.mngsys.service.ConnectorDataService; import org.openiam.idm.srvc.msg.service.MailService; import org.openiam.provision.service.ProvisionService; import org.openiam.provision.type.ExtensibleUser; import org.openiam.selfsrvc.pswd.PasswordConfiguration; import org.openiam.spml2.interf.ConnectorService; import org.openiam.spml2.msg.AddRequestType; import org.openiam.spml2.msg.ExtensibleAttribute; import org.openiam.spml2.msg.PSOIdentifierType; /** * Controller for the new hire form. * @author suneet * */ public class ChangeAccessWizardController extends AbstractWizardFormController { protected UserDataWebService userMgr; protected ResourceDataService resourceDataService; protected PasswordConfiguration configuration; protected String resourceName; private RoleDataWebService roleDataService; private GroupDataWebService groupManager; protected ProvisionService provisionService; protected OrganizationDataService orgManager; String defaultDomainId; String menuGroup; private static final Log log = LogFactory.getLog(ChangeAccessWizardController.class); public ChangeAccessWizardController() { super(); } @Override protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("MM/dd/yyyy"),true) ); } protected ModelAndView processFinish(HttpServletRequest request, HttpServletResponse response, Object command, BindException arg3) throws Exception { Map model = new HashMap(); model.put("message", "Job done!"); return new ModelAndView("pub/confirm"); } protected ModelAndView processCancel(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { Map model = new HashMap(); model.put("message", "Request to reset the password has been canceled"); return new ModelAndView("pub/cancel"); } protected void validatePage(Object command, Errors errors, int page) { log.debug("Validate page:" + page); ChangeAccessValidator validator = (ChangeAccessValidator)getValidator(); switch (page) { case 0: // validator.validateUnlockUser(command, errors); break; case 1: // validator.validateUnlockVerifyIdentity(command, errors); break; case 2: // validator.validateUnlockSetNewPassword(command, errors); break; } } @Override protected Object formBackingObject(HttpServletRequest request) throws Exception { ChangeAccessCommand command = new ChangeAccessCommand(); // get the user information HttpSession session = (HttpSession)request.getSession(); String userId = (String)session.getAttribute("userId"); User usr = userMgr.getUserWithDependent(userId, false).getUser(); command.setFirstName(usr.getFirstName()); command.setLastName( usr.getLastName() ); command.setPhoneAreaCd(usr.getAreaCd()); command.setPhoneNbr(usr.getPhoneNbr()); command.setTitle(usr.getTitle()); command.setEmail(usr.getEmail()); command.setDepartment(usr.getDeptCd()); command.setRequestorUserId(usr.getUserId()); // get the list of roles List<Resource> resourceList = resourceDataService.getResourcesByType(this.configuration.getManagedSystemType()); command.setResourceList(resourceList); return command; } protected Map referenceData(HttpServletRequest request, int page) throws Exception { switch (page) { case 0: return null; case 1: return null; case 2: return loadAppInformation(request); } return null; } protected Map loadAppInformation(HttpServletRequest request) { log.info("loadAppInformation called."); Map model = new HashMap(); List<Resource> resourceList = resourceDataService.getResourcesByType(this.configuration.getManagedSystemType()); model.put("resourceList", resourceList); List<Role> roleList = roleDataService.getAllRoles().getRoleList(); model.put("roleList", roleList); List<Group> groupList = groupManager.getAllGroups().getGroupList(); model.put("groupList", groupList); List<Organization> deptList = orgManager.allDepartments(null); model.put("deptList",deptList); return model; } public ResourceDataService getResourceDataService() { return resourceDataService; } public void setResourceDataService(ResourceDataService resourceDataService) { this.resourceDataService = resourceDataService; } public PasswordConfiguration getConfiguration() { return configuration; } public void setConfiguration(PasswordConfiguration configuration) { this.configuration = configuration; } public UserDataWebService getUserMgr() { return userMgr; } public void setUserMgr(UserDataWebService userMgr) { this.userMgr = userMgr; } public String getResourceName() { return resourceName; } public void setResourceName(String resourceName) { this.resourceName = resourceName; } public RoleDataWebService getRoleDataService() { return roleDataService; } public void setRoleDataService(RoleDataWebService roleDataService) { this.roleDataService = roleDataService; } public GroupDataWebService getGroupManager() { return groupManager; } public void setGroupManager(GroupDataWebService groupManager) { this.groupManager = groupManager; } public ProvisionService getProvisionService() { return provisionService; } public void setProvisionService(ProvisionService provisionService) { this.provisionService = provisionService; } public OrganizationDataService getOrgManager() { return orgManager; } public void setOrgManager(OrganizationDataService orgManager) { this.orgManager = orgManager; } }