1 25 package org.snipsnap.jsp; 26 27 import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager; 28 import org.radeox.util.logging.Logger; 29 import org.snipsnap.snip.Snip; 30 import org.snipsnap.user.Roles; 31 import org.snipsnap.user.Security; 32 33 import javax.servlet.jsp.JspException ; 34 import javax.servlet.jsp.JspTagException ; 35 import javax.servlet.jsp.jstl.core.ConditionalTagSupport; 36 import java.util.StringTokenizer ; 37 38 39 public class ObjectAuth extends ConditionalTagSupport { 40 protected Roles roles; 41 protected Snip snip; 42 protected String permission; 43 44 protected boolean invertCheck = false; 45 46 public void setPermission(String permission) { 47 this.permission = permission; 48 } 49 50 public void setSnip(String snip) { 51 try { 52 this.snip = (Snip) ExpressionEvaluatorManager.evaluate("snip", snip, Snip.class, this, pageContext); 53 } catch (JspException e) { 54 Logger.warn("unable to evaluate expression" , e); 55 } 56 } 57 58 public void setRoles(String roles) { 59 StringTokenizer tok = new StringTokenizer (roles, ":,"); 60 this.roles = new Roles(); 61 while (tok.hasMoreTokens()) { 62 String token = tok.nextToken(); 63 this.roles.add(token); 64 } 65 } 66 67 public void setInvert(Boolean value) { 68 invertCheck = value.booleanValue(); 69 } 70 71 protected boolean condition() throws JspTagException { 72 if (snip != null) { 73 boolean isTrue = Security.existsPermission(permission, snip, roles); 74 return (invertCheck ? !isTrue : isTrue); 75 } else { 76 return false; 77 } 78 } 79 } 80
| Popular Tags
|