From a87f08adff5b2441b937bf0d633f03b1b6124807 Mon Sep 17 00:00:00 2001 From: j2blake Date: Sat, 17 Dec 2011 23:53:53 +0000 Subject: [PATCH 1/4] NIHVIVO-3523 Create a branch to implement the first cut at Permissions. From 353ffe1891874668a65938852345a52e918be94d Mon Sep 17 00:00:00 2001 From: j2blake Date: Sun, 18 Dec 2011 00:02:23 +0000 Subject: [PATCH 2/4] NIHVIVO-3523 For the first iteration, let's implement MANAGE_MENUS as a SimplePermission. This version still needs the loader and the policy and... --- productMods/WEB-INF/resources/startup_listeners.txt | 9 ++------- .../freemarker/InstitutionalInternalClassController.java | 4 ++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/productMods/WEB-INF/resources/startup_listeners.txt b/productMods/WEB-INF/resources/startup_listeners.txt index 847811b1..19b373b5 100644 --- a/productMods/WEB-INF/resources/startup_listeners.txt +++ b/productMods/WEB-INF/resources/startup_listeners.txt @@ -22,13 +22,8 @@ edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetup edu.cornell.mannlib.vitro.webapp.filestorage.backend.FileStorageSetup -# Invokes a process to move any uploaded files into the new file storage system. -# Needs to run after FileStorageSetup and JenaDataSourceSetup. -# Should run before Pellet is set up. -edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateUploadedFiles - -# Update to the new UserAccounts model (1.3). Needs to run after JenaDataSourceSetup. -edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateUserAccounts +# Update the URIs on Permission Sets on UserAccounts from model (1.4) to 1.5. +edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdatePermissionSetUris # Invokes process to perform updates to align with ontology changes if needed --> # Needs to run before submodels are attached and Pellet is set up --> diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/InstitutionalInternalClassController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/InstitutionalInternalClassController.java index 1c84c1b0..3386926a 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/InstitutionalInternalClassController.java +++ b/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/InstitutionalInternalClassController.java @@ -17,8 +17,8 @@ import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.shared.Lock; +import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; -import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.ManageMenus; import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.edit.utils.LocalNamespaceClassUtils; @@ -36,7 +36,7 @@ public class InstitutionalInternalClassController extends FreemarkerHttpServlet private static final Log log = LogFactory.getLog(InstitutionalInternalClassController.class); private static final String EDIT_FORM = "/processInstitutionalInternalClass"; - public final static Actions REQUIRED_ACTIONS = new Actions(new ManageMenus()); + public final static Actions REQUIRED_ACTIONS = SimplePermission.MANAGE_MENUS.ACTIONS; private static final String DISPLAY_FORM = "/institutionalInternalClassForm.ftl"; private static HashMap localNamespaces = new HashMap(); private static HashMap localNamespaceClasses = new HashMap(); From 83c1d151ecb118093f1cdac7e0308799c6660772 Mon Sep 17 00:00:00 2001 From: j2blake Date: Mon, 19 Dec 2011 21:19:54 +0000 Subject: [PATCH 3/4] NIHVIVO-3523 Rewrite the PermissionRegistry to be immutable, and to distribute BrokenPermissions when someone asks for a Permission that doesn't exist. --- productMods/WEB-INF/resources/startup_listeners.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/productMods/WEB-INF/resources/startup_listeners.txt b/productMods/WEB-INF/resources/startup_listeners.txt index 19b373b5..0362c509 100644 --- a/productMods/WEB-INF/resources/startup_listeners.txt +++ b/productMods/WEB-INF/resources/startup_listeners.txt @@ -36,6 +36,8 @@ edu.cornell.mannlib.vitro.webapp.servlet.setup.SimpleReasonerSetup # Must run after JenaDataSourceSetup edu.cornell.mannlib.vitro.webapp.servlet.setup.ThemeInfoSetup +edu.cornell.mannlib.vitro.webapp.auth.permissions.PermissionRegistry$Setup + edu.cornell.mannlib.vitro.webapp.auth.permissions.PermissionSetsLoader edu.cornell.mannlib.vitro.webapp.auth.policy.bean.PropertyRestrictionPolicyHelper$Setup From a19d05594d26880c8afa25cee6920df80c275a7b Mon Sep 17 00:00:00 2001 From: j2blake Date: Wed, 21 Dec 2011 20:46:42 +0000 Subject: [PATCH 4/4] NIHVIVO-3523 Convert all simple ADMIN-only requested actions to SimplePermissions. --- .../webapp/controller/freemarker/SiteAdminController.java | 4 ++-- .../modelconstructor/ModelConstructorRequestHandler.java | 4 ++-- .../vitro/webapp/visualization/tools/ToolsRequestHandler.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/SiteAdminController.java b/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/SiteAdminController.java index 71abe8a3..ccbb8c99 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/SiteAdminController.java +++ b/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/SiteAdminController.java @@ -8,8 +8,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vitro.webapp.auth.policy.PolicyHelper; -import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.RefreshVisualizationCacheAction; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +import edu.cornell.mannlib.vitro.webapp.visualization.tools.ToolsRequestHandler; public class SiteAdminController extends BaseSiteAdminController { @@ -21,7 +21,7 @@ public class SiteAdminController extends BaseSiteAdminController { Map urls = super.getIndexCacheRebuildUrls(vreq); - if (PolicyHelper.isAuthorizedForActions(vreq, new RefreshVisualizationCacheAction())) { + if (PolicyHelper.isAuthorizedForActions(vreq, ToolsRequestHandler.REQUIRED_ACTIONS)) { urls.put("rebuildVisCache", UrlBuilder.getUrl("/vis/tools")); } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java index ba87189b..ffe180a9 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/modelconstructor/ModelConstructorRequestHandler.java @@ -14,8 +14,8 @@ import org.apache.commons.logging.Log; import com.google.gson.Gson; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; -import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.RefreshVisualizationCacheAction; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -30,7 +30,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequ public class ModelConstructorRequestHandler implements VisualizationRequestHandler { - public static final Actions REQUIRED_ACTIONS = new Actions(new RefreshVisualizationCacheAction()); + public static final Actions REQUIRED_ACTIONS = SimplePermission.REFRESH_VISUALIZATION_CACHE.ACTIONS; @Override public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log, diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/tools/ToolsRequestHandler.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/tools/ToolsRequestHandler.java index ad98f7f0..b0a62de6 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/tools/ToolsRequestHandler.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/tools/ToolsRequestHandler.java @@ -9,8 +9,8 @@ import org.apache.commons.logging.Log; import com.hp.hpl.jena.query.Dataset; +import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; -import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.RefreshVisualizationCacheAction; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; @@ -19,7 +19,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.visutils.VisualizationRequ public class ToolsRequestHandler implements VisualizationRequestHandler { - public static final Actions REQUIRED_ACTIONS = new Actions(new RefreshVisualizationCacheAction()); + public static final Actions REQUIRED_ACTIONS = SimplePermission.REFRESH_VISUALIZATION_CACHE.ACTIONS; @Override public Object generateAjaxVisualization(VitroRequest vitroRequest, Log log,