public UserOperationLogContextEntryBuilder inContextOf(JobEntity job) { entry.setJobDefinitionId(job.getJobDefinitionId()); entry.setProcessInstanceId(job.getProcessInstanceId()); entry.setProcessDefinitionId(job.getProcessDefinitionId()); entry.setProcessDefinitionKey(job.getProcessDefinitionKey()); entry.setDeploymentId(job.getDeploymentId()); return this; }
protected void checkAuthorization(CommandContext commandContext) { AuthorizationManager authorizationManager = commandContext.getAuthorizationManager(); if (jobId != null) { JobManager jobManager = commandContext.getJobManager(); JobEntity job = jobManager.findJobById(jobId); if (job != null) { String processInstanceId = job.getProcessInstanceId(); if (processInstanceId != null) { authorizationManager.checkUpdateProcessInstanceById(processInstanceId); } else { // start timer job is not assigned to a specific process // instance, that's why we have to check whether there // exists a UPDATE_INSTANCES permission on process definition or // a UPDATE permission on any process instance String processDefinitionKey = job.getProcessDefinitionKey(); if (processDefinitionKey != null) { authorizationManager.checkUpdateProcessInstanceByProcessDefinitionKey( processDefinitionKey); } } // if (processInstanceId == null && processDefinitionKey == null): // job is not assigned to any process instance nor process definition // then it is always possible to activate/suspend the corresponding job // -> no authorization check necessary } } else if (jobDefinitionId != null) { JobDefinitionManager jobDefinitionManager = commandContext.getJobDefinitionManager(); JobDefinitionEntity jobDefinition = jobDefinitionManager.findById(jobDefinitionId); if (jobDefinition != null) { String processDefinitionKey = jobDefinition.getProcessDefinitionKey(); authorizationManager.checkUpdateProcessInstanceByProcessDefinitionKey(processDefinitionKey); } } else if (processInstanceId != null) { authorizationManager.checkUpdateProcessInstanceById(processInstanceId); } else if (processDefinitionId != null) { authorizationManager.checkUpdateProcessInstanceByProcessDefinitionId(processDefinitionId); } else if (processDefinitionKey != null) { authorizationManager.checkUpdateProcessInstanceByProcessDefinitionKey(processDefinitionKey); } }