Oved Ourfali has uploaded a new change for review. Change subject: rest: User can't see its permissions (#868304) ......................................................................
rest: User can't see its permissions (#868304) https://bugzilla.redhat.com/868304 When asking for object permissions in the REST API, we call search query, to get all users. This patch changes that to only fetch for users relevant for the permission itself, doing that using GetDbUserById query, and also making it a user query to allow users to view permissions on their objects. Change-Id: I6f21f4b8a845d52276dd7d97b5c7069892bb3b77 Signed-off-by: Oved Ourfali <oourf...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendAssignedPermissionsResourceTest.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendEntityAssignedPermissionsResourceTest.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupAssignedPermissionsResourceTest.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUserAssignedPermissionsResourceTest.java 6 files changed, 44 insertions(+), 30 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/8720/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java index 21831a5..ea243e4 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java @@ -93,7 +93,7 @@ // Users queries GetUserVmsByUserIdAndGroups(VdcQueryAuthType.User), GetTimeLeasedUsersByVmPoolId, - GetDbUserByUserId, + GetDbUserByUserId(VdcQueryAuthType.User), GetUsersByVmid, GetVmsByUserid, GetUserMessage, diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java index da0ba72..90ef1b9 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java @@ -24,7 +24,9 @@ import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.queries.MultilevelAdministrationByPermissionIdParameters; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.common.queries.GetDbUserByUserIdParameters; import org.ovirt.engine.core.common.users.VdcUser; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; @@ -90,16 +92,27 @@ protected Permissions mapCollection(List<permissions> entities) { Permissions collection = new Permissions(); - Map<Guid, DbUser> users = getUsers(); for (permissions entity : entities) { if (entity.getObjectType() != VdcObjectType.System) { - Permission permission = map(entity, users.containsKey(entity.getad_element_id()) ? users.get(entity.getad_element_id()) : null); + Permission permission = map(entity, getUserById(entity.getad_element_id())); collection.getPermissions().add(addLinks(permission, permission.getUser() != null ? suggestedParentType : Group.class)); } } return collection; } + public DbUser getUserById(Guid userId) { + GetDbUserByUserIdParameters queryParameters = new GetDbUserByUserIdParameters(userId); + VdcQueryReturnValue userQueryResponse = runQuery(VdcQueryType.GetDbUserByUserId, queryParameters); + + DbUser returnValue = null; + if (userQueryResponse != null && userQueryResponse.getSucceeded()) { + returnValue = (DbUser) userQueryResponse.getReturnValue(); + } + + return returnValue; + } + public Map<Guid, DbUser> getUsers() { HashMap<Guid, DbUser> users = new HashMap<Guid, DbUser>(); for (DbUser user : asCollection(DbUser.class, getEntity(List.class, SearchType.DBUser, "users:"))) { diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendAssignedPermissionsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendAssignedPermissionsResourceTest.java index bf03542..6d2588e 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendAssignedPermissionsResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendAssignedPermissionsResourceTest.java @@ -150,15 +150,19 @@ protected ArrayList<DbUser> getUsers() { ArrayList<DbUser> users = new ArrayList<DbUser>(); for (int i=0; i < NAMES.length; i++) { - DbUser user = new DbUser(); - user.setuser_id(GUIDS[i]); - user.setname(NAMES[i]); - user.setusername(NAMES[i]); - users.add(user); + users.add(getUserByIdx(i)); } return users; } + protected DbUser getUserByIdx(int idx) { + DbUser user = new DbUser(); + user.setuser_id(GUIDS[idx]); + user.setname(NAMES[idx]); + user.setusername(NAMES[idx]); + return user; + } + protected abstract Permission getModel(); @Override diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendEntityAssignedPermissionsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendEntityAssignedPermissionsResourceTest.java index a0a837e..1eba0ba 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendEntityAssignedPermissionsResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendEntityAssignedPermissionsResourceTest.java @@ -14,10 +14,9 @@ import org.ovirt.engine.core.common.action.PermissionsOperationsParametes; import org.ovirt.engine.core.common.action.VdcActionType; -import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.GetDbUserByUserIdParameters; import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters; import org.ovirt.engine.core.common.queries.MultilevelAdministrationByPermissionIdParameters; -import org.ovirt.engine.core.common.queries.SearchParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; public class BackendEntityAssignedPermissionsResourceTest @@ -83,11 +82,11 @@ public void testList() throws Exception { UriInfo uriInfo = setUpUriExpectations(null); - setUpGetEntityExpectations(VdcQueryType.Search, - SearchParameters.class, - new String[] {"SearchPattern", "SearchTypeValue"}, - new Object[] {"users:", SearchType.DBUser}, - getUsers()); + setUpGetEntityExpectations(VdcQueryType.GetDbUserByUserId, + GetDbUserByUserIdParameters.class, + new String[] {"UserId"}, + new Object[] {GUIDS[1]}, + getUserByIdx(1)); setUpQueryExpectations(""); collection.setUriInfo(uriInfo); diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupAssignedPermissionsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupAssignedPermissionsResourceTest.java index 60dfafc..d6fac0c 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupAssignedPermissionsResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupAssignedPermissionsResourceTest.java @@ -13,10 +13,10 @@ import org.ovirt.engine.api.model.Group; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.businessentities.permissions; -import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.GetDbUserByUserIdParameters; import org.ovirt.engine.core.common.queries.MultilevelAdministrationByAdElementIdParameters; -import org.ovirt.engine.core.common.queries.SearchParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; + public class BackendGroupAssignedPermissionsResourceTest extends AbstractBackendAssignedPermissionsResourceTest { @@ -79,11 +79,11 @@ @Test public void testList() throws Exception { UriInfo uriInfo = setUpUriExpectations(null); - setUpGetEntityExpectations(VdcQueryType.Search, - SearchParameters.class, - new String[] {"SearchPattern", "SearchTypeValue"}, - new Object[] {"users:", SearchType.DBUser}, - getUsers()); + setUpGetEntityExpectations(VdcQueryType.GetDbUserByUserId, + GetDbUserByUserIdParameters.class, + new String[] {"UserId"}, + new Object[] {GUIDS[1]}, + getUserByIdx(1)); setUpQueryExpectations(""); collection.setUriInfo(uriInfo); verifyCollection(getCollection()); diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUserAssignedPermissionsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUserAssignedPermissionsResourceTest.java index fbf1f4e..40c9e3f 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUserAssignedPermissionsResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUserAssignedPermissionsResourceTest.java @@ -13,9 +13,8 @@ import org.ovirt.engine.api.model.User; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.businessentities.permissions; -import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.GetDbUserByUserIdParameters; import org.ovirt.engine.core.common.queries.MultilevelAdministrationByAdElementIdParameters; -import org.ovirt.engine.core.common.queries.SearchParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; public class BackendUserAssignedPermissionsResourceTest @@ -54,12 +53,11 @@ @Test public void testList() throws Exception { UriInfo uriInfo = setUpUriExpectations(null); - - setUpGetEntityExpectations(VdcQueryType.Search, - SearchParameters.class, - new String[] {"SearchPattern", "SearchTypeValue"}, - new Object[] {"users:", SearchType.DBUser}, - getUsers()); + setUpGetEntityExpectations(VdcQueryType.GetDbUserByUserId, + GetDbUserByUserIdParameters.class, + new String[] {"UserId"}, + new Object[] {GUIDS[1]}, + getUserByIdx(1)); setUpQueryExpectations(""); collection.setUriInfo(uriInfo); verifyCollection(getCollection()); -- To view, visit http://gerrit.ovirt.org/8720 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6f21f4b8a845d52276dd7d97b5c7069892bb3b77 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Oved Ourfali <oourf...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches