You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by of...@apache.org on 2019/11/13 10:24:40 UTC
[incubator-dlab] 01/01: [DLAB-1266] Fixed issue with switching
between project for user (not admin)
This is an automated email from the ASF dual-hosted git repository.
ofuks pushed a commit to branch DLAB-1266
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit e2b69beaf3f3c18f910faa8dacf914a7c3f5fa4a
Author: Oleh Fuks <ol...@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 fecf868..e4a10b4 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
@@ -35,7 +35,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 ecddde1..5e79983 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
@@ -77,13 +77,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
@@ -154,6 +152,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 e7ee7a8..7ec1a26 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
@@ -210,12 +210,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 814aff3..d4c8851 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
@@ -31,7 +31,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 049e17e..9233083 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
@@ -109,8 +109,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-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org