This is an automated email from the ASF dual-hosted git repository. bhliva pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit f386f6bf41e0bd32d4fe5e20d913419f88b2639a Author: Oleh Fuks <olegfuk...@gmail.com> AuthorDate: Wed Nov 13 12:24:18 2019 +0200 [DLAB-1266] Fixed issue with switching between project for user (not admin) --- .../java/com/epam/dlab/backendapi/dao/ProjectDAO.java | 2 +- .../java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java | 15 +++++++++++---- .../epam/dlab/backendapi/resources/ProjectResource.java | 7 ++++--- .../com/epam/dlab/backendapi/service/ProjectService.java | 2 +- .../dlab/backendapi/service/impl/ProjectServiceImpl.java | 4 ++-- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java index 95a954c..a9a89f5 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java @@ -16,7 +16,7 @@ public interface ProjectDAO { List<ProjectDTO> getProjectsWithEndpointStatusNotIn(UserInstanceStatus... statuses); - List<ProjectDTO> getUserProjects(UserInfo userInfo); + List<ProjectDTO> getUserProjects(UserInfo userInfo, boolean active); void create(ProjectDTO projectDTO); diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java index 4607155..a74a07b 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java @@ -58,13 +58,11 @@ public class ProjectDAOImpl extends BaseDAO implements ProjectDAO { } @Override - public List<ProjectDTO> getUserProjects(UserInfo userInfo) { + public List<ProjectDTO> getUserProjects(UserInfo userInfo, boolean active) { final Set<String> groups = Stream.concat(userGroupDao.getUserGroups(userInfo.getName()).stream(), userInfo.getRoles().stream()) .collect(Collectors.toSet()); - final String groupsRegex = !groups.isEmpty() ? String.join("|", groups) + "|" + ANYUSER : ANYUSER; - return find(PROJECTS_COLLECTION, and(elemMatch(GROUPS, regexCaseInsensitive(groupsRegex)), - eq(ENDPOINT_STATUS_FIELD, UserInstanceStatus.RUNNING.name())), ProjectDTO.class); + return find(PROJECTS_COLLECTION, userProjectCondition(groups, active), ProjectDTO.class); } @Override @@ -135,6 +133,15 @@ public class ProjectDAOImpl extends BaseDAO implements ProjectDAO { return eq("name", name); } + private Bson userProjectCondition(Set<String> groups, boolean active) { + final String groupsRegex = !groups.isEmpty() ? String.join("|", groups) + "|" + ANYUSER : ANYUSER; + if (active) { + return and(elemMatch(GROUPS, regexCaseInsensitive(groupsRegex)), + eq(ENDPOINT_STATUS_FIELD, UserInstanceStatus.RUNNING.name())); + } + return elemMatch(GROUPS, regexCaseInsensitive(groupsRegex)); + } + private Bson projectAndEndpointCondition(String projectName, String endpointName) { return and(eq("name", projectName), eq("endpoints.name", endpointName)); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java index c361b1b..e75a735 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java @@ -191,12 +191,13 @@ public class ProjectResource { content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ProjectDTO.class))), }) - @Path("/me") @GET + @Path("/me") @Produces(MediaType.APPLICATION_JSON) - public Response getUserProjects(@Parameter(hidden = true) @Auth UserInfo userInfo) { + public Response getUserProjects(@Parameter(hidden = true) @Auth UserInfo userInfo, + @QueryParam("active") @DefaultValue("false") boolean active) { return Response - .ok(projectService.getUserActiveProjects(userInfo)) + .ok(projectService.getUserActiveProjects(userInfo, active)) .build(); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java index 1a94259..113cfa7 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java @@ -12,7 +12,7 @@ public interface ProjectService { List<ProjectManagingDTO> getProjectsForManaging(); - List<ProjectDTO> getUserActiveProjects(UserInfo userInfo); + List<ProjectDTO> getUserActiveProjects(UserInfo userInfo, boolean active); List<ProjectDTO> getProjectsWithStatus(ProjectDTO.Status status); diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java index 16663a4..13dd23c 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java @@ -90,8 +90,8 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public List<ProjectDTO> getUserActiveProjects(UserInfo userInfo) { - return projectDAO.getUserProjects(userInfo); + public List<ProjectDTO> getUserActiveProjects(UserInfo userInfo, boolean active) { + return projectDAO.getUserProjects(userInfo, active); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org