From e42a7fd9fbddd807218a22aec2f746e18c0fcf35 Mon Sep 17 00:00:00 2001 From: Raluca Munteanu Date: Fri, 6 Nov 2020 11:21:26 +0200 Subject: [PATCH 1/2] APPS-322: [RM/AGS]User without permissions can create categories when Create full path option is checked in rule --- .../impl/CopyMoveLinkFileToBaseAction.java | 50 +++++++------------ 1 file changed, 18 insertions(+), 32 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CopyMoveLinkFileToBaseAction.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CopyMoveLinkFileToBaseAction.java index f54e63d4cd..e6d9abb93a 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CopyMoveLinkFileToBaseAction.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CopyMoveLinkFileToBaseAction.java @@ -380,40 +380,26 @@ public abstract class CopyMoveLinkFileToBaseAction extends RMActionExecuterAbstr */ private NodeRef createChild(final Action action, final NodeRef parent, final String childName, final boolean targetisUnfiledRecords, final boolean lastAsFolder) { - return AuthenticationUtil.runAsSystem(new RunAsWork() - { - @Override - public NodeRef doWork() - { - // double check that the child hasn't been created by another thread - NodeRef child = getChild(parent, childName); - 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); - } + // double check that the child hasn't been created by another thread + NodeRef child = getChild(parent, childName); + 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 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."); } - return child; + + // create record category + child = filePlanService.createRecordCategory(parent, childName); } - }); + } + return child; } /** From eeec51f10705e51aebb02cca5234abff31cb2143 Mon Sep 17 00:00:00 2001 From: Raluca Munteanu Date: Fri, 6 Nov 2020 11:28:21 +0200 Subject: [PATCH 2/2] APPS-322: [RM/AGS]User without permissions can create categories when Create full path option is checked in rule - Formatted code --- .../impl/CopyMoveLinkFileToBaseAction.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CopyMoveLinkFileToBaseAction.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CopyMoveLinkFileToBaseAction.java index e6d9abb93a..c2917817ef 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CopyMoveLinkFileToBaseAction.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/CopyMoveLinkFileToBaseAction.java @@ -382,16 +382,23 @@ public abstract class CopyMoveLinkFileToBaseAction extends RMActionExecuterAbstr { // double check that the child hasn't been created by another thread NodeRef child = getChild(parent, childName); - if (child == null) { - if (targetisUnfiledRecords) { + if (child == null) + { + if (targetisUnfiledRecords) + { // create unfiled folder child = fileFolderService.create(parent, childName, RecordsManagementModel.TYPE_UNFILED_RECORD_FOLDER).getNodeRef(); - } else if (lastAsFolder) { + } + else if (lastAsFolder) + { // create record folder child = getRecordFolderService().createRecordFolder(parent, childName); - } else { + } + else + { // ensure we are not trying to create a record category in a record folder - if (RecordsManagementModel.TYPE_RECORD_FOLDER.equals(getNodeService().getType(parent))) { + 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."); }