Add infrastructure to allow freemarker controllers to block access to pages if user is not logged in.

This commit is contained in:
rjy7 2010-11-08 00:00:43 +00:00
parent 0028509f63
commit e7e5cefb29
3 changed files with 20 additions and 27 deletions

View file

@ -193,7 +193,7 @@ public class EntityController extends VitroHttpServlet {
if( view == null){ if( view == null){
if (customView == null) { if (customView == null) {
view = default_jsp; view = default_jsp;
vreq.setAttribute("bodyJsp","/"+Controllers.ENTITY_JSP); vreq.setAttribute("bodyJsp", Controllers.ENTITY_JSP);
log.debug("no custom view and no view parameter in request for rendering "+indiv.getName()); log.debug("no custom view and no view parameter in request for rendering "+indiv.getName());
} else { } else {
view = default_jsp; view = default_jsp;

View file

@ -34,7 +34,6 @@ import edu.cornell.mannlib.vitro.webapp.utils.StringUtils;
import edu.cornell.mannlib.vitro.webapp.web.BreadCrumbsUtil; import edu.cornell.mannlib.vitro.webapp.web.BreadCrumbsUtil;
import edu.cornell.mannlib.vitro.webapp.web.ContentType; import edu.cornell.mannlib.vitro.webapp.web.ContentType;
import edu.cornell.mannlib.vitro.webapp.web.PortalWebUtil; import edu.cornell.mannlib.vitro.webapp.web.PortalWebUtil;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.files.Scripts; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.files.Scripts;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.files.Stylesheets; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.files.Stylesheets;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.menu.TabMenu; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.menu.TabMenu;
@ -43,6 +42,7 @@ import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader; import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.TemplateLoader; import freemarker.cache.TemplateLoader;
import freemarker.ext.beans.BeansWrapper; import freemarker.ext.beans.BeansWrapper;
import freemarker.ext.servlet.AllHttpScopesHashModel;
import freemarker.template.Configuration; import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper; import freemarker.template.DefaultObjectWrapper;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
@ -77,6 +77,10 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
public void doGet( HttpServletRequest request, HttpServletResponse response ) public void doGet( HttpServletRequest request, HttpServletResponse response )
throws IOException, ServletException { throws IOException, ServletException {
if (requiresLogin() && !checkLoginStatus(request, response)) {
return;
}
super.doGet(request,response); super.doGet(request,response);
try { try {
@ -200,6 +204,12 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
} }
protected boolean requiresLogin() {
// By default, user does not need to be logged in to view pages.
// Subclasses that require login to process their page will override to return true.
return false;
}
// Subclasses will override // Subclasses will override
protected ResponseValues processRequest(VitroRequest vreq) { protected ResponseValues processRequest(VitroRequest vreq) {
return null; return null;
@ -266,6 +276,8 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
// root is the map used to create the page shell - header, footer, menus, etc. // root is the map used to create the page shell - header, footer, menus, etc.
Map<String, Object> root = new HashMap<String, Object>(sharedVariables); Map<String, Object> root = new HashMap<String, Object>(sharedVariables);
//AllHttpScopesHashModel root = new AllHttpScopesHashModel(null, null, vreq);
root.putAll(getPageTemplateValues(vreq)); root.putAll(getPageTemplateValues(vreq));
// Tell the template and any directives it uses that we're processing a page template. // Tell the template and any directives it uses that we're processing a page template.
root.put("templateType", "page"); root.put("templateType", "page");
@ -589,11 +601,6 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
} }
protected static interface ResponseValues { protected static interface ResponseValues {
// enum ResponseType {
// TEMPLATE, REDIRECT, FORWARD, EXCEPTION
// }
//
// ResponseType getType();
String getTemplateName(); String getTemplateName();
@ -676,11 +683,6 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
return this; return this;
} }
// @Override
// public ResponseType getType() {
// return ResponseType.TEMPLATE;
// }
@Override @Override
public Map<String, Object> getMap() { public Map<String, Object> getMap() {
return Collections.unmodifiableMap(this.map); return Collections.unmodifiableMap(this.map);
@ -729,11 +731,6 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
this.redirectUrl = redirectUrl; this.redirectUrl = redirectUrl;
} }
// @Override
// public ResponseType getType() {
// return ResponseType.REDIRECT;
// }
@Override @Override
public String getRedirectUrl() { public String getRedirectUrl() {
return this.redirectUrl; return this.redirectUrl;
@ -781,11 +778,6 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
super(statusCode); super(statusCode);
this.forwardUrl = forwardUrl; this.forwardUrl = forwardUrl;
} }
// @Override
// public ResponseType getType() {
// return ResponseType.FORWARD;
// }
@Override @Override
public String getForwardUrl() { public String getForwardUrl() {
@ -856,11 +848,6 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
super(templateName, map, statusCode); super(templateName, map, statusCode);
this.cause = cause; this.cause = cause;
} }
// @Override
// public ResponseType getType() {
// return ResponseType.EXCEPTION;
// }
@Override @Override
public Throwable getException() { public Throwable getException() {

View file

@ -34,6 +34,12 @@ public class SiteAdminController extends FreemarkerHttpServlet {
return siteName + " Site Administration"; return siteName + " Site Administration";
} }
// @Override
// protected boolean requiresLogin() {
// // User must be logged in to view this page.
// return true;
// }
@Override @Override
protected ResponseValues processRequest(VitroRequest vreq) { protected ResponseValues processRequest(VitroRequest vreq) {