From 674b2e12224b3f1d102356fc7380701923714c8f Mon Sep 17 00:00:00 2001 From: jeb228 Date: Thu, 14 Oct 2010 15:59:04 +0000 Subject: [PATCH] NIHVIVO-736 Modify the custom JSP tag to permit test for self-editing. --- webapp/config/tlds/VitroUtils.tld | 5 ++++ .../web/jsptags/ConfirmLoginStatus.java | 25 +++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/webapp/config/tlds/VitroUtils.tld b/webapp/config/tlds/VitroUtils.tld index 1bdbe1fb6..562c9c0de 100644 --- a/webapp/config/tlds/VitroUtils.tld +++ b/webapp/config/tlds/VitroUtils.tld @@ -37,6 +37,11 @@ false true + + allowSelfEditing + false + true + bean false diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/ConfirmLoginStatus.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/ConfirmLoginStatus.java index 5b2a2d5bc..a52db7175 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/ConfirmLoginStatus.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/ConfirmLoginStatus.java @@ -14,6 +14,7 @@ import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vedit.beans.LoginStatusBean; import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; +import edu.cornell.mannlib.vitro.webapp.filters.VitroRequestPrep; /** * JSP tag to generate the HTML of links for edit, delete or add of a Property. @@ -27,7 +28,8 @@ import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; public class ConfirmLoginStatus extends BodyTagSupport { private static final Log log = LogFactory.getLog(ConfirmLoginStatus.class); - int level; + int level = LoginStatusBean.NON_EDITOR; + boolean allowSelfEditing; String beanAttributeName; public String getLevel() { @@ -49,6 +51,14 @@ public class ConfirmLoginStatus extends BodyTagSupport { } } + public void setAllowSelfEditing(boolean allowSelfEditing) { + this.allowSelfEditing = allowSelfEditing; + } + + public boolean getAllowSelfEditing() { + return this.allowSelfEditing; + } + public String getBean() { return this.beanAttributeName; } @@ -60,11 +70,22 @@ public class ConfirmLoginStatus extends BodyTagSupport { @Override public int doEndTag() throws JspException { LoginStatusBean loginBean = LoginStatusBean.getBean(getRequest()); - if (loginBean.isLoggedInAtLeast(level)) { + boolean isLoggedIn = loginBean.isLoggedInAtLeast(level); + + boolean isSelfEditing = VitroRequestPrep.isSelfEditing(getRequest()); + + log.debug("loginLevel=" + loginBean.getSecurityLevel() + + ", requiredLevel=" + level + ", selfEditingAllowed=" + + allowSelfEditing + ", isSelfEditing=" + isSelfEditing); + + if (isLoggedIn || (allowSelfEditing && isSelfEditing)) { + log.debug("Login status confirmed."); return setBeanAndReturn(loginBean); } else { + log.debug("Login status not confirmed."); return redirectAndSkipPage(); } + } private int setBeanAndReturn(LoginStatusBean loginBean) {