diff --git a/core/che-core-api-core/src/main/java/org/eclipse/che/commons/subject/Subject.java b/core/che-core-api-core/src/main/java/org/eclipse/che/commons/subject/Subject.java index 2d216f1534..c700753ded 100644 --- a/core/che-core-api-core/src/main/java/org/eclipse/che/commons/subject/Subject.java +++ b/core/che-core-api-core/src/main/java/org/eclipse/che/commons/subject/Subject.java @@ -43,7 +43,7 @@ public interface Subject { @Override public void checkPermission(String domain, String instance, String action) throws ForbiddenException { - + throw new ForbiddenException("User is not authorized to perform " + action + " of " + domain + " with id '" + instance + "'"); } @Override diff --git a/plugins/plugin-maven/maven-server/maven-server-impl/pom.xml b/plugins/plugin-maven/maven-server/maven-server-impl/pom.xml index 40d53c4711..e0c4b33e3a 100644 --- a/plugins/plugin-maven/maven-server/maven-server-impl/pom.xml +++ b/plugins/plugin-maven/maven-server/maven-server-impl/pom.xml @@ -11,8 +11,7 @@ Codenvy, S.A. - initial API and implementation --> - + 4.0.0 che-maven-server diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceManager.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceManager.java index 4a5d90d28b..00be47ee19 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceManager.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceManager.java @@ -246,22 +246,22 @@ public class WorkspaceManager { } /** - * Gets all user's workspaces(workspaces where user is owner). + * Gets list of workspaces which user can read * *

Returned workspaces have either {@link WorkspaceStatus#STOPPED} status * or status defined by their runtime instances(if those exist). * - * @param namespace - * the id of the user whose workspaces should be fetched - * @return the list of workspaces or empty list if user doesn't own any workspace + * @param user + * the id of the user + * @return the list of workspaces or empty list if user can't read any workspace * @throws NullPointerException * when {@code owner} is null * @throws ServerException - * when any server error occurs while getting workspaces with {@link WorkspaceDao#getByNamespace(String)} + * when any server error occurs while getting workspaces with {@link WorkspaceDao#getWorkspaces(String)} */ - public List getWorkspaces(String namespace) throws ServerException { - requireNonNull(namespace, "Required non-null workspace namespace"); - final List workspaces = workspaceDao.getByNamespace(namespace); + public List getWorkspaces(String user) throws ServerException { + requireNonNull(user, "Required non-null user id"); + final List workspaces = workspaceDao.getWorkspaces(user); workspaces.forEach(this::normalizeState); return workspaces; } @@ -701,9 +701,9 @@ public class WorkspaceManager { if (parts.length == 1) { return workspaceDao.get(key); } - final String userName = parts[0]; + final String userId = parts[0]; final String wsName = parts[1]; - final String ownerId = userName.isEmpty() ? sessionUser().getUserId() : userManager.getByName(userName).getId(); + final String ownerId = userId.isEmpty() ? sessionUser().getUserId() : userManager.getByName(userId).getId(); return workspaceDao.get(wsName, ownerId); } diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceService.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceService.java index ca088a6081..2711628758 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceService.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceService.java @@ -179,7 +179,7 @@ public class WorkspaceService extends Service { @Produces(APPLICATION_JSON) @RolesAllowed("user") @GenerateLink(rel = LINK_REL_GET_WORKSPACES) - @ApiOperation(value = "Get the workspaces owned by the current user", + @ApiOperation(value = "Get workspaces which user can read", notes = "This operation can be performed only by authorized user", response = WorkspaceDto.class, responseContainer = "List") diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/WorkspaceDao.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/WorkspaceDao.java index 71fafdbdb1..ebe77194e5 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/WorkspaceDao.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/WorkspaceDao.java @@ -133,13 +133,13 @@ public interface WorkspaceDao { List getByNamespace(String namespace) throws ServerException; /** - * Gets list of workspaces where user is worker + * Gets list of workspaces which user can read * - * @param username - * name of user - * @return list of workspaces where user is worker + * @param userId + * id of user + * @return list of workspaces which user can read * @throws ServerException * when any other error occurs during workspaces fetching */ - List getWorkspaces(String username) throws ServerException; + List getWorkspaces(String userId) throws ServerException; } diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/WorkspaceManagerTest.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/WorkspaceManagerTest.java index 52b3e74341..66c756a174 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/WorkspaceManagerTest.java +++ b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/WorkspaceManagerTest.java @@ -17,12 +17,12 @@ import org.eclipse.che.api.core.model.workspace.WorkspaceStatus; import org.eclipse.che.api.core.notification.EventService; import org.eclipse.che.api.machine.server.MachineManager; import org.eclipse.che.api.machine.server.exception.MachineException; -import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; import org.eclipse.che.api.machine.server.model.impl.MachineConfigImpl; import org.eclipse.che.api.machine.server.model.impl.MachineImpl; import org.eclipse.che.api.machine.server.model.impl.MachineRuntimeInfoImpl; import org.eclipse.che.api.machine.server.model.impl.MachineSourceImpl; import org.eclipse.che.api.machine.server.model.impl.ServerConfImpl; +import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; import org.eclipse.che.api.user.server.UserManager; import org.eclipse.che.api.workspace.server.WorkspaceRuntimes.RuntimeDescriptor; import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl; @@ -208,14 +208,14 @@ public class WorkspaceManagerTest { } @Test - public void shouldBeAbleToGetWorkspacesByOwner() throws Exception { + public void shouldBeAbleToGetWorkspacesAvailableForUser() throws Exception { // given final WorkspaceConfig config = createConfig(); final WorkspaceImpl workspace1 = workspaceManager.createWorkspace(config, "user123", null); - final WorkspaceImpl workspace2 = workspaceManager.createWorkspace(config, "user123", null); + final WorkspaceImpl workspace2 = workspaceManager.createWorkspace(config, "user321", null); - when(workspaceDao.getByNamespace("user123")).thenReturn(asList(workspace1, workspace2)); + when(workspaceDao.getWorkspaces("user123")).thenReturn(asList(workspace1, workspace2)); final RuntimeDescriptor descriptor = createDescriptor(workspace2, RUNNING); when(runtimes.get(workspace2.getId())).thenReturn(descriptor); diff --git a/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/LocalWorkspaceDaoImpl.java b/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/LocalWorkspaceDaoImpl.java index 8aca01479e..9ebba55e62 100644 --- a/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/LocalWorkspaceDaoImpl.java +++ b/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/LocalWorkspaceDaoImpl.java @@ -31,7 +31,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -140,7 +139,7 @@ public class LocalWorkspaceDaoImpl implements WorkspaceDao { } @Override - public List getWorkspaces(String username) throws ServerException { + public List getWorkspaces(String userId) throws ServerException { return new ArrayList<>(workspaces.values()); }