TSK-72: Add 'GetPermissionsForWorkbasketKey' to WorkbasketService
This commit is contained in:
parent
87e11970f3
commit
40d392d887
|
@ -167,4 +167,12 @@ public interface WorkbasketService {
|
|||
*/
|
||||
Workbasket newWorkbasket();
|
||||
|
||||
/**
|
||||
* Returns a set with all permissions of the current user at this workbasket.
|
||||
*
|
||||
* @param workbasketKey
|
||||
* @return a Set with all permissions
|
||||
*/
|
||||
List<WorkbasketAuthorization> getPermissionsForWorkbasket(String workbasketKey);
|
||||
|
||||
}
|
||||
|
|
|
@ -299,7 +299,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
|||
CurrentUserContext.getUserid(), workbasketAuthorization.name(), workbasketKey);
|
||||
|
||||
List<WorkbasketAccessItem> accessItems = workbasketAccessMapper
|
||||
.findByWorkbasketAndAccessIdAndAuthorizations(workbasketKey, accessIds, workbasketAuthorization.name());
|
||||
.findByWorkbasketAndAccessIdAndAuthorization(workbasketKey, accessIds, workbasketAuthorization.name());
|
||||
|
||||
if (accessItems.size() <= 0) {
|
||||
throw new NotAuthorizedException("Not authorized. Authorization '" + workbasketAuthorization.name()
|
||||
|
@ -348,6 +348,14 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WorkbasketAuthorization> getPermissionsForWorkbasket(String workbasketKey) {
|
||||
List<WorkbasketAuthorization> permissions = new ArrayList<>();
|
||||
WorkbasketAccessItem wbAcc = workbasketAccessMapper.findByWorkbasketAndAccessId(workbasketKey, CurrentUserContext.getAccessIds());
|
||||
this.addWorkbasketAccessItemValuesToPermissionSet(wbAcc, permissions);
|
||||
return permissions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorkbasketQuery createWorkbasketQuery() {
|
||||
return new WorkbasketQueryImpl(taskanaEngine, workbasketAccessMapper);
|
||||
|
@ -371,6 +379,48 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
|||
}
|
||||
}
|
||||
|
||||
private void addWorkbasketAccessItemValuesToPermissionSet(WorkbasketAccessItem workbasketAccessItem, List<WorkbasketAuthorization> permissions) {
|
||||
if (workbasketAccessItem.isPermOpen()) {
|
||||
permissions.add(WorkbasketAuthorization.OPEN);
|
||||
}
|
||||
if (workbasketAccessItem.isPermRead()) {
|
||||
permissions.add(WorkbasketAuthorization.READ);
|
||||
}
|
||||
if (workbasketAccessItem.isPermAppend()) {
|
||||
permissions.add(WorkbasketAuthorization.APPEND);
|
||||
}
|
||||
if (workbasketAccessItem.isPermTransfer()) {
|
||||
permissions.add(WorkbasketAuthorization.TRANSFER);
|
||||
}
|
||||
if (workbasketAccessItem.isPermDistribute()) {
|
||||
permissions.add(WorkbasketAuthorization.DISTRIBUTE);
|
||||
}
|
||||
if (workbasketAccessItem.isPermCustom1()) {
|
||||
permissions.add(WorkbasketAuthorization.CUSTOM_1);
|
||||
}
|
||||
if (workbasketAccessItem.isPermCustom2()) {
|
||||
permissions.add(WorkbasketAuthorization.CUSTOM_2);
|
||||
}
|
||||
if (workbasketAccessItem.isPermCustom3()) {
|
||||
permissions.add(WorkbasketAuthorization.CUSTOM_3);
|
||||
}
|
||||
if (workbasketAccessItem.isPermCustom4()) {
|
||||
permissions.add(WorkbasketAuthorization.CUSTOM_4);
|
||||
}
|
||||
if (workbasketAccessItem.isPermCustom5()) {
|
||||
permissions.add(WorkbasketAuthorization.CUSTOM_5);
|
||||
}
|
||||
if (workbasketAccessItem.isPermCustom6()) {
|
||||
permissions.add(WorkbasketAuthorization.CUSTOM_6);
|
||||
}
|
||||
if (workbasketAccessItem.isPermCustom7()) {
|
||||
permissions.add(WorkbasketAuthorization.CUSTOM_7);
|
||||
}
|
||||
if (workbasketAccessItem.isPermCustom8()) {
|
||||
permissions.add(WorkbasketAuthorization.CUSTOM_8);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Workbasket newWorkbasket() {
|
||||
return new WorkbasketImpl();
|
||||
|
|
|
@ -110,6 +110,28 @@ public interface WorkbasketAccessMapper {
|
|||
@Delete("DELETE FROM WORKBASKET_ACCESS_LIST where id = #{id}")
|
||||
void delete(@Param("id") String id);
|
||||
|
||||
@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 "
|
||||
+ "FROM WORKBASKET_ACCESS_LIST "
|
||||
+ "WHERE WORKBASKET_KEY = #{workbasketKey} "
|
||||
+ "AND ACCESS_ID IN(<foreach item='item' collection='accessIds' separator=',' >#{item}</foreach>)"
|
||||
+ "</script>")
|
||||
@Results(value = {
|
||||
@Result(property = "permRead", column = "P_READ"),
|
||||
@Result(property = "permOpen", column = "P_OPEN"),
|
||||
@Result(property = "permAppend", column = "P_APPEND"),
|
||||
@Result(property = "permTransfer", column = "P_TRANSFER"),
|
||||
@Result(property = "permDistribute", column = "P_DISTRIBUTE"),
|
||||
@Result(property = "permCustom1", column = "P_CUSTOM_1"),
|
||||
@Result(property = "permCustom2", column = "P_CUSTOM_2"),
|
||||
@Result(property = "permCustom3", column = "P_CUSTOM_3"),
|
||||
@Result(property = "permCustom4", column = "P_CUSTOM_4"),
|
||||
@Result(property = "permCustom5", column = "P_CUSTOM_5"),
|
||||
@Result(property = "permCustom6", column = "P_CUSTOM_6"),
|
||||
@Result(property = "permCustom7", column = "P_CUSTOM_7"),
|
||||
@Result(property = "permCustom8", column = "P_CUSTOM_8") })
|
||||
WorkbasketAccessItem findByWorkbasketAndAccessId(
|
||||
@Param("workbasketKey") String workbasketKey, @Param("accessIds") List<String> accessIds);
|
||||
|
||||
@Select("<script>SELECT ID, WORKBASKET_KEY, ACCESS_ID, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8 "
|
||||
+ "FROM WORKBASKET_ACCESS_LIST "
|
||||
+ "WHERE WORKBASKET_KEY = #{workbasketKey} "
|
||||
|
@ -144,7 +166,7 @@ public interface WorkbasketAccessMapper {
|
|||
@Result(property = "permCustom6", column = "PERM_CUSTOM_6"),
|
||||
@Result(property = "permCustom7", column = "PERM_CUSTOM_7"),
|
||||
@Result(property = "permCustom8", column = "PERM_CUSTOM_8") })
|
||||
List<WorkbasketAccessItem> findByWorkbasketAndAccessIdAndAuthorizations(
|
||||
List<WorkbasketAccessItem> findByWorkbasketAndAccessIdAndAuthorization(
|
||||
@Param("workbasketKey") String workbasketKey, @Param("accessIds") List<String> accessIds,
|
||||
@Param("authorization") String authorization);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package acceptance.workbasket;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import org.h2.store.fs.FileUtils;
|
||||
import org.junit.AfterClass;
|
||||
|
@ -15,6 +16,7 @@ import pro.taskana.exceptions.InvalidArgumentException;
|
|||
import pro.taskana.exceptions.InvalidWorkbasketException;
|
||||
import pro.taskana.exceptions.NotAuthorizedException;
|
||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||
import pro.taskana.model.WorkbasketAuthorization;
|
||||
import pro.taskana.model.WorkbasketType;
|
||||
import pro.taskana.security.JAASRunner;
|
||||
import pro.taskana.security.WithAccessId;
|
||||
|
@ -31,19 +33,37 @@ public class GetWorkbasketAccTest extends AbstractAccTest {
|
|||
|
||||
@WithAccessId(
|
||||
userName = "user_1_1",
|
||||
groupNames = { "teamlead_1" })
|
||||
groupNames = {"group_1"})
|
||||
@Test
|
||||
public void testGetWorkbasket()
|
||||
throws SQLException, NotAuthorizedException, InvalidArgumentException, WorkbasketNotFoundException,
|
||||
InvalidWorkbasketException {
|
||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||
Workbasket workbasket = workbasketService.getWorkbasket("WBI:100000000000000000000000000000000001");
|
||||
|
||||
Workbasket workbasket = workbasketService.getWorkbasket("WBI:100000000000000000000000000000000007");
|
||||
|
||||
Assert.assertEquals("DOMAIN_A", workbasket.getDomain());
|
||||
Assert.assertEquals("Gruppenpostkorb KSC", workbasket.getDescription());
|
||||
Assert.assertEquals("Gruppenpostkorb KSC", workbasket.getName());
|
||||
Assert.assertEquals("GPK_KSC", workbasket.getKey());
|
||||
Assert.assertEquals(WorkbasketType.GROUP, workbasket.getType());
|
||||
Assert.assertEquals("PPK User 2 KSC 1", workbasket.getDescription());
|
||||
Assert.assertEquals("PPK User 2 KSC 1", workbasket.getName());
|
||||
Assert.assertEquals("USER_1_2", workbasket.getKey());
|
||||
Assert.assertEquals(WorkbasketType.PERSONAL, workbasket.getType());
|
||||
Assert.assertEquals("Peter Maier", workbasket.getOwner());
|
||||
Assert.assertEquals("Versicherung", workbasket.getOrgLevel1());
|
||||
}
|
||||
|
||||
@WithAccessId(
|
||||
userName = "user_1_1",
|
||||
groupNames = {"group_1"})
|
||||
@Test
|
||||
public void testGetWorkbasketPermissions() {
|
||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||
List<WorkbasketAuthorization> permissions = workbasketService.getPermissionsForWorkbasket("USER_1_2");
|
||||
|
||||
Assert.assertEquals(4, permissions.size());
|
||||
Assert.assertTrue(permissions.contains(WorkbasketAuthorization.READ));
|
||||
Assert.assertTrue(permissions.contains(WorkbasketAuthorization.OPEN));
|
||||
Assert.assertTrue(permissions.contains(WorkbasketAuthorization.TRANSFER));
|
||||
Assert.assertTrue(permissions.contains(WorkbasketAuthorization.APPEND));
|
||||
}
|
||||
|
||||
@Test(expected = WorkbasketNotFoundException.class)
|
||||
|
|
|
@ -10,7 +10,7 @@ INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000003', 'GPK_
|
|||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000004', 'TEAMLEAD_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK Teamlead KSC 1', 'DOMAIN_A', 'PERSONAL', 'PPK Teamlead KSC 1', '', '', '', '', '', '', '', '', '');
|
||||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000005', 'TEAMLEAD_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK Teamlead KSC 2', 'DOMAIN_A', 'PERSONAL', 'PPK Teamlead KSC 2', '', '', '', '', '', '', '', '', '');
|
||||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000006', 'USER_1_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 1 KSC 1', 'DOMAIN_A', 'PERSONAL', 'PPK User 1 KSC 1', '', '', '', '', '', '', '', '', '');
|
||||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000007', 'USER_1_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 2 KSC 1', 'DOMAIN_A', 'PERSONAL', 'PPK User 2 KSC 1', '', '', '', '', '', '', '', '', '');
|
||||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000007', 'USER_1_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 2 KSC 1', 'DOMAIN_A', 'PERSONAL', 'PPK User 2 KSC 1', 'Peter Maier', '', '', '', '', 'Versicherung', '', '', '');
|
||||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000008', 'USER_2_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 1 KSC 2', 'DOMAIN_A', 'PERSONAL', 'PPK User 1 KSC 2', '', '', '', '', '', '', '', '', '');
|
||||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000009', 'USER_2_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 2 KSC 2', 'DOMAIN_A', 'PERSONAL', 'PPK User 2 KSC 2', '', '', '', '', '', '', '', '', '');
|
||||
|
||||
|
|
Loading…
Reference in New Issue