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.ArrayList; 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.openiam.base.ws.ResponseStatus; 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.mngsys.dto.AttributeMap; import org.openiam.idm.srvc.res.dto.Resource; import org.openiam.idm.srvc.res.dto.ResourceRole; import org.openiam.idm.srvc.res.dto.ResourceRoleId; import org.openiam.idm.srvc.res.service.ResourceDataService; import org.openiam.idm.srvc.role.dto.Role; import org.openiam.idm.srvc.role.dto.RoleId; import org.openiam.idm.srvc.role.dto.RolePolicy; import org.openiam.idm.srvc.role.ws.RoleDataWebService; import org.openiam.idm.srvc.role.ws.RoleListResponse; public class RolePolicyController extends SimpleFormController { protected RoleDataWebService roleDataService; protected MetadataWebService metadataService; protected String roleTypeCategory; protected String redirectView; protected ResourceDataService resourceDataService; protected NavigatorDataWebService navigationDataService; protected String menuGroup; private static final Log log = LogFactory.getLog(RolePolicyController.class); public RolePolicyController() { super(); } @Override protected Object formBackingObject(HttpServletRequest request) throws Exception { log.info("RoleResourceController - formBakingObject called."); Role role = null; RolePolicyCommand roleCommand = new RolePolicyCommand(); HttpSession session = request.getSession(); String userId = (String)session.getAttribute("userId"); String roleId = (String)session.getAttribute("roleid"); String domainId = (String)session.getAttribute("domainid"); List<Menu> level3MenuList = navigationDataService.menuGroupByUser(menuGroup, userId, "en").getMenuList(); request.setAttribute("menuL3", level3MenuList); if (roleId != null) { // used by the ui add/remove role and resource associations roleCommand.setDomainId(domainId); roleCommand.setRoleId(roleId); } request.setAttribute("menuGroup", "SECURITY_ROLE"); // get all the role policy List<RolePolicy> policyList = roleDataService.getAllRolePolicies(domainId, roleId).getRolePolicy();; if (policyList == null) { policyList = new ArrayList<RolePolicy>(); } // create a blank row so that the user can enter in a new policy RolePolicy rp = new RolePolicy(); rp.setRoleId(roleId); rp.setServiceId(domainId); rp.setName("**ENTER NAME**"); policyList.add(rp); roleCommand.setPolicyList(policyList); return roleCommand; } @Override protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { RolePolicyCommand roleCommand = (RolePolicyCommand)command; List<RolePolicy> policyList = roleCommand.getPolicyList(); String domainId = roleCommand.getDomainId(); String roleId = roleCommand.getRoleId(); // process the map String btn = request.getParameter("btn"); if (btn.equalsIgnoreCase("Delete")) { if (policyList != null) { for ( RolePolicy rp : policyList) { if (rp.getSelected()) { String id = rp.getRolePolicyId(); if (id != null && id.length() > 0) { this.roleDataService.removeRolePolicy(rp); } } } } }else { if (policyList != null) { for ( RolePolicy rp : policyList) { if (rp.getRolePolicyId() == null || rp.getRolePolicyId().length() == 0) { // new String name = rp.getName(); if (name != null && name.length() > 1 && !name.equalsIgnoreCase("**ENTER NAME**")) { rp.setRolePolicyId(null); rp.setRoleId(roleId); rp.setServiceId(domainId); roleDataService.addRolePolicy(rp); } }else { // update rp.setRoleId(roleId); rp.setServiceId(domainId); roleDataService.updateRolePolicy(rp); } } } } ModelAndView mav = new ModelAndView(getSuccessView()); return mav; } public String getRedirectView() { return redirectView; } public void setRedirectView(String redirectView) { this.redirectView = redirectView; } 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 ResourceDataService getResourceDataService() { return resourceDataService; } public void setResourceDataService(ResourceDataService resourceDataService) { this.resourceDataService = resourceDataService; } 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; } }