private void expectPermissions(PermissionQuery query, Collection<Integer> expectedUserIds, UserPermissionDto... expectedPermissions) { assertThat(underTest.selectUserIdsByQuery(dbSession, query)).containsExactly(expectedUserIds.toArray(new Integer[0])); List<UserPermissionDto> currentPermissions = underTest.selectUserPermissionsByQuery(dbSession, query, expectedUserIds); assertThat(currentPermissions).hasSize(expectedPermissions.length); List<Tuple> expectedPermissionsAsTuple = Arrays.stream(expectedPermissions) .map(expectedPermission -> tuple(expectedPermission.getUserId(), expectedPermission.getPermission(), expectedPermission.getComponentId(), expectedPermission.getOrganizationUuid())) .collect(Collectors.toList()); assertThat(currentPermissions) .extracting(UserPermissionDto::getUserId, UserPermissionDto::getPermission, UserPermissionDto::getComponentId, UserPermissionDto::getOrganizationUuid) .containsOnly(expectedPermissionsAsTuple.toArray(new Tuple[0])); // test method "countUsers()" long distinctUsers = stream(expectedPermissions).mapToLong(UserPermissionDto::getUserId).distinct().count(); assertThat((long) underTest.countUsersByQuery(dbSession, query)).isEqualTo(distinctUsers); }
private void insertProjectPermissionOnUser(DbSession dbSession, ComponentDto component, String permission, Integer userId) { dbClient.userPermissionDao().insert(dbSession, new UserPermissionDto(component.getOrganizationUuid(), permission, userId, component.getId())); }
private static void ensureComponentPermissionConsistency(DbSession dbSession, UserPermissionDto dto) { if (dto.getComponentId() == null) { return; } ComponentMapper componentMapper = dbSession.getMapper(ComponentMapper.class); checkArgument( componentMapper.countComponentByOrganizationAndId(dto.getOrganizationUuid(), dto.getComponentId()) == 1, "Can't insert permission '%s' for component with id '%s' in organization with uuid '%s' because this component does not belong to organization with uuid '%s'", dto.getPermission(), dto.getComponentId(), dto.getOrganizationUuid(), dto.getOrganizationUuid()); }
private UsersWsResponse buildResponse(List<UserDto> users, List<UserPermissionDto> userPermissions, Paging paging) { Multimap<Integer, String> permissionsByUserId = TreeMultimap.create(); userPermissions.forEach(userPermission -> permissionsByUserId.put(userPermission.getUserId(), userPermission.getPermission())); UsersWsResponse.Builder response = UsersWsResponse.newBuilder(); users.forEach(user -> { Permissions.User.Builder userResponse = response.addUsersBuilder() .setLogin(user.getLogin()) .addAllPermissions(permissionsByUserId.get(user.getId())); ofNullable(user.getEmail()).ifPresent(userResponse::setEmail); ofNullable(emptyToNull(user.getEmail())).ifPresent(u -> userResponse.setAvatar(avatarResolver.create(user))); ofNullable(user.getName()).ifPresent(userResponse::setName); }); response.getPagingBuilder() .setPageIndex(paging.pageIndex()) .setPageSize(paging.pageSize()) .setTotal(paging.total()) .build(); return response.build(); }
private static void ensureComponentPermissionConsistency(DbSession dbSession, UserPermissionDto dto) { if (dto.getComponentId() == null) { return; } ComponentMapper componentMapper = dbSession.getMapper(ComponentMapper.class); checkArgument( componentMapper.countComponentByOrganizationAndId(dto.getOrganizationUuid(), dto.getComponentId()) == 1, "Can't insert permission '%s' for component with id '%s' in organization with uuid '%s' because this component does not belong to organization with uuid '%s'", dto.getPermission(), dto.getComponentId(), dto.getOrganizationUuid(), dto.getOrganizationUuid()); }
private UsersWsResponse buildResponse(List<UserDto> users, List<UserPermissionDto> userPermissions, Paging paging) { Multimap<Integer, String> permissionsByUserId = TreeMultimap.create(); userPermissions.forEach(userPermission -> permissionsByUserId.put(userPermission.getUserId(), userPermission.getPermission())); UsersWsResponse.Builder response = UsersWsResponse.newBuilder(); users.forEach(user -> { Permissions.User.Builder userResponse = response.addUsersBuilder() .setLogin(user.getLogin()) .addAllPermissions(permissionsByUserId.get(user.getId())); setNullable(user.getEmail(), userResponse::setEmail); setNullable(emptyToNull(user.getEmail()), u -> userResponse.setAvatar(avatarResolver.create(user))); setNullable(user.getName(), userResponse::setName); }); response.getPagingBuilder() .setPageIndex(paging.pageIndex()) .setPageSize(paging.pageSize()) .setTotal(paging.total()) .build(); return response.build(); }
private void insertUserPermissions(DbSession dbSession, UserDto userDto, OrganizationDto organization, OrganizationPermission permission) { dbClient.userPermissionDao().insert( dbSession, new UserPermissionDto(organization.getUuid(), permission.getKey(), userDto.getId(), null)); }
private boolean addPermission(DbSession dbSession, UserPermissionChange change) { if (loadExistingPermissions(dbSession, change).contains(change.getPermission())) { return false; } UserPermissionDto dto = new UserPermissionDto(change.getOrganizationUuid(), change.getPermission(), change.getUserId().getId(), change.getNullableProjectId()); dbClient.userPermissionDao().insert(dbSession, dto); return true; }
.filter(up -> permissionValidForProject(project, up.getPermission())) .forEach(up -> { UserPermissionDto dto = new UserPermissionDto(organizationUuid, up.getPermission(), up.getUserId(), project.getId()); dbClient.userPermissionDao().insert(dbSession, dto); }); .filter(characteristic -> !permissionsForCurrentUserAlreadyInDb.contains(characteristic.getPermission())) .forEach(c -> { UserPermissionDto dto = new UserPermissionDto(organizationUuid, c.getPermission(), projectCreatorUserId, project.getId()); dbClient.userPermissionDao().insert(dbSession, dto); });
private UserPermissionDto addGlobalPermission(OrganizationDto org, String permission, UserDto user) { UserPermissionDto dto = new UserPermissionDto(org.getUuid(), permission, user.getId(), null); underTest.insert(dbSession, dto); db.commit(); return dto; }
/** * Grant global permission * @deprecated use {@link #insertPermissionOnUser(OrganizationDto, UserDto, OrganizationPermission)} */ @Deprecated public UserPermissionDto insertPermissionOnUser(OrganizationDto org, UserDto user, String permission) { UserPermissionDto dto = new UserPermissionDto(org.getUuid(), permission, user.getId(), null); db.getDbClient().userPermissionDao().insert(db.getSession(), dto); db.commit(); return dto; }
/** * Grant permission on given project */ public UserPermissionDto insertProjectPermissionOnUser(UserDto user, String permission, ComponentDto project) { checkArgument(project.isPrivate() || !PUBLIC_PERMISSIONS.contains(permission), "%s can't be granted on a public project", permission); checkArgument(project.getMainBranchProjectUuid() == null, "Permissions can't be granted on branches"); UserPermissionDto dto = new UserPermissionDto(project.getOrganizationUuid(), permission, user.getId(), project.getId()); db.getDbClient().userPermissionDao().insert(db.getSession(), dto); db.commit(); return dto; }
private UserPermissionDto addProjectPermission(OrganizationDto org, String permission, UserDto user, ComponentDto project) { UserPermissionDto dto = new UserPermissionDto(org.getUuid(), permission, user.getId(), project.getId()); underTest.insert(dbSession, dto); db.commit(); return dto; }
private void unsafeInsertProjectPermissionOnUser(ComponentDto component, UserDto user, String permission) { UserPermissionDto dto = new UserPermissionDto(component.getOrganizationUuid(), permission, user.getId(), component.getId()); dbTester.getDbClient().userPermissionDao().insert(dbTester.getSession(), dto); dbTester.commit(); }
private void insertProjectPermissionOnUser(DbSession dbSession, ComponentDto component, String permission, Integer userId) { dbClient.userPermissionDao().insert(dbSession, new UserPermissionDto(component.getOrganizationUuid(), permission, userId, component.getId())); }
private void insertUserPermissions(DbSession dbSession, UserDto userDto, OrganizationDto organization, OrganizationPermission permission) { dbClient.userPermissionDao().insert( dbSession, new UserPermissionDto(organization.getUuid(), permission.getKey(), userDto.getId(), null)); }
private boolean addPermission(DbSession dbSession, UserPermissionChange change) { if (loadExistingPermissions(dbSession, change).contains(change.getPermission())) { return false; } UserPermissionDto dto = new UserPermissionDto(change.getOrganizationUuid(), change.getPermission(), change.getUserId().getId(), change.getNullableProjectId()); dbClient.userPermissionDao().insert(dbSession, dto); return true; }
.filter(up -> permissionValidForProject(project, up.getPermission())) .forEach(up -> { UserPermissionDto dto = new UserPermissionDto(organizationUuid, up.getPermission(), up.getUserId(), project.getId()); dbClient.userPermissionDao().insert(dbSession, dto); }); .filter(characteristic -> !permissionsForCurrentUserAlreadyInDb.contains(characteristic.getPermission())) .forEach(c -> { UserPermissionDto dto = new UserPermissionDto(organizationUuid, c.getPermission(), projectCreatorUserId, project.getId()); dbClient.userPermissionDao().insert(dbSession, dto); });