package edu.gatech.oad.rocket.findmythings.server.util.tags; import freemarker.core.Environment; import freemarker.log.Logger; import freemarker.template.TemplateDirectiveBody; import freemarker.template.TemplateException; import java.io.IOException; import java.util.Map; /** * JSP tag that renders the tag body if the current user <em>is not</em> known to the system, either because they * haven't logged in yet, or because they have no 'RememberMe' identity. * * <p>The logically opposite tag of this one is the {@link UserTag}. Please read that class's JavaDoc as it explains * more about the differences between Authenticated/Unauthenticated and User/Guest semantic differences. * * <p>Equivalent to {@link org.apache.shiro.web.tags.GuestTag}</p> * * @since 0.9 */ @SuppressWarnings("rawtypes") class GuestTag extends SecureTag { private static final Logger log = Logger.getLogger("AuthenticatedTag"); @Override public void render(Environment env, Map params, TemplateDirectiveBody body) throws IOException, TemplateException { if (getSubject() == null || getSubject().getPrincipal() == null) { if (log.isDebugEnabled()) { log.debug("Subject does not exist or does not have a known identity (aka 'principal'). " + "Tag body will be evaluated."); } renderBody(env, body); } else { if (log.isDebugEnabled()) { log.debug("Subject exists or has a known identity (aka 'principal'). " + "Tag body will not be evaluated."); } } } }