1 28 package net.sf.jguard.example.struts.admin.actions; 29 30 31 32 import java.security.Permission ; 33 34 import javax.servlet.http.HttpServletRequest ; 35 import javax.servlet.http.HttpServletResponse ; 36 37 import net.sf.jguard.core.authorization.permissions.PermissionUtils; 38 import net.sf.jguard.example.struts.actions.BaseAction; 39 import net.sf.jguard.ext.SecurityConstants; 40 import net.sf.jguard.ext.authorization.AuthorizationException; 41 import net.sf.jguard.ext.authorization.manager.AuthorizationManager; 42 43 import org.apache.log4j.Logger; 44 import org.apache.struts.action.ActionForm; 45 import org.apache.struts.action.ActionForward; 46 import org.apache.struts.action.ActionMapping; 47 import org.apache.struts.action.DynaActionForm; 48 52 public class PermissionDispatchAction extends BaseAction{ 53 private static Logger logger = Logger.getLogger(PermissionDispatchAction.class); 54 55 63 public ActionForward create(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 64 65 DynaActionForm dyna = (DynaActionForm)form; 66 AuthorizationManager am = (AuthorizationManager) request.getSession().getServletContext().getAttribute(SecurityConstants.AUTHORIZATION_MANAGER); 67 68 Permission permission = null; 69 try { 70 permission = getPermission(dyna); 71 am.createPermission(permission,(String )dyna.get("domainName")); 72 } catch (AuthorizationException e) { 73 logger.error(" permission "+permission.getName()+ " in domain "+(String )dyna.get("domainName")+" not created ",e); 74 } catch (ClassNotFoundException e) { 75 logger.error(" permission "+permission.getName()+ " in domain "+(String )dyna.get("domainName")+" not created ",e); 76 } 77 78 return mapping.findForward("createPermissionOK"); 79 80 } 81 82 83 91 public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 92 93 DynaActionForm dyna = (DynaActionForm)form; 94 AuthorizationManager am = (AuthorizationManager) request.getSession().getServletContext().getAttribute(SecurityConstants.AUTHORIZATION_MANAGER); 95 try { 96 am.deletePermission((String )dyna.get("permissionName")); 97 } catch (AuthorizationException e) { 98 logger.error(" permission "+(String )dyna.get("permissionName")+" not deleted ",e); 99 } 100 101 return mapping.findForward("deletePermissionOK"); 102 103 } 104 105 113 public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 114 115 DynaActionForm dyna = (DynaActionForm)form; 116 AuthorizationManager am = (AuthorizationManager) request.getSession().getServletContext().getAttribute(SecurityConstants.AUTHORIZATION_MANAGER); 117 Permission permission = null; 118 119 try { 120 permission = getPermission(dyna); 121 am.updatePermission((String )dyna.get("oldPermissionName"),permission,(String )dyna.get("domainName")); 122 } catch (AuthorizationException e) { 123 logger.error(" permission "+(String )dyna.get("oldPermissionName")+" not updated ",e); 124 } catch (ClassNotFoundException e) { 125 logger.error(" permission "+(String )dyna.get("oldPermissionName")+" not updated ",e); 126 } 127 128 return mapping.findForward("updatePermissionOK"); 129 130 } 131 132 133 private Permission getPermission(DynaActionForm dyna) throws ClassNotFoundException { 134 String permissionName = (String )dyna.get("permissionName"); 135 String permissionClassName = (String )dyna.get("permissionClass"); 136 String actions =(String )dyna.get("permissionActions"); 137 Permission permission = PermissionUtils.getPermission(permissionClassName,permissionName,actions); 138 return permission; 139 } 140 } 141 | Popular Tags |