TSK-78: Delete all permissions by access-id.
This commit is contained in:
parent
ecd5bd86a3
commit
ed9ab35704
|
@ -331,4 +331,12 @@ public interface WorkbasketService {
|
|||
*/
|
||||
List<WorkbasketSummary> getDistributionSources(String workbasketKey, String domain)
|
||||
throws NotAuthorizedException, WorkbasketNotFoundException;
|
||||
|
||||
/**
|
||||
* Deletes all WorkbasketAccessItems using the given AccessId of a user.
|
||||
*
|
||||
* @param accessId
|
||||
* of a taskana-user.
|
||||
*/
|
||||
void deleteWorkbasketAuthorizationForAccessId(String accessId);
|
||||
}
|
||||
|
|
|
@ -255,6 +255,18 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteWorkbasketAuthorizationForAccessId(String accessId) {
|
||||
LOGGER.debug("entry to deleteWorkbasketAuthorizationByAccessId(accessId = {})", accessId);
|
||||
try {
|
||||
taskanaEngine.openConnection();
|
||||
workbasketAccessMapper.deleteAccessItemsForAccessId(accessId);
|
||||
} finally {
|
||||
taskanaEngine.returnConnection();
|
||||
LOGGER.debug("exit from deleteWorkbasketAuthorizationByAccessId(accessId={}).", accessId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkAuthorization(String workbasketId,
|
||||
WorkbasketAuthorization workbasketAuthorization) throws NotAuthorizedException {
|
||||
|
|
|
@ -83,6 +83,9 @@ public interface WorkbasketAccessMapper {
|
|||
@Delete("DELETE FROM WORKBASKET_ACCESS_LIST WHERE WORKBASKET_ID = #{workbasketId}")
|
||||
void deleteAllAccessItemsForWorkbasketId(@Param("workbasketId") String workbasketId);
|
||||
|
||||
@Delete("DELETE FROM WORKBASKET_ACCESS_LIST where ACCESS_ID = #{accessId}")
|
||||
void deleteAccessItemsForAccessId(@Param("accessId") String accessId);
|
||||
|
||||
@Select("<script>SELECT MAX(PERM_READ) AS P_READ, MAX(PERM_OPEN) AS P_OPEN, MAX(PERM_APPEND) AS P_APPEND, MAX(PERM_TRANSFER) AS P_TRANSFER, MAX(PERM_DISTRIBUTE) AS P_DISTRIBUTE, MAX(PERM_CUSTOM_1) AS P_CUSTOM_1, MAX(PERM_CUSTOM_2) AS P_CUSTOM_2, MAX(PERM_CUSTOM_3) AS P_CUSTOM_3, MAX(PERM_CUSTOM_4) AS P_CUSTOM_4, MAX(PERM_CUSTOM_5) AS P_CUSTOM_5, MAX(PERM_CUSTOM_6) AS P_CUSTOM_6, MAX(PERM_CUSTOM_7) AS P_CUSTOM_7, MAX(PERM_CUSTOM_8) AS P_CUSTOM_8, MAX(PERM_CUSTOM_9) AS P_CUSTOM_9, MAX(PERM_CUSTOM_10) AS P_CUSTOM_10, MAX(PERM_CUSTOM_11) AS P_CUSTOM_11, MAX(PERM_CUSTOM_12) AS P_CUSTOM_12 "
|
||||
+ "FROM WORKBASKET_ACCESS_LIST "
|
||||
+ "WHERE WORKBASKET_ID = #{workbasketId} "
|
||||
|
|
|
@ -122,14 +122,15 @@ public class UpdateWorkbasketAuthorizationsAccTest extends AbstractAccTest {
|
|||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||
|
||||
String wbKey = "USER_2_1";
|
||||
String wbDomain = "DOMAIN_A";
|
||||
String groupName = "group_2";
|
||||
|
||||
Task newTask = taskService.newTask(wbKey, "DOMAIN_A");
|
||||
Task newTask = taskService.newTask(wbKey, wbDomain);
|
||||
newTask.setClassificationKey("T2100");
|
||||
newTask.setPrimaryObjRef(createObjectReference("COMPANY_A", "SYSTEM_A", "INSTANCE_A", "VNR", "1234567"));
|
||||
Task createdTask = taskService.createTask(newTask);
|
||||
List<TaskSummary> tasks = taskService.createTaskQuery()
|
||||
.workbasketKeyDomainIn(new KeyDomain(wbKey, "DOMAIN_A"))
|
||||
.workbasketKeyDomainIn(new KeyDomain(wbKey, wbDomain))
|
||||
.list();
|
||||
Assert.assertEquals(1, tasks.size());
|
||||
assertThat(createdTask, not(equalTo(null)));
|
||||
|
@ -147,7 +148,7 @@ public class UpdateWorkbasketAuthorizationsAccTest extends AbstractAccTest {
|
|||
|
||||
try {
|
||||
taskService.createTaskQuery()
|
||||
.workbasketKeyDomainIn(new KeyDomain(wbKey, "DOMAIN_A"))
|
||||
.workbasketKeyDomainIn(new KeyDomain(wbKey, wbDomain))
|
||||
.list();
|
||||
fail("NotAuthorizedToQueryWorkbasketException was expected ");
|
||||
} catch (NotAuthorizedToQueryWorkbasketException ignored) {
|
||||
|
@ -235,9 +236,34 @@ public class UpdateWorkbasketAuthorizationsAccTest extends AbstractAccTest {
|
|||
assertFalse(item0.isPermTransfer());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteAccessItemsForAccessId() {
|
||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||
final String accessId = "group_1";
|
||||
final long accessIdCountBefore = workbasketService
|
||||
.createWorkbasketAccessItemQuery()
|
||||
.accessIdIn(accessId)
|
||||
.count();
|
||||
|
||||
workbasketService.deleteWorkbasketAuthorizationForAccessId(accessId);
|
||||
|
||||
final long accessIdCountAfter = workbasketService
|
||||
.createWorkbasketAccessItemQuery()
|
||||
.accessIdIn(accessId)
|
||||
.count();
|
||||
assertTrue(accessIdCountBefore > accessIdCountAfter);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteAccessItemsForAccessIdWithUnusedValuesThrowingNoException() {
|
||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||
workbasketService.deleteWorkbasketAuthorizationForAccessId("");
|
||||
workbasketService.deleteWorkbasketAuthorizationForAccessId(null);
|
||||
workbasketService.deleteWorkbasketAuthorizationForAccessId("123UNUSED456");
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void cleanUpClass() {
|
||||
FileUtils.deleteRecursive("~/data", true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue