1 16 17 package org.apache.jetspeed.modules.actions.portlets.security; 18 19 import org.apache.jetspeed.modules.actions.portlets.SecureVelocityPortletAction; 21 import org.apache.jetspeed.om.security.JetspeedPermissionFactory; 22 import org.apache.jetspeed.om.security.Permission; 23 import org.apache.jetspeed.portal.portlets.VelocityPortlet; 24 import org.apache.jetspeed.services.JetspeedSecurity; 25 import org.apache.jetspeed.services.logging.JetspeedLogFactoryService; 26 import org.apache.jetspeed.services.logging.JetspeedLogger; 27 import org.apache.jetspeed.services.resources.JetspeedResources; 28 import org.apache.jetspeed.services.security.JetspeedSecurityException; 29 import org.apache.turbine.util.DynamicURI; 30 import org.apache.turbine.util.RunData; 31 import org.apache.turbine.util.StringUtils; 32 import org.apache.velocity.context.Context; 33 34 35 41 public class PermissionUpdateAction extends SecureVelocityPortletAction 42 { 43 private static final String TEMP_PERMISSION = "tempPermission"; 44 45 48 private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(PermissionUpdateAction.class.getName()); 49 50 57 protected void buildMaximizedContext( VelocityPortlet portlet, 58 Context context, 59 RunData rundata ) 60 { 61 buildNormalContext( portlet, context, rundata); 62 } 63 64 72 protected void buildConfigureContext( VelocityPortlet portlet, 73 Context context, 74 RunData rundata ) 75 { 76 77 buildNormalContext( portlet, context, rundata); 78 } 79 80 87 protected void buildNormalContext( VelocityPortlet portlet, 88 Context context, 89 RunData rundata ) 90 { 91 try 92 { 93 Permission permission = null; 94 95 98 String mode = rundata.getParameters().getString(SecurityConstants.PARAM_MODE); 99 100 if (mode != null && (mode.equals(SecurityConstants.PARAM_MODE_UPDATE) || 104 mode.equals(SecurityConstants.PARAM_MODE_DELETE))) 105 { 106 String permissionname = rundata.getParameters().getString(SecurityConstants.PARAM_ENTITY_ID); 108 permission = JetspeedSecurity.getPermission(permissionname); 109 context.put(SecurityConstants.CONTEXT_PERMISSION, permission); 110 } 111 112 String msgid = rundata.getParameters().getString(SecurityConstants.PARAM_MSGID); 116 if (msgid != null) 117 { 118 int id = Integer.parseInt(msgid); 119 if (id < SecurityConstants.MESSAGES.length) 120 context.put(SecurityConstants.PARAM_MSG, SecurityConstants.MESSAGES[id]); 121 122 Permission tempPermission = (Permission)rundata.getUser().getTemp(TEMP_PERMISSION); 124 if (tempPermission != null) 125 context.put(SecurityConstants.CONTEXT_PERMISSION, tempPermission); 126 } 127 context.put(SecurityConstants.PARAM_MODE, mode); 128 129 } 130 catch (Exception e) 131 { 132 logger.error("Error in Jetspeed User Security", e); 133 rundata.setMessage("Error in Jetspeed User Security: " + e.toString()); 134 rundata.setStackTrace(StringUtils.stackTrace(e), e); 135 rundata.setScreenTemplate(JetspeedResources.getString("template.error","Error")); 136 } 137 } 138 139 145 public void doInsert(RunData rundata, Context context) 146 throws Exception 147 { 148 Permission permission = null; 149 try 150 { 151 String name = rundata.getParameters().getString("name"); 155 if (name == null || name.trim().length() == 0) 156 { 157 DynamicURI duri = new DynamicURI (rundata); 158 duri.addPathInfo(SecurityConstants.PANE_NAME, SecurityConstants.PANEID_PERMISSION_UPDATE); 159 duri.addPathInfo(SecurityConstants.PARAM_MSGID, SecurityConstants.MID_INVALID_ENTITY_NAME); 160 rundata.setRedirectURI(duri.toString()); 161 rundata.getUser().setTemp(TEMP_PERMISSION, null); 162 return; 163 } 164 165 permission = JetspeedPermissionFactory.getInstance(); 169 permission.setName(name); 170 171 JetspeedSecurity.addPermission(permission); 175 176 } 177 catch (JetspeedSecurityException e) 178 { 179 logger.error("Exception", e); 181 182 DynamicURI duri = new DynamicURI (rundata); 186 duri.addPathInfo(SecurityConstants.PANE_NAME, SecurityConstants.PANEID_PERMISSION_UPDATE); 187 duri.addPathInfo(SecurityConstants.PARAM_MSGID, SecurityConstants.MID_ENTITY_ALREADY_EXISTS); 188 rundata.setRedirectURI(duri.toString()); 189 190 if (permission != null) 192 rundata.getUser().setTemp(TEMP_PERMISSION, permission); 193 } 194 } 195 196 202 public void doUpdate(RunData rundata, Context context) 203 throws Exception 204 { 205 Permission permission = null; 206 try 207 { 208 permission = JetspeedSecurity.getPermission( 212 rundata.getParameters().getString(SecurityConstants.PARAM_ENTITY_ID)); 213 214 JetspeedSecurity.savePermission(permission); 218 219 } 220 catch (Exception e) 221 { 222 logger.error("Exception", e); 224 225 DynamicURI duri = new DynamicURI (rundata); 229 duri.addPathInfo(SecurityConstants.PANE_NAME, SecurityConstants.PANEID_PERMISSION_UPDATE); 230 duri.addPathInfo(SecurityConstants.PARAM_MSGID, SecurityConstants.MID_UPDATE_FAILED); 231 if (permission != null) 232 duri.addPathInfo(SecurityConstants.PARAM_ENTITY_ID, permission.getName()); 233 duri.addQueryData(SecurityConstants.PARAM_MODE, SecurityConstants.PARAM_MODE_UPDATE); 234 rundata.setRedirectURI(duri.toString()); 235 236 if (permission != null) 238 rundata.getUser().setTemp(TEMP_PERMISSION, permission); 239 240 } 241 } 242 243 249 public void doDelete(RunData rundata, Context context) 250 throws Exception 251 { 252 Permission permission = null; 253 254 try 255 { 256 permission = JetspeedSecurity.getPermission( 260 rundata.getParameters().getString( SecurityConstants.PARAM_ENTITY_ID) ); 261 262 JetspeedSecurity.removePermission(permission.getName()); 266 } 267 catch (Exception e) 268 { 269 logger.error("Exception", e); 271 272 DynamicURI duri = new DynamicURI (rundata); 276 duri.addPathInfo(SecurityConstants.PANE_NAME, SecurityConstants.PANEID_PERMISSION_UPDATE); 277 duri.addPathInfo(SecurityConstants.PARAM_MSGID, SecurityConstants.MID_DELETE_FAILED); 278 if (permission != null) 279 duri.addPathInfo(SecurityConstants.PARAM_ENTITY_ID, permission.getName()); 280 duri.addQueryData(SecurityConstants.PARAM_MODE, SecurityConstants.PARAM_MODE_DELETE); 281 rundata.setRedirectURI(duri.toString()); 282 283 if (permission != null) 285 rundata.getUser().setTemp(TEMP_PERMISSION, permission); 286 287 } 288 289 } 290 291 292 } | Popular Tags |