package edu.gatech.oad.rocket.findmythings.server.util.tags; import freemarker.core.Environment; import freemarker.template.*; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import java.io.IOException; import java.util.Map; /** * <p>Equivalent to {@link org.apache.shiro.web.tags.SecureTag}</p> */ @SuppressWarnings("rawtypes") abstract class SecureTag implements TemplateDirectiveModel { public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { verifyParameters(params); render(env, params, body); } abstract void render(Environment env, Map params, TemplateDirectiveBody body) throws IOException, TemplateException; String getParam(Map params, String name) { Object value = params.get(name); if (value instanceof SimpleScalar) { return ((SimpleScalar)value).getAsString(); } return null; } Subject getSubject() { return SecurityUtils.getSubject(); } void verifyParameters(Map params) throws TemplateModelException {} void renderBody(Environment env, TemplateDirectiveBody body) throws IOException, TemplateException { if (body != null) { body.render(env.getOut()); } } }