mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V2.9 to HEAD
10531: Merged V2.2 to V2.9 9928: Optimise & consolidate get web project user role (ETWOTWO-568) 9962: Reverted rev 9902 of RuleServiceImpl 9964: Fixed transaction read-only declaration 9979: ETWOTWO-572: Allow OpenOffice to be called remotely 9987: Second attempt at fixing ETWOTWO-438: versionable aspect and invite user 10096: Fix for ETWOTWO-507 FSR Service Port 10224: Fix for ETWOTWO-507 (inconsistent results with add and delete together) 10225: Adding logging and making FSR work with absolute directories (ETWOTWO-70 and ETWOONE-81) 10254: ALFCOM-242, ALFCOM-230, ETWOTWO-437 10283: Fixed deployment installer builder to use IJ v1.2.7 10359: Add Display Group for deployment servers to JSF client (ETWOTWO-474) 10536: MT - simple setup/system test 10553: Hid domain objects completely within the UsageDeltaDAO git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10613 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -41,7 +41,6 @@ import org.alfresco.service.cmr.avm.AVMExistsException;
|
||||
import org.alfresco.service.cmr.avm.AVMNotFoundException;
|
||||
import org.alfresco.service.cmr.avm.locking.AVMLock;
|
||||
import org.alfresco.service.cmr.avm.locking.AVMLockingService;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
@@ -50,7 +49,7 @@ import org.alfresco.service.cmr.search.SearchService;
|
||||
import org.alfresco.service.cmr.security.AuthorityService;
|
||||
import org.alfresco.service.cmr.security.AuthorityType;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.namespace.RegexQNamePattern;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.util.MD5;
|
||||
import org.alfresco.util.Pair;
|
||||
import org.apache.commons.logging.Log;
|
||||
@@ -642,19 +641,39 @@ public class AVMLockingServiceImpl implements AVMLockingService
|
||||
}
|
||||
|
||||
// check for content manager role - we allow access to all managers within the same store
|
||||
List<ChildAssociationRef> children = fNodeService.getChildAssocs(
|
||||
webProjectRef, WCMAppModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL);
|
||||
for (ChildAssociationRef child : children)
|
||||
// TODO as part of WCM refactor, consolidate with WebProject.getWebProjectUserRole
|
||||
StringBuilder query = new StringBuilder(128);
|
||||
query.append("+PARENT:\"").append(webProjectRef).append("\" ");
|
||||
query.append("+TYPE:\"").append(WCMAppModel.TYPE_WEBUSER).append("\" ");
|
||||
query.append("+@").append(NamespaceService.WCMAPP_MODEL_PREFIX).append("\\:username:\"");
|
||||
query.append(user);
|
||||
query.append("\"");
|
||||
ResultSet resultSet = fSearchService.query(
|
||||
new StoreRef(this.webProjectStore),
|
||||
SearchService.LANGUAGE_LUCENE,
|
||||
query.toString());
|
||||
List<NodeRef> nodes = resultSet.getNodeRefs();
|
||||
|
||||
if (nodes.size() == 1)
|
||||
{
|
||||
NodeRef childRef = child.getChildRef();
|
||||
if (fNodeService.getProperty(childRef, WCMAppModel.PROP_WEBUSERNAME).equals(user) &&
|
||||
fNodeService.getProperty(childRef, WCMAppModel.PROP_WEBUSERROLE).equals(ROLE_CONTENT_MANAGER))
|
||||
String userrole = (String)fNodeService.getProperty(nodes.get(0), WCMAppModel.PROP_WEBUSERROLE);
|
||||
if (ROLE_CONTENT_MANAGER.equals(userrole))
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug(" GRANTED: Store match and user is ContentManager role in webproject.");
|
||||
return true;
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("GRANTED: Store match and user is ContentManager role in webproject.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (nodes.size() == 0)
|
||||
{
|
||||
logger.warn("hasAccess: user role not found for " + user);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("hasAccess: more than one user role found for " + user);
|
||||
}
|
||||
|
||||
// finally check the owners of the lock against the specified authority
|
||||
List<String> owners = lock.getOwners();
|
||||
|
Reference in New Issue
Block a user