private List<UserPermissionDto> findUserPermissions(DbSession dbSession, OrganizationDto org, List<UserDto> users, Optional<ProjectId> project) { if (users.isEmpty()) { return emptyList(); } List<Integer> userIds = users.stream().map(UserDto::getId).collect(Collectors.toList()); PermissionQuery query = PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setComponentUuid(project.map(ProjectId::getUuid).orElse(null)) .withAtLeastOnePermission() .build(); return dbClient.userPermissionDao().selectUserPermissionsByQuery(dbSession, query, userIds); } }
@Test public void create_query() { PermissionQuery quey = PermissionQuery.builder() .setComponentUuid("COMPONENT_UUID") .setOrganizationUuid("ORGANIZATION_UUID") .setPermission("user") .setSearchQuery("sonar") .build(); assertThat(quey.getComponentUuid()).isEqualTo("COMPONENT_UUID"); assertThat(quey.getOrganizationUuid()).isEqualTo("ORGANIZATION_UUID"); assertThat(quey.getPermission()).isEqualTo("user"); assertThat(quey.getSearchQuery()).isEqualTo("sonar"); }
private static PermissionQuery buildPermissionQuery(Request request, OrganizationDto org, Optional<ProjectId> project) { String textQuery = request.param(Param.TEXT_QUERY); PermissionQuery.Builder permissionQuery = PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setPermission(request.param(PARAM_PERMISSION)) .setPageIndex(request.mandatoryParamAsInt(Param.PAGE)) .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE)) .setSearchQuery(textQuery); if (project.isPresent()) { permissionQuery.setComponentUuid(project.get().getUuid()); } return permissionQuery.build(); }
private static PermissionQuery buildPermissionQuery(Request request, OrganizationDto organization, Optional<ProjectId> project) { String textQuery = request.param(Param.TEXT_QUERY); String permission = request.param(PARAM_PERMISSION); PermissionQuery.Builder permissionQuery = PermissionQuery.builder() .setOrganizationUuid(organization.getUuid()) .setPermission(permission) .setPageIndex(request.mandatoryParamAsInt(Param.PAGE)) .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE)) .setSearchQuery(textQuery); project.ifPresent(projectId -> permissionQuery.setComponentUuid(projectId.getUuid())); if (permission != null) { if (project.isPresent()) { validateProjectPermission(permission); } else { validateGlobalPermission(permission); } } if (textQuery == null) { permissionQuery.withAtLeastOnePermission(); } return permissionQuery.build(); }
private static PermissionQuery buildPermissionQuery(Request request, OrganizationDto org, Optional<ProjectId> project) { String textQuery = request.param(Param.TEXT_QUERY); PermissionQuery.Builder permissionQuery = PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setPermission(request.param(PARAM_PERMISSION)) .setPageIndex(request.mandatoryParamAsInt(Param.PAGE)) .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE)) .setSearchQuery(textQuery); if (project.isPresent()) { permissionQuery.setComponentUuid(project.get().getUuid()); } if (textQuery == null) { permissionQuery.withAtLeastOnePermission(); } return permissionQuery.build(); }
private List<UserPermissionDto> findUserPermissions(DbSession dbSession, OrganizationDto org, List<UserDto> users, Optional<ProjectId> project) { if (users.isEmpty()) { return emptyList(); } List<Integer> userIds = users.stream().map(UserDto::getId).collect(Collectors.toList()); PermissionQuery query = PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setComponentUuid(project.map(ProjectId::getUuid).orElse(null)) .withAtLeastOnePermission() .build(); return dbClient.userPermissionDao().selectUserPermissionsByQuery(dbSession, query, userIds); } }
PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).withAtLeastOnePermission().setComponentUuid(project1.uuid()).build(); expectPermissions(query, asList(user2.getId(), user1.getId()), perm3, perm2, perm1); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).setPermission("missing").setComponentUuid(project1.uuid()).build(); expectPermissions(query, emptyList()); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).setSearchQuery("Mari").withAtLeastOnePermission().setComponentUuid(project1.uuid()).build(); expectPermissions(query, asList(user2.getId(), user1.getId()), perm3, perm2, perm1); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).setSearchQuery("Mari").setPermission(ISSUE_ADMIN).setComponentUuid(project1.uuid()).build(); expectPermissions(query, asList(user2.getId(), user1.getId()), perm3, perm2); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).setSearchQuery("Unknown").setComponentUuid(project1.uuid()).build(); expectPermissions(query, emptyList()); query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).setComponentUuid("missing").withAtLeastOnePermission().build(); expectPermissions(query, emptyList());
PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(project1.getOrganizationUuid()).setComponentUuid(project1.uuid()).withAtLeastOnePermission().build(); assertThat(underTest.selectUserIdsByQuery(dbSession, query)).containsExactly(user2.getId(), user1.getId()); query = PermissionQuery.builder().setOrganizationUuid("anotherOrg").setComponentUuid(project1.uuid()).withAtLeastOnePermission().build(); assertThat(underTest.selectUserIdsByQuery(dbSession, query)).isEmpty(); query = PermissionQuery.builder().setOrganizationUuid(org1.getUuid()).setComponentUuid("missing").withAtLeastOnePermission().build(); assertThat(underTest.selectUserIdsByQuery(dbSession, query)).isEmpty(); query = PermissionQuery.builder().setOrganizationUuid(org1.getUuid()).setSearchQuery("mariu").setComponentUuid(project1.uuid()).build(); assertThat(underTest.selectUserIdsByQuery(dbSession, query)).containsExactly(user1.getId());
@Test public void select_groups_by_query_with_project_permissions_on_private_projects() { GroupDto group1 = db.users().insertGroup(); GroupDto group2 = db.users().insertGroup(); GroupDto group3 = db.users().insertGroup(); ComponentDto project = db.components().insertPrivateProject(); ComponentDto anotherProject = db.components().insertPrivateProject(); db.users().insertProjectPermissionOnGroup(group1, SCAN.getKey(), project); db.users().insertProjectPermissionOnGroup(group1, PROVISION_PROJECTS.getKey(), project); db.users().insertProjectPermissionOnGroup(group1, ADMIN, anotherProject); db.users().insertProjectPermissionOnGroup(group3, UserRole.SCAN, anotherProject); db.users().insertPermissionOnGroup(group2, SCAN); PermissionQuery.Builder builderOnComponent = newQuery().setComponentUuid(project.uuid()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.withAtLeastOnePermission().build())).containsOnlyOnce(group1.getName()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.setPermission(SCAN_EXECUTION).build())).containsOnlyOnce(group1.getName()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.setPermission(USER).build())).isEmpty(); }
private PermissionQuery buildPermissionQuery(Request request, OrganizationDto organization, Optional<ProjectId> project) { String textQuery = request.param(Param.TEXT_QUERY); String permission = request.param(PARAM_PERMISSION); PermissionQuery.Builder permissionQuery = PermissionQuery.builder() .setOrganizationUuid(organization.getUuid()) .setPermission(permission) .setPageIndex(request.mandatoryParamAsInt(Param.PAGE)) .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE)) .setSearchQuery(textQuery); project.ifPresent(projectId -> permissionQuery.setComponentUuid(projectId.getUuid())); if (permission != null) { if (project.isPresent()) { requestValidator.validateProjectPermission(permission); } else { validateGlobalPermission(permission); } } return permissionQuery.build(); }
@Test public void select_groups_by_query_with_project_permissions_on_public_projects() { GroupDto group1 = db.users().insertGroup(); GroupDto group2 = db.users().insertGroup(); GroupDto group3 = db.users().insertGroup(); ComponentDto project = db.components().insertPublicProject(); ComponentDto anotherProject = db.components().insertPublicProject(); db.users().insertProjectPermissionOnGroup(group1, "p1", project); db.users().insertProjectPermissionOnGroup(group1, "p2", project); db.users().insertProjectPermissionOnAnyone("p3", project); db.users().insertProjectPermissionOnGroup(group1, "p4", anotherProject); db.users().insertProjectPermissionOnAnyone("p4", anotherProject); db.users().insertProjectPermissionOnGroup(group3, "p1", anotherProject); db.users().insertPermissionOnGroup(group2, "p5"); PermissionQuery.Builder builderOnComponent = newQuery().setComponentUuid(project.uuid()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.withAtLeastOnePermission().build())).containsOnlyOnce(group1.getName()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.setPermission("p1").build())).containsOnlyOnce(group1.getName()); assertThat(underTest.selectGroupNamesByQuery(dbSession, builderOnComponent.setPermission("p3").build())).containsOnlyOnce(ANYONE); }
private List<String> selectProjectPermissionGroups(ComponentDto project, String permission) { PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(project.getOrganizationUuid()).setPermission(permission).setComponentUuid(project.uuid()).build(); return db.getDbClient().groupPermissionDao().selectGroupNamesByQuery(db.getSession(), query); }
private List<String> selectProjectPermissionGroups(ComponentDto project, String permission) { PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(project.getOrganizationUuid()).setPermission(permission).setComponentUuid(project.uuid()).build(); return db.getDbClient().groupPermissionDao().selectGroupNamesByQuery(db.getSession(), query); }
private List<Integer> selectProjectPermissionUsers(ComponentDto project, String permission) { PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(project.getOrganizationUuid()).setPermission(permission).setComponentUuid(project.uuid()).build(); return db.getDbClient().userPermissionDao().selectUserIdsByQuery(db.getSession(), query); } }
private List<Integer> selectProjectPermissionUsers(ComponentDto project, String permission) { PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(project.getOrganizationUuid()).setPermission(permission).setComponentUuid(project.uuid()).build(); return db.getDbClient().userPermissionDao().selectUserIdsByQuery(db.getSession(), query); } }