Merge pull request #1272 from Alfresco/feature-3.4/APPS-322

APPS-322: [RM/AGS]User without permissions can create categories when Create full path option is checked in rule
This commit is contained in:
ramunteanu
2020-11-09 10:16:11 +02:00
committed by GitHub

View File

@@ -380,40 +380,33 @@ public abstract class CopyMoveLinkFileToBaseAction extends RMActionExecuterAbstr
*/ */
private NodeRef createChild(final Action action, final NodeRef parent, final String childName, final boolean targetisUnfiledRecords, final boolean lastAsFolder) private NodeRef createChild(final Action action, final NodeRef parent, final String childName, final boolean targetisUnfiledRecords, final boolean lastAsFolder)
{ {
return AuthenticationUtil.runAsSystem(new RunAsWork<NodeRef>() // double check that the child hasn't been created by another thread
NodeRef child = getChild(parent, childName);
if (child == null)
{ {
@Override if (targetisUnfiledRecords)
public NodeRef doWork()
{ {
// double check that the child hasn't been created by another thread // create unfiled folder
NodeRef child = getChild(parent, childName); child = fileFolderService.create(parent, childName, RecordsManagementModel.TYPE_UNFILED_RECORD_FOLDER).getNodeRef();
if (child == null)
{
if (targetisUnfiledRecords)
{
// create unfiled folder
child = fileFolderService.create(parent, childName, RecordsManagementModel.TYPE_UNFILED_RECORD_FOLDER).getNodeRef();
}
else if(lastAsFolder)
{
// create record folder
child = getRecordFolderService().createRecordFolder(parent, childName);
}
else
{
// ensure we are not trying to create a record categtory in a record folder
if(RecordsManagementModel.TYPE_RECORD_FOLDER.equals(getNodeService().getType(parent)))
{
throw new AlfrescoRuntimeException("Unable to execute " + action.getActionDefinitionName() + " action, because the destination path has a record category within a record folder.");
}
// create record category
child = filePlanService.createRecordCategory(parent, childName);
}
}
return child;
} }
}); else if (lastAsFolder)
{
// create record folder
child = getRecordFolderService().createRecordFolder(parent, childName);
}
else
{
// ensure we are not trying to create a record category in a record folder
if (RecordsManagementModel.TYPE_RECORD_FOLDER.equals(getNodeService().getType(parent)))
{
throw new AlfrescoRuntimeException("Unable to execute " + action.getActionDefinitionName() + " action, because the destination path has a record category within a record folder.");
}
// create record category
child = filePlanService.createRecordCategory(parent, childName);
}
}
return child;
} }
/** /**