1 19 20 package com.sslexplorer.policyframework.wizards.actions; 21 22 import java.util.ArrayList ; 23 import java.util.Iterator ; 24 import java.util.List ; 25 26 import javax.servlet.http.HttpServletRequest ; 27 import javax.servlet.http.HttpServletResponse ; 28 29 import org.apache.commons.logging.Log; 30 import org.apache.commons.logging.LogFactory; 31 import org.apache.struts.action.ActionForm; 32 import org.apache.struts.action.ActionForward; 33 import org.apache.struts.action.ActionMapping; 34 35 import com.sslexplorer.boot.PropertyList; 36 import com.sslexplorer.core.CoreAttributeConstants; 37 import com.sslexplorer.core.CoreEvent; 38 import com.sslexplorer.core.CoreEventConstants; 39 import com.sslexplorer.core.CoreServlet; 40 import com.sslexplorer.core.UserDatabaseManager; 41 import com.sslexplorer.policyframework.Policy; 42 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 43 import com.sslexplorer.policyframework.ResourceChangeEvent; 44 import com.sslexplorer.policyframework.wizards.forms.PolicyDetailsForm; 45 import com.sslexplorer.policyframework.wizards.forms.PolicyPrincipalSelectionForm; 46 import com.sslexplorer.security.LogonControllerFactory; 47 import com.sslexplorer.security.Role; 48 import com.sslexplorer.security.SessionInfo; 49 import com.sslexplorer.security.User; 50 import com.sslexplorer.security.UserDatabase; 51 import com.sslexplorer.wizard.AbstractWizardSequence; 52 import com.sslexplorer.wizard.WizardActionStatus; 53 import com.sslexplorer.wizard.actions.AbstractWizardAction; 54 import com.sslexplorer.wizard.forms.AbstractWizardFinishForm; 55 56 63 public class PolicyFinishAction extends AbstractWizardAction { 64 final static Log log = LogFactory.getLog(PolicyFinishAction.class); 65 66 69 public PolicyFinishAction() { 70 super(); 71 } 72 73 public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 74 return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT; 75 } 76 77 public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, 78 HttpServletResponse response) throws Exception { 79 List <WizardActionStatus> actionStatus = new ArrayList <WizardActionStatus>(); 81 AbstractWizardSequence seq = getWizardSequence(request); 82 String policyName = (String ) seq.getAttribute(PolicyDetailsForm.ATTR_RESOURCE_NAME, null); 83 String policyDescription = (String ) seq.getAttribute(PolicyDetailsForm.ATTR_RESOURCE_DESCRIPTION, null); 84 try { 85 Policy pol =PolicyDatabaseFactory.getInstance().createPolicy(policyName, policyDescription, Policy.TYPE_NORMAL, getSessionInfo(request).getUser().getRealm().getRealmID()); 86 87 actionStatus.add(new WizardActionStatus(WizardActionStatus.COMPLETED_OK, 88 "policyWizard.policyFinish.status.policyCreated")); 89 90 CoreEvent coreEvent = new ResourceChangeEvent(this, CoreEventConstants.CREATE_POLICY, pol, getSessionInfo(request), 91 CoreEvent.STATE_SUCCESSFUL); 92 CoreServlet.getServlet().fireCoreEvent(coreEvent); 93 94 try { 95 UserDatabase udb = UserDatabaseManager.getInstance().getUserDatabase(LogonControllerFactory.getInstance().getSessionInfo(request).getUser().getRealm()); 96 for (Iterator i = ((PropertyList) seq.getAttribute(PolicyPrincipalSelectionForm.ATTR_SELECTED_ACCOUNTS, null)) 97 .iterator(); i.hasNext();) { 98 User user = udb.getAccount((String ) i.next()); 99 PolicyDatabaseFactory.getInstance().grantPolicyToPrincipal(pol, 100 user); 101 CoreServlet.getServlet().fireCoreEvent(new CoreEvent(this, CoreEventConstants.GRANT_POLICY_TO_PRINCIPAL, pol, getSessionInfo(request), 102 CoreEvent.STATE_SUCCESSFUL).addAttribute(CoreAttributeConstants.EVENT_ATTR_PRINCIPAL_TYPE, "user").addAttribute( 103 CoreAttributeConstants.EVENT_ATTR_POLICY_NAME, 104 pol.getResourceName()).addAttribute(CoreAttributeConstants.EVENT_ATTR_PRINCIPAL_ID, user.getPrincipalName())); 105 } 106 for (Iterator i = ((PropertyList) seq.getAttribute(PolicyPrincipalSelectionForm.ATTR_SELECTED_ROLES, null)) 107 .iterator(); i.hasNext();) { 108 Role role = udb.getRole((String ) i.next()); 109 PolicyDatabaseFactory.getInstance().grantPolicyToPrincipal(pol, 110 role); 111 112 CoreServlet.getServlet().fireCoreEvent(new CoreEvent(this, CoreEventConstants.GRANT_POLICY_TO_PRINCIPAL, pol, getSessionInfo(request), 113 CoreEvent.STATE_SUCCESSFUL).addAttribute(CoreAttributeConstants.EVENT_ATTR_PRINCIPAL_TYPE, "group").addAttribute( 114 CoreAttributeConstants.EVENT_ATTR_POLICY_NAME, 115 pol.getResourceName()).addAttribute(CoreAttributeConstants.EVENT_ATTR_PRINCIPAL_ID, role.getPrincipalName())); 116 } 117 actionStatus.add(new WizardActionStatus(WizardActionStatus.COMPLETED_OK, 118 "policyWizard.policyFinish.status.grantedToPrincipals")); 119 } catch (Exception e) { 120 log.error("Failed to grant principals to policy.", e); 121 actionStatus.add(new WizardActionStatus(WizardActionStatus.COMPLETED_WITH_ERRORS, 122 "policyWizard.policyFinish.status.failedToGrantToPrincipals", e.getMessage())); 123 CoreServlet.getServlet().fireCoreEvent(new CoreEvent(this, CoreEventConstants.GRANT_POLICY_TO_PRINCIPAL, null, getSessionInfo(request), e)); 124 } 125 } catch (Exception e) { 126 log.error("Failed to create policy.", e); 127 actionStatus.add(new WizardActionStatus(WizardActionStatus.COMPLETED_WITH_ERRORS, 128 "policyWizard.policyFinish.status.failedToCreatePolicy", e.getMessage())); 129 CoreServlet.getServlet().fireCoreEvent(new ResourceChangeEvent(this, CoreEventConstants.CREATE_POLICY, getSessionInfo(request), e)); 130 } 131 ((AbstractWizardFinishForm) form).setActionStatus(actionStatus); 132 return super.unspecified(mapping, form, request, response); 133 } 134 135 143 public ActionForward exit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 144 throws Exception { 145 return cancel(mapping, form, request, response); 146 } 147 } 148 | Popular Tags |