package org.openiam.webadmin.role; /* * Copyright 2009, OpenIAM LLC * This file is part of the OpenIAM Identity and Access Management Suite * * OpenIAM Identity and Access Management Suite is free software: * you can redistribute it and/or modify * it under the terms of the Lesser GNU General Public License * version 3 as published by the Free Software Foundation. * * OpenIAM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Lesser GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenIAM. If not, see <http://www.gnu.org/licenses/>. * */ import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.view.RedirectView; import org.openiam.webadmin.util.AuditHelper; import org.openiam.idm.srvc.menu.dto.Menu; import org.openiam.idm.srvc.menu.ws.NavigatorDataWebService; import org.openiam.idm.srvc.meta.ws.MetadataWebService; import org.openiam.idm.srvc.role.dto.Role; import org.openiam.idm.srvc.role.dto.RoleId; import org.openiam.idm.srvc.role.ws.RoleDataWebService; import org.openiam.base.ws.Response; import org.openiam.base.ws.ResponseStatus; public class RoleDetailController extends SimpleFormController { protected RoleDataWebService roleDataService; protected MetadataWebService metadataService; protected String roleTypeCategory; protected String redirectView; protected AuditHelper auditHelper; protected NavigatorDataWebService navigationDataService; protected String menuGroup; private static final Log log = LogFactory.getLog(RoleDetailController.class); @Override protected Object formBackingObject(HttpServletRequest request) throws Exception { Role role = null; RoleDetailCommand roleCommand = new RoleDetailCommand(); roleCommand.setTypeList( metadataService.getTypesInCategory(roleTypeCategory).getMetadataTypeAry() ); HttpSession session = request.getSession(); String userId = (String)session.getAttribute("userId"); String roleId = request.getParameter("roleid"); String domainId = request.getParameter("domainid"); String mode = request.getParameter("md"); if (mode != null && mode.equalsIgnoreCase("NEW")) { request.setAttribute("md", mode); session.removeAttribute("roleid"); session.setAttribute("domainid", domainId); }else { if (roleId != null && domainId != null) { session.setAttribute("roleid", roleId); session.setAttribute("domainid", domainId); }else { roleId = (String)session.getAttribute("roleid"); domainId = (String)session.getAttribute("domainid"); } } List<Menu> level3MenuList = navigationDataService.menuGroupByUser(menuGroup, userId, "en").getMenuList(); request.setAttribute("menuL3", level3MenuList); if ( roleId != null) { role = roleDataService.getRole(domainId, roleId).getRole(); roleCommand.setMode("UPDATE"); System.out.println(" - Viewing exisisting role=" + role); roleCommand.setRole(role); }else if (mode != null && mode.equalsIgnoreCase("NEW")) { role = new Role(); RoleId id = new RoleId(); id.setServiceId(domainId); role.setId(id); roleCommand.setMode("NEW"); roleCommand.setRole(role); } request.setAttribute("menuGroup", "SECURITY_ROLE"); return roleCommand; } public String getRedirectView() { return redirectView; } public void setRedirectView(String redirectView) { this.redirectView = redirectView; } public RoleDetailController() { super(); } @Override protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { RoleDetailCommand roleCommand = (RoleDetailCommand)command; String userId = (String)request.getSession().getAttribute("userId"); String domainId = (String)request.getSession().getAttribute("domainid"); String login = (String)request.getSession().getAttribute("login"); Role role = roleCommand.getRole(); prepareObject(role); String btn = request.getParameter("btn"); if (btn != null && btn.equalsIgnoreCase("Delete")) { Response resp = roleDataService.removeRole(role.getId().getServiceId(), role.getId().getRoleId()); auditHelper.addLog("DELETE", domainId, login, "WEBCONSOLE", userId, "0", "ROLE", role.getId().getRoleId(), null, "SUCCESS", null, null, null, null, null, role.getId().getServiceId() + "-" + role.getId().getRoleId(), request.getRemoteHost()); return new ModelAndView(new RedirectView(redirectView, true)); } if (roleDataService.getRole(role.getId().getServiceId(), role.getId().getRoleId()) != null ) { // update roleDataService.updateRole(role); if (roleCommand.getMode().equalsIgnoreCase("NEW")) { auditHelper.addLog("CREATE", domainId, login, "WEBCONSOLE", userId, "0", "ROLE", role.getId().getRoleId(), null, "SUCCESS", null, null, null, null, null, role.getId().getServiceId() + "-" + role.getId().getRoleId(), request.getRemoteHost()); }else { auditHelper.addLog("MODIFY", domainId, login, "WEBCONSOLE", userId, "0", "ROLE", role.getId().getRoleId(), null, "SUCCESS", null, null, null, null, null, role.getId().getServiceId() + "-" + role.getId().getRoleId(), request.getRemoteHost()); } }else { // new role.setCreateDate(new Date(System.currentTimeMillis())); role.setCreatedBy(userId); roleDataService.addRole(role); auditHelper.addLog("CREATE", domainId, login, "WEBCONSOLE", userId, "0", "ROLE", role.getId().getRoleId(), null, "SUCCESS", null, null, null, null, null, role.getId().getServiceId() + "-" + role.getId().getRoleId(), request.getRemoteHost()); } request.getSession().removeAttribute("roleid"); request.getSession().removeAttribute("domainid"); return new ModelAndView(new RedirectView(redirectView, true)); } private void prepareObject(Role r) { if (r.getMetadataTypeId().equals("")) { r.setMetadataTypeId(null); } if (r.getStatus().equals("")) { r.setStatus(null); } } public String getRoleTypeCategory() { return roleTypeCategory; } public void setRoleTypeCategory(String roleTypeCategory) { this.roleTypeCategory = roleTypeCategory; } public RoleDataWebService getRoleDataService() { return roleDataService; } public void setRoleDataService(RoleDataWebService roleDataService) { this.roleDataService = roleDataService; } public AuditHelper getAuditHelper() { return auditHelper; } public void setAuditHelper(AuditHelper auditHelper) { this.auditHelper = auditHelper; } public MetadataWebService getMetadataService() { return metadataService; } public void setMetadataService(MetadataWebService metadataService) { this.metadataService = metadataService; } public NavigatorDataWebService getNavigationDataService() { return navigationDataService; } public void setNavigationDataService( NavigatorDataWebService navigationDataService) { this.navigationDataService = navigationDataService; } public String getMenuGroup() { return menuGroup; } public void setMenuGroup(String menuGroup) { this.menuGroup = menuGroup; } }