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