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