mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Fix for ETHREEOH-1926 - it is now possible for Consumer users to execute a Copy based Simple Workflow
- use of RunAs to execute the removal of the simpleworkflow aspect which was the only reason Consumer users could not perform the action git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@14935 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -308,11 +308,10 @@
|
|||||||
</params>
|
</params>
|
||||||
</action>
|
</action>
|
||||||
|
|
||||||
|
|
||||||
<!-- 'Approve' workflow step for document -->
|
<!-- 'Approve' workflow step for document -->
|
||||||
<action id="approve_doc">
|
<action id="approve_doc">
|
||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">WriteProperties</permission>
|
<permission allow="true">Read</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
<evaluator>org.alfresco.web.action.evaluator.ApproveDocEvaluator</evaluator>
|
<evaluator>org.alfresco.web.action.evaluator.ApproveDocEvaluator</evaluator>
|
||||||
<label>#{actionContext["app:approveStep"]}</label>
|
<label>#{actionContext["app:approveStep"]}</label>
|
||||||
@@ -327,7 +326,7 @@
|
|||||||
<!-- 'Reject' workflow step for document -->
|
<!-- 'Reject' workflow step for document -->
|
||||||
<action id="reject_doc">
|
<action id="reject_doc">
|
||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">WriteProperties</permission>
|
<permission allow="true">Read</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
<evaluator>org.alfresco.web.action.evaluator.RejectDocEvaluator</evaluator>
|
<evaluator>org.alfresco.web.action.evaluator.RejectDocEvaluator</evaluator>
|
||||||
<label>#{actionContext["app:rejectStep"]}</label>
|
<label>#{actionContext["app:rejectStep"]}</label>
|
||||||
@@ -342,7 +341,7 @@
|
|||||||
<!-- 'Approve' workflow step for document details page -->
|
<!-- 'Approve' workflow step for document details page -->
|
||||||
<action id="approve_doc_details">
|
<action id="approve_doc_details">
|
||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">WriteProperties</permission>
|
<permission allow="true">Read</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
<evaluator>org.alfresco.web.action.evaluator.ApproveDocEvaluator</evaluator>
|
<evaluator>org.alfresco.web.action.evaluator.ApproveDocEvaluator</evaluator>
|
||||||
<label>#{actionContext.properties["app:approveStep"]}</label>
|
<label>#{actionContext.properties["app:approveStep"]}</label>
|
||||||
@@ -357,7 +356,7 @@
|
|||||||
<!-- 'Reject' workflow step for document details page-->
|
<!-- 'Reject' workflow step for document details page-->
|
||||||
<action id="reject_doc_details">
|
<action id="reject_doc_details">
|
||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">WriteProperties</permission>
|
<permission allow="true">Read</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
<evaluator>org.alfresco.web.action.evaluator.RejectDocEvaluator</evaluator>
|
<evaluator>org.alfresco.web.action.evaluator.RejectDocEvaluator</evaluator>
|
||||||
<label>#{actionContext.properties["app:rejectStep"]}</label>
|
<label>#{actionContext.properties["app:rejectStep"]}</label>
|
||||||
@@ -372,7 +371,7 @@
|
|||||||
<!-- 'Approve' workflow step for space -->
|
<!-- 'Approve' workflow step for space -->
|
||||||
<action id="approve_space">
|
<action id="approve_space">
|
||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">WriteProperties</permission>
|
<permission allow="true">Read</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
<evaluator>org.alfresco.web.action.evaluator.ApproveDocEvaluator</evaluator>
|
<evaluator>org.alfresco.web.action.evaluator.ApproveDocEvaluator</evaluator>
|
||||||
<label>#{actionContext["app:approveStep"]}</label>
|
<label>#{actionContext["app:approveStep"]}</label>
|
||||||
@@ -387,7 +386,7 @@
|
|||||||
<!-- 'Reject' workflow step for space -->
|
<!-- 'Reject' workflow step for space -->
|
||||||
<action id="reject_space">
|
<action id="reject_space">
|
||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">WriteProperties</permission>
|
<permission allow="true">Read</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
<evaluator>org.alfresco.web.action.evaluator.RejectDocEvaluator</evaluator>
|
<evaluator>org.alfresco.web.action.evaluator.RejectDocEvaluator</evaluator>
|
||||||
<label>#{actionContext["app:rejectStep"]}</label>
|
<label>#{actionContext["app:rejectStep"]}</label>
|
||||||
@@ -402,7 +401,7 @@
|
|||||||
<!-- 'Approve' workflow step for space details page -->
|
<!-- 'Approve' workflow step for space details page -->
|
||||||
<action id="approve_space_details">
|
<action id="approve_space_details">
|
||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">WriteProperties</permission>
|
<permission allow="true">Read</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
<evaluator>org.alfresco.web.action.evaluator.ApproveDocEvaluator</evaluator>
|
<evaluator>org.alfresco.web.action.evaluator.ApproveDocEvaluator</evaluator>
|
||||||
<label>#{actionContext.properties["app:approveStep"]}</label>
|
<label>#{actionContext.properties["app:approveStep"]}</label>
|
||||||
@@ -417,7 +416,7 @@
|
|||||||
<!-- 'Reject' workflow step for space details page-->
|
<!-- 'Reject' workflow step for space details page-->
|
||||||
<action id="reject_space_details">
|
<action id="reject_space_details">
|
||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">WriteProperties</permission>
|
<permission allow="true">Read</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
<evaluator>org.alfresco.web.action.evaluator.RejectDocEvaluator</evaluator>
|
<evaluator>org.alfresco.web.action.evaluator.RejectDocEvaluator</evaluator>
|
||||||
<label>#{actionContext.properties["app:rejectStep"]}</label>
|
<label>#{actionContext.properties["app:rejectStep"]}</label>
|
||||||
|
@@ -33,6 +33,8 @@ import java.util.Map;
|
|||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.model.ApplicationModel;
|
import org.alfresco.model.ApplicationModel;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
|
import org.alfresco.repo.site.SiteServiceException;
|
||||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.CopyService;
|
import org.alfresco.service.cmr.repository.CopyService;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
@@ -64,7 +66,7 @@ public class WorkflowUtil
|
|||||||
*
|
*
|
||||||
* @throws AlfrescoRuntimeException
|
* @throws AlfrescoRuntimeException
|
||||||
*/
|
*/
|
||||||
public static void approve(NodeRef ref, NodeService nodeService, CopyService copyService)
|
public static void approve(final NodeRef ref, final NodeService nodeService, final CopyService copyService)
|
||||||
throws AlfrescoRuntimeException
|
throws AlfrescoRuntimeException
|
||||||
{
|
{
|
||||||
Node docNode = new Node(ref);
|
Node docNode = new Node(ref);
|
||||||
@@ -80,11 +82,11 @@ public class WorkflowUtil
|
|||||||
Boolean approveMove = (Boolean)props.get(ApplicationModel.PROP_APPROVE_MOVE.toString());
|
Boolean approveMove = (Boolean)props.get(ApplicationModel.PROP_APPROVE_MOVE.toString());
|
||||||
NodeRef approveFolder = (NodeRef)props.get(ApplicationModel.PROP_APPROVE_FOLDER.toString());
|
NodeRef approveFolder = (NodeRef)props.get(ApplicationModel.PROP_APPROVE_FOLDER.toString());
|
||||||
|
|
||||||
// first we need to take off the simpleworkflow aspect
|
|
||||||
nodeService.removeAspect(ref, ApplicationModel.ASPECT_SIMPLE_WORKFLOW);
|
|
||||||
|
|
||||||
if (approveMove.booleanValue())
|
if (approveMove.booleanValue())
|
||||||
{
|
{
|
||||||
|
// first we need to take off the simpleworkflow aspect
|
||||||
|
nodeService.removeAspect(ref, ApplicationModel.ASPECT_SIMPLE_WORKFLOW);
|
||||||
|
|
||||||
// move the node to the specified folder
|
// move the node to the specified folder
|
||||||
String qname = QName.createValidLocalName(docNode.getName());
|
String qname = QName.createValidLocalName(docNode.getName());
|
||||||
nodeService.moveNode(ref, approveFolder, ContentModel.ASSOC_CONTAINS,
|
nodeService.moveNode(ref, approveFolder, ContentModel.ASSOC_CONTAINS,
|
||||||
@@ -92,6 +94,17 @@ public class WorkflowUtil
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// first we need to take off the simpleworkflow aspect
|
||||||
|
// NOTE: run as system to allow Consumers to copy an item
|
||||||
|
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Object>()
|
||||||
|
{
|
||||||
|
public String doWork() throws Exception
|
||||||
|
{
|
||||||
|
nodeService.removeAspect(ref, ApplicationModel.ASPECT_SIMPLE_WORKFLOW);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}, AuthenticationUtil.getSystemUserName());
|
||||||
|
|
||||||
// copy the node to the specified folder
|
// copy the node to the specified folder
|
||||||
String name = docNode.getName();
|
String name = docNode.getName();
|
||||||
String qname = QName.createValidLocalName(name);
|
String qname = QName.createValidLocalName(name);
|
||||||
|
Reference in New Issue
Block a user