mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)
57143: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3) 56926: Merged V4.1-BUG-FIX (4.1.7) to V4.2-BUG-FIX (4.2.1) 56869: MNT-9543: Folder path on IMAP does work when configured with outlook Call isNodeInSitesLibrary() and getPathFromSites() on behalf of SystemUser to avoid AccessDeniedException in case when repository folder from another site was mapped to user's IMAP folder git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@61768 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1902,31 +1902,40 @@ public class ImapServiceImpl implements ImapService, OnRestoreNodePolicy, OnCrea
|
||||
/**
|
||||
* Return true if provided nodeRef is in Sites/.../documentlibrary
|
||||
*/
|
||||
public boolean isNodeInSitesLibrary(NodeRef nodeRef)
|
||||
public boolean isNodeInSitesLibrary(final NodeRef inputNodeRef)
|
||||
{
|
||||
boolean isInDocLibrary = false;
|
||||
NodeRef parent = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
||||
while (parent != null && !nodeService.getType(parent).equals(SiteModel.TYPE_SITE))
|
||||
return doAsSystem(new RunAsWork<Boolean>()
|
||||
{
|
||||
String parentName = (String) nodeService.getProperty(parent, ContentModel.PROP_NAME);
|
||||
if (parentName.equalsIgnoreCase("documentlibrary"))
|
||||
@Override
|
||||
public Boolean doWork() throws Exception
|
||||
{
|
||||
isInDocLibrary = true;
|
||||
NodeRef nodeRef = inputNodeRef;
|
||||
boolean isInDocLibrary = false;
|
||||
NodeRef parent = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
||||
while (parent != null && !nodeService.getType(parent).equals(SiteModel.TYPE_SITE))
|
||||
{
|
||||
String parentName = (String) nodeService.getProperty(parent, ContentModel.PROP_NAME);
|
||||
if (parentName.equalsIgnoreCase("documentlibrary"))
|
||||
{
|
||||
isInDocLibrary = true;
|
||||
}
|
||||
nodeRef = parent;
|
||||
if (nodeService.getPrimaryParent(nodeRef) != null)
|
||||
{
|
||||
parent = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
||||
}
|
||||
}
|
||||
if (parent == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return nodeService.getType(parent).equals(SiteModel.TYPE_SITE) && isInDocLibrary;
|
||||
}
|
||||
}
|
||||
nodeRef = parent;
|
||||
if (nodeService.getPrimaryParent(nodeRef) != null)
|
||||
{
|
||||
parent = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
||||
}
|
||||
}
|
||||
if (parent == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return nodeService.getType(parent).equals(SiteModel.TYPE_SITE) && isInDocLibrary;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void setNamespaceService(NamespaceService namespaceService)
|
||||
@@ -2008,4 +2017,27 @@ public class ImapServiceImpl implements ImapService, OnRestoreNodePolicy, OnCrea
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPathFromSites(final NodeRef ref)
|
||||
{
|
||||
return doAsSystem(new RunAsWork<String>()
|
||||
{
|
||||
@Override
|
||||
public String doWork() throws Exception
|
||||
{
|
||||
String name = ((String) nodeService.getProperty(ref, ContentModel.PROP_NAME)).toLowerCase();
|
||||
if (nodeService.getType(ref).equals(SiteModel.TYPE_SITE))
|
||||
{
|
||||
return name;
|
||||
}
|
||||
else
|
||||
{
|
||||
NodeRef parent = nodeService.getPrimaryParent(ref).getParentRef();
|
||||
return getPathFromSites(parent) + "/" + name;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user