1 19 20 package com.sslexplorer.policyframework.wizards.actions; 21 22 import java.util.ArrayList ; 23 import java.util.Calendar ; 24 import java.util.Iterator ; 25 import java.util.List ; 26 27 import javax.servlet.http.HttpServletRequest ; 28 import javax.servlet.http.HttpServletResponse ; 29 import javax.servlet.http.HttpSession ; 30 31 import org.apache.commons.logging.Log; 32 import org.apache.commons.logging.LogFactory; 33 import org.apache.struts.action.ActionForm; 34 import org.apache.struts.action.ActionForward; 35 import org.apache.struts.action.ActionMapping; 36 import org.apache.struts.util.MessageResources; 37 38 import com.sslexplorer.boot.PropertyList; 39 import com.sslexplorer.core.CoreAttributeConstants; 40 import com.sslexplorer.core.CoreEvent; 41 import com.sslexplorer.core.CoreEventConstants; 42 import com.sslexplorer.core.CoreServlet; 43 import com.sslexplorer.core.CoreUtil; 44 import com.sslexplorer.policyframework.AccessRight; 45 import com.sslexplorer.policyframework.AccessRights; 46 import com.sslexplorer.policyframework.DefaultAccessRights; 47 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 48 import com.sslexplorer.policyframework.Resource; 49 import com.sslexplorer.policyframework.forms.AbstractWizardPolicySelectionForm; 50 import com.sslexplorer.policyframework.wizards.forms.AccessRightsDetailsForm; 51 import com.sslexplorer.policyframework.wizards.forms.AccessRightsPermissionsForm; 52 import com.sslexplorer.security.LogonControllerFactory; 53 import com.sslexplorer.security.SessionInfo; 54 import com.sslexplorer.wizard.AbstractWizardSequence; 55 import com.sslexplorer.wizard.WizardActionStatus; 56 import com.sslexplorer.wizard.actions.AbstractWizardAction; 57 import com.sslexplorer.wizard.forms.AbstractWizardFinishForm; 58 59 66 public class AccessRightsFinishAction extends AbstractWizardAction { 67 final static Log log = LogFactory.getLog(AccessRightsFinishAction.class); 68 69 72 public AccessRightsFinishAction() { 73 super(); 74 } 75 76 public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 77 return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT; 78 } 79 80 public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, 81 HttpServletResponse response) throws Exception { 82 List actionStatus = new ArrayList (); 83 AbstractWizardSequence seq = getWizardSequence(request); 84 SessionInfo info = this.getSessionInfo(request); 85 String name = (String ) seq.getAttribute(AccessRightsDetailsForm.ATTR_RESOURCE_NAME, null); 86 String description = (String ) seq.getAttribute(AccessRightsDetailsForm.ATTR_RESOURCE_DESCRIPTION, null); 87 List permissions = (List ) seq.getAttribute(AccessRightsPermissionsForm.ATTR_RESOURCE_TYPE_PERMISSIONS, null); 88 String permissionClass = (String ) seq.getAttribute(AccessRightsDetailsForm.ATTR_RESOURCE_PERMISSION_CLASS, null); 89 AccessRights accessRights = null; 90 Calendar now = Calendar.getInstance(); 91 try { 92 accessRights = PolicyDatabaseFactory.getInstance().createAccessRights( 93 new DefaultAccessRights(info.getUser().getRealm().getRealmID(), 0, name, description, permissions, permissionClass, now, now)); 94 95 actionStatus.add(new WizardActionStatus(WizardActionStatus.COMPLETED_OK, 96 "accessRightsWizard.resourceFinish.status.resourceCreated")); 97 98 CoreEvent coreEvent = new CoreEvent(this, CoreEventConstants.CREATE_ACCESS_RIGHT, accessRights, info, CoreEvent.STATE_SUCCESSFUL) 99 .addAttribute(CoreAttributeConstants.EVENT_ATTR_RESOURCE_NAME, accessRights.getResourceName()) 100 .addAttribute(CoreAttributeConstants.EVENT_ATTR_RESOURCE_DESCRIPTION, accessRights.getResourceDescription()) 101 .addAttribute(CoreAttributeConstants.EVENT_ATTR_TYPE_ACCESS_RIGHT, getAccessRightType(request.getSession(), permissionClass)); 102 List permissionsList = accessRights.getAccessRights(); 103 if (permissionsList != null) { 104 int j =0; 105 for (Iterator i = permissionsList.iterator(); i.hasNext();) { 106 j++; 107 AccessRight permission = (AccessRight)i.next(); 108 109 MessageResources mrPermission = CoreUtil.getMessageResources(request.getSession(), permission.getPermission().getBundle()); 110 String permissionName = mrPermission.getMessage("permission."+permission.getPermission().getId()+".title"); 111 112 MessageResources mrResourceType = CoreUtil.getMessageResources(request.getSession(), permission.getResourceType().getBundle()); 113 String resourceTypeName = mrResourceType.getMessage("resourceType."+permission.getResourceType().getResourceTypeId()+".title"); 114 coreEvent.addAttribute(CoreAttributeConstants.EVENT_ATTR_TYPE_PERMISSION + Integer.toString(j), permissionName + " " + resourceTypeName); 115 } 116 } 117 CoreServlet.getServlet().fireCoreEvent(coreEvent); 118 119 } catch (Exception e) { 120 log.error("Failed to create delegation resource.", e); 121 CoreServlet.getServlet().fireCoreEvent(new CoreEvent(this, CoreEventConstants.CREATE_ACCESS_RIGHT, accessRights, info, CoreEvent.STATE_UNSUCCESSFUL) 122 .addAttribute(CoreAttributeConstants.EVENT_ATTR_RESOURCE_NAME, accessRights.getResourceName()) 123 .addAttribute(CoreAttributeConstants.EVENT_ATTR_RESOURCE_DESCRIPTION, accessRights.getResourceDescription()) 124 .addAttribute(CoreAttributeConstants.EVENT_ATTR_TYPE_ACCESS_RIGHT, getAccessRightType(request.getSession(), permissionClass))); 125 actionStatus.add(new WizardActionStatus(WizardActionStatus.COMPLETED_WITH_ERRORS, 126 "accessRightsWizard.resourceFinish.status.failedToCreateResource", e.getMessage())); 127 } 128 if (accessRights != null) { 129 actionStatus.add(attachToPolicies(seq, info, accessRights)); 130 } 131 ((AbstractWizardFinishForm) form).setActionStatus(actionStatus); 132 LogonControllerFactory.getInstance().applyMenuItemChanges(request); 134 return super.unspecified(mapping, form, request, response); 135 } 136 137 private static String getAccessRightType(HttpSession session, String permissionClass) { 138 MessageResources messageResources = CoreUtil.getMessageResources(session, "policyframework"); 139 String accessRightType = messageResources.getMessage("permission.type." + permissionClass); 140 return accessRightType; 141 } 142 143 151 public ActionForward exit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 152 throws Exception { 153 return cancel(mapping, form, request, response); 154 } 155 156 WizardActionStatus attachToPolicies(AbstractWizardSequence seq, SessionInfo info, Resource resource) { 157 PropertyList selectedPolicies = (PropertyList) seq.getAttribute(AbstractWizardPolicySelectionForm.ATTR_SELECTED_POLICIES, 158 null); 159 try { 160 PolicyDatabaseFactory.getInstance().attachResourceToPolicyList(resource, selectedPolicies, info); 161 return new WizardActionStatus(WizardActionStatus.COMPLETED_OK, 162 "accessRightsWizard.resourceFinish.status.attachedToPolicies"); 163 } catch (Exception e) { 164 log.error("Failed to create profile.", e); 165 return new WizardActionStatus(WizardActionStatus.COMPLETED_WITH_ERRORS, 166 "accessRightsWizard.resourceFinish.status.failedToAttachToPolicies", e.getMessage()); 167 } 168 } 169 170 } 171 | Popular Tags |