Merged V2.2 to HEAD

7732: Support to cache null QName look ups ...
   7733: Support for store ACLs
   7741: Fix for over keen stiore ACLs ....
   7794: Fix for WCM-1019, tasks show all assets as modified when only one has
   7996: Fix for AWC-1519: cancelling discussion creation results in error


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8448 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2008-03-07 01:50:03 +00:00
parent 309a3da7f5
commit e6136a4c4e
5 changed files with 301 additions and 228 deletions

View File

@@ -61,11 +61,9 @@ import org.alfresco.util.ISO9075;
import org.alfresco.web.app.servlet.DownloadContentServlet;
import org.alfresco.web.bean.repository.Repository;
// TODO: DownloadServlet - use of request parameter for property name?
// TODO: Anyway to switch content view url link / property value text?
/**
* Backing bean to support the Admin Node Browser
*/
@@ -90,18 +88,20 @@ public class AdminNodeBrowseBean implements Serializable
private String query = null;
private SearchResults searchResults = new SearchResults((List<NodeRef>) null);
// stores and node
transient private DataModel stores = null;
private NodeRef nodeRef = null;
private QName nodeType = null;
private Path primaryPath = null;
private Boolean inheritPermissions = null;
// stores and node
transient private DataModel stores = null;
transient private DataModel parents = null;
transient private DataModel aspects = null;
transient private DataModel properties = null;
transient private DataModel children = null;
transient private DataModel assocs = null;
private Boolean inheritPermissions = null;
transient private DataModel permissions = null;
transient private DataModel permissionMasks = null;
transient private DataModel avmStoreProps = null;
// supporting repository services
@@ -262,6 +262,7 @@ public class AdminNodeBrowseBean implements Serializable
assocs = null;
inheritPermissions = null;
permissions = null;
permissionMasks = null;
}
/**
@@ -394,6 +395,30 @@ public class AdminNodeBrowseBean implements Serializable
return permissions;
}
/**
* Gets the current node permissions
*
* @return the permissions
*/
public DataModel getStorePermissionMasks()
{
if (permissionMasks == null)
{
if (nodeRef.getStoreRef().getProtocol().equals(StoreRef.PROTOCOL_AVM))
{
List<AccessPermission> nodePermissions = new ArrayList<AccessPermission>(getPermissionService().getAllSetPermissions(nodeRef.getStoreRef()));
permissionMasks = new ListDataModel(nodePermissions);
}
else
{
List<NoStoreMask> noReadPermissions = new ArrayList<NoStoreMask>(1);
noReadPermissions.add(new NoStoreMask());
permissionMasks = new ListDataModel(noReadPermissions);
}
}
return permissionMasks;
}
/**
* Gets the current node children
*
@@ -684,9 +709,13 @@ public class AdminNodeBrowseBean implements Serializable
public class Property
{
private QName name;
private boolean isCollection = false;
private DataModel values;
private String datatype;
private String residual;
/**
@@ -788,7 +817,6 @@ public class AdminNodeBrowseBean implements Serializable
return isCollection;
}
/**
* Value wrapper
*/
@@ -908,6 +936,26 @@ public class AdminNodeBrowseBean implements Serializable
}
}
public static class NoStoreMask implements Serializable
{
private static final long serialVersionUID = -6256369557521402921L;
public String getPermission()
{
return "All <No Mask>";
}
public String getAuthority()
{
return "All";
}
public String getAccessStatus()
{
return "Allowed";
}
}
/**
* Wrapper class for Search Results
*/
@@ -979,5 +1027,4 @@ public class AdminNodeBrowseBean implements Serializable
private static final long serialVersionUID = 4154583769762846020L;
}
}
}

View File

@@ -180,16 +180,15 @@ public class CreateDiscussionDialog extends CreateTopicDialog
tx.begin();
// remove the discussable aspect from the node we were going to discuss!
// AWC-1519: removing the aspect that defines the child association now does the
// cascade delete so we no longer have to delete the child explicitly
this.getNodeService().removeAspect(this.discussingNodeRef, ForumModel.ASPECT_DISCUSSABLE);
// delete the forum space created when the wizard started
Node forumNode = this.navigator.getCurrentNode();
this.getNodeService().deleteNode(forumNode.getNodeRef());
// commit the transaction
tx.commit();
// remove this node from the breadcrumb if required
Node forumNode = this.navigator.getCurrentNode();
this.browseBean.removeSpaceFromBreadcrumb(forumNode);
// clear action context

View File

@@ -131,11 +131,12 @@ public class AVMWorkflowUtil extends WorkflowUtil
avmService.setNodeProperty(packagesPath, WorkflowModel.PROP_IS_SYSTEM_PACKAGE, new PropertyValue(DataTypeDefinition.BOOLEAN, true));
// apply global permission to workflow package
// TODO: Determine appropriate permissions
final ServiceRegistry services = Repository.getServiceRegistry(FacesContext.getCurrentInstance());
final PermissionService permissionService = services.getPermissionService();
permissionService.setPermission(packageNodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
// NOTE: WCM-1019: As permissions are now implemented for AVM nodes we no longer need to set permisssions here
// as they will be inherited from the store the workflow store is layered over.
//final ServiceRegistry services = Repository.getServiceRegistry(FacesContext.getCurrentInstance());
//final PermissionService permissionService = services.getPermissionService();
//permissionService.setPermission(packageNodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
return packageNodeRef;
}

View File

@@ -199,8 +199,11 @@ public final class SandboxFactory
// apply READ permissions for all users
NodeRef dirRef = AVMNodeConverter.ToNodeRef(-1, AVMUtil.buildStoreRootPath(storeName));
permissionService.setPermission(dirRef, PermissionService.ALL_AUTHORITIES, PermissionService.READ, true);
// Set store permission mask
permissionService.setPermission(dirRef.getStoreRef(), PermissionService.ALL_AUTHORITIES, PermissionService.READ, true);
// Apply sepcific user permissions as set on the web project
// All these will be masked out
List<ChildAssociationRef> userInfoRefs = nodeService.getChildAssocs(
webProjectNodeRef, WCMAppModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL);
for (ChildAssociationRef ref : userInfoRefs)
@@ -218,6 +221,7 @@ public final class SandboxFactory
public static void updateStagingAreaManagers(String storeId,
NodeRef webProjectNodeRef, final List<String> managers)
{
// The stores have the mask set in updateSandboxManagers
String storeName = AVMUtil.buildStagingStoreName(storeId);
ServiceRegistry services = Repository.getServiceRegistry(FacesContext.getCurrentInstance());
PermissionService permissionService = services.getPermissionService();
@@ -282,16 +286,16 @@ public final class SandboxFactory
JNDIConstants.DIR_DEFAULT_WWW);
NodeRef dirRef = AVMNodeConverter.ToNodeRef(-1, AVMUtil.buildStoreRootPath(userStoreName));
// TODO: Apply access mask to the store and ACls to the staging area
// Apply access mask to the store (ACls are applie to the staging area)
// apply the user role permissions to the sandbox
//permissionService.setPermission(dirRef, username, role, true);
//permissionService.setPermission(dirRef, PermissionService.ALL_AUTHORITIES, PermissionService.READ, true);
permissionService.setPermission(dirRef.getStoreRef(), username, PermissionService.ALL_PERMISSIONS, true);
permissionService.setPermission(dirRef.getStoreRef(), PermissionService.ALL_AUTHORITIES, PermissionService.READ, true);
// apply the manager role permission for each manager in the web project
//for (String manager : managers)
//{
// permissionService.setPermission(dirRef, manager, AVMUtil.ROLE_CONTENT_MANAGER, true);
//}
for (String manager : managers)
{
permissionService.setPermission(dirRef.getStoreRef(), manager, AVMUtil.ROLE_CONTENT_MANAGER, true);
}
// tag the store with the store type
avmService.setStoreProperty(userStoreName,
@@ -330,15 +334,16 @@ public final class SandboxFactory
JNDIConstants.DIR_DEFAULT_WWW);
dirRef = AVMNodeConverter.ToNodeRef(-1, AVMUtil.buildStoreRootPath(previewStoreName));
// TODO: Apply access mask to the store
// Apply access mask to the store (ACls are applied to the staging area)
// apply the user role permissions to the sandbox
//permissionService.setPermission(dirRef, username, role, true);
//permissionService.setPermission(dirRef, PermissionService.ALL_AUTHORITIES, PermissionService.READ, true);
permissionService.setPermission(dirRef.getStoreRef(), username, PermissionService.ALL_PERMISSIONS, true);
permissionService.setPermission(dirRef.getStoreRef(), PermissionService.ALL_AUTHORITIES, PermissionService.READ, true);
// apply the manager role permission for each manager in the web project
//for (String manager : managers)
//{
// permissionService.setPermission(dirRef, manager, AVMUtil.ROLE_CONTENT_MANAGER, true);
//}
for (String manager : managers)
{
permissionService.setPermission(dirRef.getStoreRef(), manager, AVMUtil.ROLE_CONTENT_MANAGER, true);
}
// tag the store with the store type
avmService.setStoreProperty(previewStoreName,
@@ -513,21 +518,21 @@ public final class SandboxFactory
final String userStoreName = AVMUtil.buildUserMainStoreName(storeId, username);
final String previewStoreName = AVMUtil.buildUserPreviewStoreName(storeId, username);
// TODO: Fix to apply application mask to the stores and ACLs to the staging area
// Apply masks to the stores
// apply the manager role permission to the user main sandbox for each manager
//NodeRef dirRef = AVMNodeConverter.ToNodeRef(-1, AVMUtil.buildStoreRootPath(userStoreName));
//for (String manager : managers)
//{
// permissionService.setPermission(dirRef, manager, AVMUtil.ROLE_CONTENT_MANAGER, true);
//}
NodeRef dirRef = AVMNodeConverter.ToNodeRef(-1, AVMUtil.buildStoreRootPath(userStoreName));
for (String manager : managers)
{
permissionService.setPermission(dirRef.getStoreRef(), manager, AVMUtil.ROLE_CONTENT_MANAGER, true);
}
// apply the manager role permission to the user preview sandbox for each manager
//dirRef = AVMNodeConverter.ToNodeRef(-1, AVMUtil.buildStoreRootPath(previewStoreName));
//for (String manager : managers)
//{
// permissionService.setPermission(dirRef, manager, AVMUtil.ROLE_CONTENT_MANAGER, true);
// }
dirRef = AVMNodeConverter.ToNodeRef(-1, AVMUtil.buildStoreRootPath(previewStoreName));
for (String manager : managers)
{
permissionService.setPermission(dirRef.getStoreRef(), manager, AVMUtil.ROLE_CONTENT_MANAGER, true);
}
}
/**

View File

@@ -193,6 +193,27 @@
</h:column>
</h:dataTable>
<h:dataTable id="storePermissionMasks" border="1" value="#{AdminNodeBrowseBean.storePermissionMasks}" var="permission" styleClass="nodeBrowserTable">
<h:column>
<f:facet name="header">
<h:outputText value="Store Permission"/>
</f:facet>
<h:outputText value="#{permission.permission}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="To Authority"/>
</f:facet>
<h:outputText value="#{permission.authority}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Access"/>
</f:facet>
<h:outputText value="#{permission.accessStatus}"/>
</h:column>
</h:dataTable>
<br/>
<h:outputText styleClass="mainTitle" value="Children"/>