Merge remote-tracking branch 'remotes/origin/release/V2.6' into merge-2.7/MNT-18558_PermissionIssue

This commit is contained in:
cagache
2018-06-12 16:03:42 +03:00

View File

@@ -35,6 +35,7 @@ import java.util.Map;
import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
@@ -51,6 +52,9 @@ public class DispositionScheduleImpl implements DispositionSchedule,
private NodeService nodeService;
private RecordsManagementServiceRegistry services;
private NodeRef dispositionDefinitionNodeRef;
/** authentication helper */
private AuthenticationUtil authenticationUtil;
private List<DispositionActionDefinition> actions;
private Map<String, DispositionActionDefinition> actionsById;
@@ -62,6 +66,11 @@ public class DispositionScheduleImpl implements DispositionSchedule,
/** Map of disposition definitions by disposition action name */
private Map<String, DispositionActionDefinition> actionsByDispositionActionName;
public void setAuthenticationUtil(AuthenticationUtil authenticationUtil)
{
this.authenticationUtil = authenticationUtil;
}
public DispositionScheduleImpl(RecordsManagementServiceRegistry services, NodeService nodeService, NodeRef nodeRef)
{
// TODO check that we have a disposition definition node reference
@@ -100,13 +109,18 @@ public class DispositionScheduleImpl implements DispositionSchedule,
*/
public boolean isRecordLevelDisposition()
{
boolean result = false;
Boolean value = (Boolean)this.nodeService.getProperty(this.dispositionDefinitionNodeRef, PROP_RECORD_LEVEL_DISPOSITION);
return authenticationUtil.runAsSystem(new AuthenticationUtil.RunAsWork<Boolean>()
{
public Boolean doWork() throws Exception
{
Boolean value = (Boolean)nodeService.getProperty(dispositionDefinitionNodeRef, PROP_RECORD_LEVEL_DISPOSITION);
if (value != null)
{
result = value.booleanValue();
return value.booleanValue();
}
return result;
return null;
}
});
}
/**