package edu.gatech.oad.rocket.findmythings.server.util.tags; import freemarker.core.Environment; import freemarker.template.TemplateDirectiveBody; import freemarker.template.TemplateException; import freemarker.template.TemplateModelException; import java.io.IOException; import java.util.Map; /** * <p>Equivalent to {@link org.apache.shiro.web.tags.PermissionTag}</p> */ @SuppressWarnings("rawtypes") abstract class PermissionTag extends SecureTag { String getName(Map params) { return getParam(params, "name"); } @Override protected void verifyParameters(Map params) throws TemplateModelException { String permission = getName(params); if (permission == null || permission.length() == 0) { throw new TemplateModelException("The 'name' tag attribute must be set."); } } @Override public void render(Environment env, Map params, TemplateDirectiveBody body) throws IOException, TemplateException { String p = getName(params); boolean show = showTagBody(p); if (show) { renderBody(env, body); } } boolean isPermitted(String p) { return getSubject() != null && getSubject().isPermitted(p); } protected abstract boolean showTagBody(String p); }