From 40d392d887d85e1b1c4188bf5ec6246d5ab9f315 Mon Sep 17 00:00:00 2001 From: BVier <26220150+BVier@users.noreply.github.com> Date: Wed, 24 Jan 2018 16:26:06 +0100 Subject: [PATCH] TSK-72: Add 'GetPermissionsForWorkbasketKey' to WorkbasketService --- .../java/pro/taskana/WorkbasketService.java | 8 +++ .../taskana/impl/WorkbasketServiceImpl.java | 52 ++++++++++++++++++- .../mappings/WorkbasketAccessMapper.java | 24 ++++++++- .../workbasket/GetWorkbasketAccTest.java | 32 +++++++++--- .../src/test/resources/sql/workbasket.sql | 2 +- 5 files changed, 109 insertions(+), 9 deletions(-) diff --git a/lib/taskana-core/src/main/java/pro/taskana/WorkbasketService.java b/lib/taskana-core/src/main/java/pro/taskana/WorkbasketService.java index d3fa39c2e..ba006e32d 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/WorkbasketService.java +++ b/lib/taskana-core/src/main/java/pro/taskana/WorkbasketService.java @@ -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 getPermissionsForWorkbasket(String workbasketKey); + } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketServiceImpl.java index 01c8ebba7..d3bac9c3d 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketServiceImpl.java @@ -299,7 +299,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { CurrentUserContext.getUserid(), workbasketAuthorization.name(), workbasketKey); List 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 getPermissionsForWorkbasket(String workbasketKey) { + List 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 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(); diff --git a/lib/taskana-core/src/main/java/pro/taskana/model/mappings/WorkbasketAccessMapper.java b/lib/taskana-core/src/main/java/pro/taskana/model/mappings/WorkbasketAccessMapper.java index 7c646dfcf..0a36635ba 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/model/mappings/WorkbasketAccessMapper.java +++ b/lib/taskana-core/src/main/java/pro/taskana/model/mappings/WorkbasketAccessMapper.java @@ -110,6 +110,28 @@ public interface WorkbasketAccessMapper { @Delete("DELETE FROM WORKBASKET_ACCESS_LIST where id = #{id}") void delete(@Param("id") String id); + @Select("") + @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 accessIds); + @Select("