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.struts.action.ActionForm; 30 import org.apache.struts.action.ActionForward; 31 import org.apache.struts.action.ActionMapping; 32 33 import com.sslexplorer.core.CoreUtil; 34 import com.sslexplorer.policyframework.AccessRight; 35 import com.sslexplorer.policyframework.Permission; 36 import com.sslexplorer.policyframework.wizards.forms.AccessRightsPermissionsForm; 37 import com.sslexplorer.security.SessionInfo; 38 import com.sslexplorer.wizard.AbstractWizardSequence; 39 import com.sslexplorer.wizard.actions.AbstractWizardAction; 40 import com.sslexplorer.wizard.forms.AbstractWizardForm; 41 42 49 public class AccessRightsPermissionsAction extends AbstractWizardAction { 50 51 54 public AccessRightsPermissionsAction() { 55 super(); 56 } 57 58 66 public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 67 return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT; 68 } 69 70 78 public ActionForward selectResourceType(ActionMapping mapping, ActionForm form, HttpServletRequest request, 79 HttpServletResponse response) throws Exception { 80 applyToSequence(mapping, (AbstractWizardForm) form, request, response); 81 return unspecified(mapping, form, request, response); 82 } 83 84 92 public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, 93 HttpServletResponse response) throws Exception { 94 CoreUtil.addRequiredFieldMessage(this, request); 95 return super.unspecified(mapping, form, request, response); 96 } 97 98 106 public ActionForward addSelected(ActionMapping mapping, ActionForm form, HttpServletRequest request, 107 HttpServletResponse response) throws Exception { 108 applyToSequence(mapping, (AbstractWizardForm) form, request, response); 109 AccessRightsPermissionsForm drpf = (AccessRightsPermissionsForm) form; 110 String [] sel = drpf.getSelectedAvailablePermissions(); 111 AbstractWizardSequence seq = getWizardSequence(request); 112 List l = (List ) seq.getAttribute(AccessRightsPermissionsForm.ATTR_RESOURCE_TYPE_PERMISSIONS, new ArrayList ()); 113 for (int i = 0; i < sel.length; i++) { 114 Permission perm = drpf.getResourceType().getPermission(Integer.parseInt(sel[i])); 117 if (!drpf.getAvailablePermissions().contains(perm)) { 118 throw new Exception ("Permission denied."); 119 } 120 l.add(new AccessRight(drpf.getResourceType(), perm)); 121 } 122 seq.putAttribute(AccessRightsPermissionsForm.ATTR_RESOURCE_TYPE_PERMISSIONS, l); 123 return unspecified(mapping, form, request, response); 124 } 125 126 134 public ActionForward removeSelected(ActionMapping mapping, ActionForm form, HttpServletRequest request, 135 HttpServletResponse response) throws Exception { 136 applyToSequence(mapping, (AbstractWizardForm) form, request, response); 137 AccessRightsPermissionsForm drpf = (AccessRightsPermissionsForm) form; 138 AbstractWizardSequence seq = getWizardSequence(request); 139 String [] sel = drpf.getSelectedResourceTypePermissions(); 140 if (sel != null) { 141 List l = (List ) seq.getAttribute(AccessRightsPermissionsForm.ATTR_RESOURCE_TYPE_PERMISSIONS, new ArrayList ()); 142 for (int i = 0; i < sel.length; i++) { 143 int idx = sel[i].indexOf('-'); 144 int resourceTypeId = Integer.parseInt(sel[i].substring(0, idx)); 145 int permissionId = Integer.parseInt(sel[i].substring(idx + 1)); 146 AccessRight sp = null; 147 for (Iterator j = l.iterator(); j.hasNext() && sp == null;) { 148 AccessRight p = (AccessRight) j.next(); 149 if (p.getResourceType().getResourceTypeId() == resourceTypeId && p.getPermission().getId() == permissionId) { 150 sp = p; 151 } 152 } 153 if (sp != null) { 154 l.remove(sp); 155 } 156 } 157 } 158 return unspecified(mapping, form, request, response); 159 } 160 } 161 | Popular Tags |