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); } }
private boolean isUserAlreadyAdded(DbSession dbSession, OrganizationDto organizationDto, long templateId, String userLogin, String permission) { PermissionQuery permissionQuery = PermissionQuery.builder().setOrganizationUuid(organizationDto.getUuid()).setPermission(permission).build(); List<String> usersWithPermission = dbClient.permissionTemplateDao().selectUserLoginsByQueryAndTemplate(dbSession, permissionQuery, templateId); return usersWithPermission.stream().anyMatch(s -> s.equals(userLogin)); }
@Test public void create_query_with_default_pagination() { PermissionQuery quey = PermissionQuery.builder() .setOrganizationUuid("ORGANIZATION_UUID") .build(); assertThat(quey.getPageOffset()).isEqualTo(0); assertThat(quey.getPageSize()).isEqualTo(20); }
private PermissionQuery buildPermissionQuery(Request request, PermissionTemplateDto template) { String textQuery = request.param(TEXT_QUERY); String permission = request.param(PARAM_PERMISSION); PermissionQuery.Builder permissionQuery = PermissionQuery.builder() .setOrganizationUuid(template.getOrganizationUuid()) .setPermission(permission != null ? requestValidator.validateProjectPermission(permission) : null) .setPageIndex(request.mandatoryParamAsInt(PAGE)) .setPageSize(request.mandatoryParamAsInt(PAGE_SIZE)) .setSearchQuery(textQuery); return permissionQuery.build(); }
private static PermissionQuery permissionQuery(String permissionKey, OrganizationDto org) { return PermissionQuery.builder() .setOrganizationUuid(org.getUuid()) .setPermission(permissionKey) .withAtLeastOnePermission() .build(); } }
@Test public void selectGroupNamesByQuery_is_ordered_by_permissions_then_by_group_names() { OrganizationDto organizationDto = db.organizations().insert(); GroupDto group2 = db.users().insertGroup(organizationDto, "Group-2"); GroupDto group3 = db.users().insertGroup(organizationDto, "Group-3"); GroupDto group1 = db.users().insertGroup(organizationDto, "Group-1"); db.users().insertPermissionOnAnyone(organizationDto, SCAN); db.users().insertPermissionOnGroup(group3, SCAN); assertThat(underTest.selectGroupNamesByQuery(dbSession, newQuery().setOrganizationUuid(organizationDto.getUuid()).build())) .containsExactly(ANYONE, group3.getName(), group1.getName(), group2.getName()); }
@Test public void selectUserIdsByQuery_is_sorted_by_insensitive_name() { OrganizationDto organization = db.organizations().insert(); UserDto user1 = insertUser(u -> u.setName("user1"), organization); addGlobalPermission(organization, PROVISIONING, user1); UserDto user3 = insertUser(u -> u.setName("user3"), organization); addGlobalPermission(organization, SYSTEM_ADMIN, user3); UserDto user2 = insertUser(u -> u.setName("User2"), organization); addGlobalPermission(organization, PROVISIONING, user2); assertThat(underTest.selectUserIdsByQuery(dbSession, PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).build())) .containsExactly(user1.getId(), user2.getId(), user3.getId()); }
private List<String> getGroupNamesInTemplateAndPermission(PermissionTemplateDto template, String permission) { PermissionQuery permissionQuery = PermissionQuery.builder().setOrganizationUuid(template.getOrganizationUuid()).setPermission(permission).build(); return db.getDbClient().permissionTemplateDao() .selectGroupNamesByQueryAndTemplate(db.getSession(), permissionQuery, template.getId()); } }
private int countGroups(DbSession dbSession, OrganizationDto org, String permission) { PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(org.getUuid()).setPermission(permission).build(); return dbClient.groupPermissionDao().countGroupsByQuery(dbSession, query); }
@Test public void selectGroupNamesByQueryAndTemplate_is_ordering_results_by_groups_with_permission_then_by_name() { OrganizationDto organization = db.organizations().insert(); PermissionTemplateDto template = permissionTemplateDbTester.insertTemplate(organization); GroupDto group1 = db.users().insertGroup(organization, "A"); GroupDto group2 = db.users().insertGroup(organization, "B"); GroupDto group3 = db.users().insertGroup(organization, "C"); permissionTemplateDbTester.addGroupToTemplate(template, group3, UserRole.USER); PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(organization.getUuid()).build(); assertThat(underTest.selectGroupNamesByQueryAndTemplate(db.getSession(), query, template.getId())) .containsExactly("Anyone", group3.getName(), group1.getName(), group2.getName()); }
@Test public void fail_when_no_organization() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("Organization UUID cannot be null"); PermissionQuery.builder().setOrganizationUuid(null).build(); }
@Test public void return_no_logins_on_unknown_template_key() { OrganizationDto organization = db.organizations().insert(); UserDto user = db.users().insertUser(); db.organizations().addMember(organization, user); PermissionTemplateDto permissionTemplate = db.permissionTemplates().insertTemplate(); db.permissionTemplates().addUserToTemplate(permissionTemplate, user, USER); assertThat(underTest.selectUserLoginsByQueryAndTemplate(dbSession, builder().setOrganizationUuid(organization.getUuid()).setPermission(USER).withAtLeastOnePermission().build(), 999L)) .isEmpty(); }
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); } }
private List<String> getLoginsInTemplateAndPermission(PermissionTemplateDto template, String permission) { PermissionQuery permissionQuery = PermissionQuery.builder().setOrganizationUuid(template.getOrganizationUuid()).setPermission(permission).build(); return db.getDbClient().permissionTemplateDao() .selectUserLoginsByQueryAndTemplate(db.getSession(), permissionQuery, template.getId()); }
private List<String> getGroupNamesInTemplateAndPermission(PermissionTemplateDto template, String permission) { PermissionQuery query = PermissionQuery.builder().setOrganizationUuid(template.getOrganizationUuid()).setPermission(permission).build(); return db.getDbClient().permissionTemplateDao() .selectGroupNamesByQueryAndTemplate(db.getSession(), query, template.getId()); } }
private List<String> getLoginsInTemplateAndPermission(PermissionTemplateDto template, String permission) { PermissionQuery permissionQuery = PermissionQuery.builder().setOrganizationUuid(template.getOrganizationUuid()).setPermission(permission).build(); return db.getDbClient().permissionTemplateDao() .selectUserLoginsByQueryAndTemplate(db.getSession(), permissionQuery, template.getId()); }
@Test public void fail_when_search_query_length_is_less_than_3_characters() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Search query should contains at least 3 characters"); PermissionQuery.builder() .setOrganizationUuid("ORGANIZATION_UUID") .setSearchQuery("so") .build(); } }
@Test public void create_query_with_pagination() { PermissionQuery quey = PermissionQuery.builder() .setOrganizationUuid("ORGANIZATION_UUID") .setPageSize(10) .setPageIndex(5) .build(); assertThat(quey.getPageOffset()).isEqualTo(40); assertThat(quey.getPageSize()).isEqualTo(10); }
private PermissionQuery buildQuery(Request wsRequest, PermissionTemplateDto template) { String textQuery = wsRequest.param(TEXT_QUERY); String permission = wsRequest.param(PARAM_PERMISSION); PermissionQuery.Builder query = PermissionQuery.builder() .setOrganizationUuid(template.getOrganizationUuid()) .setTemplate(template.getUuid()) .setPermission(permission != null ? requestValidator.validateProjectPermission(permission) : null) .setPageIndex(wsRequest.mandatoryParamAsInt(PAGE)) .setPageSize(wsRequest.mandatoryParamAsInt(PAGE_SIZE)) .setSearchQuery(textQuery); return query.build(); }