Skip to content

Commit

Permalink
JBPM-7069 - Manage Tasks only display tasks if user is set/member of …
Browse files Browse the repository at this point in the history
…Kie Server Human task admin system property (#1166)
  • Loading branch information
cristianonicolai committed Mar 26, 2018
1 parent 9f0efe0 commit e145310
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 98 deletions.
Expand Up @@ -45,7 +45,6 @@
import org.jbpm.kie.services.impl.model.ProcessAssetDesc;
import org.jbpm.kie.services.impl.query.persistence.PersistDataSetListener;
import org.jbpm.kie.services.impl.query.persistence.QueryDefinitionEntity;
import org.jbpm.kie.services.impl.query.preprocessor.BusinessAdminPreprocessor;
import org.jbpm.kie.services.impl.query.preprocessor.BusinessAdminTasksPreprocessor;
import org.jbpm.kie.services.impl.query.preprocessor.DeploymentIdsPreprocessor;
import org.jbpm.kie.services.impl.query.preprocessor.PotOwnerTasksPreprocessor;
Expand Down Expand Up @@ -172,7 +171,7 @@ public void replaceQuery(QueryDefinition queryDefinition) {
} else if (queryDefinition.getTarget().equals(Target.FILTERED_PROCESS)) {
dataSetDefRegistry.registerPreprocessor(sqlDef.getUUID(), new DeploymentIdsPreprocessor(deploymentRolesManager, identityProvider, COLUMN_EXTERNALID));
} else if (queryDefinition.getTarget().equals(Target.FILTERED_BA_TASK)) {
dataSetDefRegistry.registerPreprocessor(sqlDef.getUUID(), new BusinessAdminPreprocessor(identityProvider, metadata));
dataSetDefRegistry.registerPreprocessor(sqlDef.getUUID(), new BusinessAdminTasksPreprocessor(identityProvider, metadata));
dataSetDefRegistry.registerPreprocessor(sqlDef.getUUID(), new DeploymentIdsPreprocessor(deploymentRolesManager, identityProvider, COLUMN_DEPLOYMENTID));
} else if (queryDefinition.getTarget().equals(Target.FILTERED_PO_TASK)) {
dataSetDefRegistry.registerPreprocessor(sqlDef.getUUID(), new PotOwnerTasksPreprocessor(identityProvider, metadata));
Expand Down

This file was deleted.

Expand Up @@ -34,6 +34,11 @@ public class BusinessAdminTasksPreprocessor extends UserTasksPreprocessor {

private static final Logger LOGGER = LoggerFactory.getLogger(BusinessAdminTasksPreprocessor.class);

public static final String ADMIN_USER = System.getProperty("org.jbpm.ht.admin.user",
"Administrator");
public static final String ADMIN_GROUP = System.getProperty("org.jbpm.ht.admin.group",
"Administrators");

private IdentityProvider identityProvider;

public BusinessAdminTasksPreprocessor(IdentityProvider identityProvider, DataSetMetadata metadata) {
Expand All @@ -49,6 +54,11 @@ public void preprocess(DataSetLookup lookup) {
return;
}

if (ADMIN_USER.equals(identityProvider.getName()) ||
identityProvider.getRoles().stream().filter(s -> s.equals(ADMIN_GROUP)).findFirst().isPresent()) {
return;
}

final List<Comparable> orgEntities = new ArrayList<Comparable>(identityProvider.getRoles());
orgEntities.add(identityProvider.getName());
final ColumnFilter columnFilter = equalsTo(COLUMN_ORGANIZATIONAL_ENTITY, orgEntities);
Expand Down
Expand Up @@ -31,25 +31,26 @@
import static org.mockito.Mockito.*;

@RunWith(MockitoJUnitRunner.class)
public class BusinessAdminPreprocessorTest {
public class BusinessAdminTasksPreprocessorTest {

@Mock
IdentityProvider identityProvider;

@Mock
DataSetMetadata metaData;

DataSetLookup dataSetLookup;

BusinessAdminPreprocessor businessAdminPreprocessor;
BusinessAdminTasksPreprocessor preprocessor;

@Before
public void init() {
System.setProperty("org.jbpm.ht.admin.group",
"admins");
System.setProperty("org.jbpm.ht.admin.user",
"admin");
businessAdminPreprocessor = new BusinessAdminPreprocessor(identityProvider, metaData);
preprocessor = new BusinessAdminTasksPreprocessor(identityProvider,
metaData);
}

@Test
Expand All @@ -63,7 +64,7 @@ public void testQueryByGroupBusinessAdmin() {
role2));
when(identityProvider.getName()).thenReturn(userId);

businessAdminPreprocessor.preprocess(dataSetLookup);
preprocessor.preprocess(dataSetLookup);

verifyNoMoreInteractions(dataSetLookup);
assertNull(dataSetLookup.getFirstFilterOp());
Expand All @@ -80,7 +81,7 @@ public void testQueryByUserBusinessAdmin() {
role2));
when(identityProvider.getName()).thenReturn(userId);

businessAdminPreprocessor.preprocess(dataSetLookup);
preprocessor.preprocess(dataSetLookup);

verifyNoMoreInteractions(dataSetLookup);
assertNull(dataSetLookup.getFirstFilterOp());
Expand All @@ -97,9 +98,9 @@ public void testQueryByNoBusinessAdmin() {
role2));
when(identityProvider.getName()).thenReturn(userId);

businessAdminPreprocessor.preprocess(dataSetLookup);
preprocessor.preprocess(dataSetLookup);

assertEquals("TASKID = -1",
assertEquals("ID = role1, role2, userId",
dataSetLookup.getFirstFilterOp().getColumnFilterList().get(0).toString());
}

Expand All @@ -111,9 +112,9 @@ public void testSetUserWithoutRoles() {
when(identityProvider.getRoles()).thenReturn(Collections.emptyList());
when(identityProvider.getName()).thenReturn(userId);

businessAdminPreprocessor.preprocess(dataSetLookup);
preprocessor.preprocess(dataSetLookup);

assertEquals("TASKID = -1",
assertEquals("ID = userId",
dataSetLookup.getFirstFilterOp().getColumnFilterList().get(0).toString());
}
}
Expand Up @@ -16,14 +16,7 @@

package org.jbpm.kie.services.test;

import static org.jbpm.services.api.query.QueryResultMapper.COLUMN_PROCESSID;
import static org.jbpm.services.api.query.QueryResultMapper.COLUMN_PROCESSINSTANCEID;
import static org.jbpm.services.api.query.QueryResultMapper.COLUMN_PROCESSNAME;
import static org.jbpm.services.api.query.QueryResultMapper.COLUMN_START;
import static org.jbpm.services.api.query.QueryResultMapper.COLUMN_STATUS;
import static org.jbpm.services.api.query.QueryResultMapper.COLUMN_TASK_VAR_NAME;
import static org.jbpm.services.api.query.QueryResultMapper.COLUMN_TASK_VAR_VALUE;
import static org.jbpm.services.api.query.QueryResultMapper.COLUMN_VAR_NAME;
import static org.jbpm.services.api.query.QueryResultMapper.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
Expand Down Expand Up @@ -552,20 +545,20 @@ public void testGetTaskInstancesAsBA() {
processInstanceId = processService.startProcess(deploymentUnit.getIdentifier(), "org.jbpm.writedocument", params);
assertNotNull(processInstanceId);

List<UserTaskInstanceDesc> taskInstanceLogs = queryService.query(query.getName(), UserTaskInstanceQueryMapper.get(), new QueryContext());
List<UserTaskInstanceDesc> taskInstanceLogs = queryService.query(query.getName(), UserTaskInstanceQueryMapper.get(), new QueryContext(), QueryParam.groupBy(COLUMN_TASKID));
assertNotNull(taskInstanceLogs);
assertEquals(0, taskInstanceLogs.size());

identityProvider.setName("Administrator");

taskInstanceLogs = queryService.query(query.getName(), UserTaskInstanceQueryMapper.get(), new QueryContext());
taskInstanceLogs = queryService.query(query.getName(), UserTaskInstanceQueryMapper.get(), new QueryContext(), QueryParam.groupBy(COLUMN_TASKID));
assertNotNull(taskInstanceLogs);
assertEquals(1, taskInstanceLogs.size());

identityProvider.setName("salaboy");
identityProvider.setRoles(Arrays.asList("Administrators"));

taskInstanceLogs = queryService.query(query.getName(), UserTaskInstanceQueryMapper.get(), new QueryContext());
taskInstanceLogs = queryService.query(query.getName(), UserTaskInstanceQueryMapper.get(), new QueryContext(), QueryParam.groupBy(COLUMN_TASKID));
assertNotNull(taskInstanceLogs);
assertEquals(1, taskInstanceLogs.size());

Expand Down Expand Up @@ -1034,8 +1027,9 @@ public void testGetFilteredTaskInstancesAsBA() {
query = new SqlQueryDefinition("getTaskInstancesAdmin", dataSourceJNDIname, Target.FILTERED_BA_TASK);
query.setExpression("select ti.activationTime, ti.actualOwner, ti.createdBy, ti.createdOn, ti.deploymentId, "
+ "ti.description, ti.dueDate, ti.name, ti.parentId, ti.priority, ti.processId, ti.processInstanceId, "
+ "ti.processSessionId, ti.status, ti.taskId, ti.workItemId "
+ "from AuditTaskImpl ti");
+ "ti.processSessionId, ti.status, ti.taskId, ti.workItemId, oe.id "
+ "from AuditTaskImpl ti left join PeopleAssignments_BAs ba on ti.taskId = ba.task_id left join "
+ "OrganizationalEntity oe on ba.entity_id = oe.id");

queryService.registerQuery(query);

Expand All @@ -1062,7 +1056,7 @@ public void testGetFilteredTaskInstancesAsBA() {
assertEquals(0, taskInstanceLogs.size());

identityProvider.setName("Administrator");
taskInstanceLogs = queryService.query(query.getName(), UserTaskInstanceQueryMapper.get(), new QueryContext());
taskInstanceLogs = queryService.query(query.getName(), UserTaskInstanceQueryMapper.get(), new QueryContext(), QueryParam.groupBy(COLUMN_TASKID));
assertNotNull(taskInstanceLogs);
assertEquals(1, taskInstanceLogs.size());

Expand Down

0 comments on commit e145310

Please sign in to comment.