RM-1942 (Hold creator can't view the hold he has created)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.3@97278 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tuna Aksoy
2015-02-17 17:20:18 +00:00
parent 283c2464ec
commit cf4d9ae04b
3 changed files with 151 additions and 7 deletions

View File

@@ -289,8 +289,7 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
)
public void onCreateHold(final ChildAssociationRef childAssocRef)
{
mandatory("childAssocRef", childAssocRef);
setupPermissions(childAssocRef.getParentRef(), childAssocRef.getChildRef());
createContainerElement(childAssocRef);
}
/**
@@ -306,19 +305,37 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
notificationFrequency = TRANSACTION_COMMIT
)
public void onCreateTransfer(final ChildAssociationRef childAssocRef)
{
createContainerElement(childAssocRef);
}
/**
* Helper method to create a container element, e.g. transfer folder or hold
*
* @param childAssocRef
*/
private void createContainerElement(final ChildAssociationRef childAssocRef)
{
mandatory("childAssocRef", childAssocRef);
final NodeRef childRef = childAssocRef.getChildRef();
NodeRef childRef = childAssocRef.getChildRef();
setupPermissions(childAssocRef.getParentRef(), childRef);
grantFilingPermissionToCreator(childRef);
}
/**
* Helper method to give filing permissions to the currently logged in user who creates the node (transfer folder, hold, etc.)
*
* @param nodeRef The node reference of the created object
*/
private void grantFilingPermissionToCreator(final NodeRef nodeRef)
{
final String user = AuthenticationUtil.getFullyAuthenticatedUser();
final boolean hasUserPermission = authenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Boolean>()
{
public Boolean doWork()
{
return getPermissionService().hasPermission(childRef, RMPermissionModel.FILING) == AccessStatus.ALLOWED;
return getPermissionService().hasPermission(nodeRef, RMPermissionModel.FILING) == AccessStatus.ALLOWED;
}
}, user);
@@ -328,7 +345,7 @@ public class FilePlanPermissionServiceImpl extends ServiceBaseImpl
{
public Void doWork()
{
getPermissionService().setPermission(childRef, user, RMPermissionModel.FILING, true);
getPermissionService().setPermission(nodeRef, user, RMPermissionModel.FILING, true);
return null;
}
});