1 package net.sourceforge.blogentis.utils.tools; 2 3 import net.sourceforge.blogentis.om.Post; 4 import net.sourceforge.blogentis.turbine.BlogParameterParser; 5 import net.sourceforge.blogentis.turbine.BlogRunData; 6 import net.sourceforge.blogentis.utils.BlogConstants; 7 8 import org.apache.turbine.om.security.User; 9 import org.apache.turbine.services.pull.RunDataApplicationTool; 10 import org.apache.turbine.util.RunData; 11 import org.apache.turbine.util.security.AccessControlList; 12 13 /*** 14 * Tool to simplify Velocity access control checks. 15 * 16 * @author abas 17 */ 18 public class SecurityTool 19 implements RunDataApplicationTool { 20 protected BlogRunData data = null; 21 22 public void init(Object obj) { 23 if (obj instanceof BlogRunData) { 24 this.data = (BlogRunData)obj; 25 } else 26 this.data = null; 27 } 28 29 public void setRunData(BlogRunData brdata) { 30 this.data = brdata; 31 } 32 33 public SecurityTool() {} 34 35 public SecurityTool(BlogRunData data) { 36 init(data); 37 } 38 39 public void refresh(RunData data) { 40 this.data = (BlogRunData)data; 41 } 42 43 public boolean getIsSiteAdmin() { 44 if (data == null) 45 return false; 46 AccessControlList acl = data.getACL(); 47 if (acl == null) 48 return false; 49 return acl.hasPermission(BlogConstants.PERM_ADMIN_SITE); 50 } 51 52 public boolean getIsBlogAdmin() { 53 if (data == null) 54 return false; 55 AccessControlList acl = data.getACL(); 56 if (acl == null || data.getBlog() == null) 57 return false; 58 return acl.hasPermission(BlogConstants.PERM_ADMIN_BLOG, data.getBlog() 59 .getName()); 60 } 61 62 public boolean getIsBlogAuthor() { 63 if (data == null) 64 return false; 65 AccessControlList acl = data.getACL(); 66 if (acl == null || data.getBlog() == null) 67 return false; 68 return acl.hasPermission(BlogConstants.PERM_WRITE_POSTS, data.getBlog() 69 .getName()); 70 } 71 72 public boolean getIsBlogEditor() { 73 if (data == null) 74 return false; 75 AccessControlList acl = data.getACL(); 76 if (acl == null || data.getBlog() == null) 77 return false; 78 return acl.hasPermission(BlogConstants.PERM_EDIT_POSTS, data.getBlog() 79 .getName()); 80 } 81 82 public boolean getCanEditThisPost() { 83 BlogParameterParser bpp = (BlogParameterParser)data.getParameters(); 84 Post p = bpp.getPost(); 85 User u = data.getUser(); 86 if (p == null || u == null || !u.hasLoggedIn()) 87 return false; 88 if (getIsBlogEditor()) 89 return true; 90 if (!getIsBlogAuthor()) 91 return false; 92 return u.getName().equals(p.getAuthorId()); 93 } 94 }