From d2bb0c160f376ee906ae335ad9e7b7b87f1c8349 Mon Sep 17 00:00:00 2001 From: David Caruana Date: Wed, 1 Feb 2006 18:36:23 +0000 Subject: [PATCH] Show permissions in Node Browser. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2280 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/bean/AdminNodeBrowseBean.java | 76 +++++++++++++++++++ source/web/WEB-INF/faces-config.xml | 4 + source/web/jsp/admin/node-browser.jsp | 33 +++++++- 3 files changed, 112 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/web/bean/AdminNodeBrowseBean.java b/source/java/org/alfresco/web/bean/AdminNodeBrowseBean.java index 29c4de2ac8..ad3ed8102b 100644 --- a/source/java/org/alfresco/web/bean/AdminNodeBrowseBean.java +++ b/source/java/org/alfresco/web/bean/AdminNodeBrowseBean.java @@ -40,6 +40,9 @@ import org.alfresco.service.cmr.repository.Path; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.SearchService; +import org.alfresco.service.cmr.security.AccessPermission; +import org.alfresco.service.cmr.security.AccessStatus; +import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; @@ -83,12 +86,15 @@ public class AdminNodeBrowseBean private DataModel properties = null; private DataModel children = null; private DataModel assocs = null; + private Boolean inheritPermissions = null; + private DataModel permissions = null; // supporting repository services private NodeService nodeService; private DictionaryService dictionaryService; private SearchService searchService; private NamespaceService namespaceService; + private PermissionService permissionService; /** * @param nodeService node service @@ -122,6 +128,14 @@ public class AdminNodeBrowseBean this.namespaceService = namespaceService; } + /** + * @param permissionService permission service + */ + public void setPermissionService(PermissionService permissionService) + { + this.permissionService = permissionService; + } + /** * Gets the list of repository stores * @@ -168,6 +182,8 @@ public class AdminNodeBrowseBean properties = null; children = null; assocs = null; + inheritPermissions = null; + permissions = null; } /** @@ -260,6 +276,45 @@ public class AdminNodeBrowseBean } return properties; } + + /** + * Gets whether the current node inherits its permissions from a parent node + * + * @return true => inherits permissions + */ + public boolean getInheritPermissions() + { + if (inheritPermissions == null) + { + inheritPermissions = permissionService.getInheritParentPermissions(nodeRef); + } + return inheritPermissions.booleanValue(); + } + + /** + * Gets the current node permissions + * + * @return the permissions + */ + public DataModel getPermissions() + { + if (permissions == null) + { + AccessStatus readPermissions = permissionService.hasPermission(nodeRef, PermissionService.READ_PERMISSIONS); + if (readPermissions.equals(AccessStatus.ALLOWED)) + { + List nodePermissions = new ArrayList(permissionService.getAllSetPermissions(nodeRef)); + permissions = new ListDataModel(nodePermissions); + } + else + { + List noReadPermissions = new ArrayList(1); + noReadPermissions.add(new NoReadPermissionGranted()); + permissions = new ListDataModel(noReadPermissions); + } + } + return permissions; + } /** * Gets the current node children @@ -710,6 +765,27 @@ public class AdminNodeBrowseBean } } + /** + * Permission representing the fact that "Read Permissions" has not been granted + */ + public class NoReadPermissionGranted + { + public String getPermission() + { + return PermissionService.READ_PERMISSIONS; + } + + public String getAuthority() + { + return "[Current Authority]"; + } + + public String getAccessStatus() + { + return "Not Granted"; + } + } + /** * Wrapper class for Search Results */ diff --git a/source/web/WEB-INF/faces-config.xml b/source/web/WEB-INF/faces-config.xml index 7487f5da27..5b16891c45 100644 --- a/source/web/WEB-INF/faces-config.xml +++ b/source/web/WEB-INF/faces-config.xml @@ -961,6 +961,10 @@ namespaceService #{NamespaceService} + + permissionService + #{PermissionService} + diff --git a/source/web/jsp/admin/node-browser.jsp b/source/web/jsp/admin/node-browser.jsp index 8a34d9568d..f0bb27e165 100644 --- a/source/web/jsp/admin/node-browser.jsp +++ b/source/web/jsp/admin/node-browser.jsp @@ -94,7 +94,7 @@
- + @@ -154,6 +154,37 @@ +
+ + + + + + +
Inherit:
+ +
+ + + + + + + + + + + + + + + + + + + + +