summaryrefslogtreecommitdiff
path: root/lib/api
diff options
context:
space:
mode:
authorJacopo <beschi.jacopo@gmail.com>2019-01-29 19:10:37 +0100
committerJacopo <beschi.jacopo@gmail.com>2019-05-27 15:40:56 +0200
commita9827e0e18b532fb5cc3f227ce6c6bddaf7a960b (patch)
tree1cd3b68ccff5d664a2a31a3fed44626fa3ac23ad /lib/api
parentf9a2c4034f690e4ab9803522110c063d78da8f4d (diff)
downloadgitlab-ce-a9827e0e18b532fb5cc3f227ce6c6bddaf7a960b.tar.gz
Removes duplicated members from api/projects/:id/members/all51854-api-to-get-all-project-group-members-returns-duplicates
When using the members/all api the same user was returned multiple times when he was a member of the project/group and also of one of the ancestor groups. Now the member is returned only once giving priority to the membership on the project and maintaining the same behaviour of the members UI.
Diffstat (limited to 'lib/api')
-rw-r--r--lib/api/helpers/members_helpers.rb19
1 files changed, 2 insertions, 17 deletions
diff --git a/lib/api/helpers/members_helpers.rb b/lib/api/helpers/members_helpers.rb
index 73d58ee7f37..1395ffadab9 100644
--- a/lib/api/helpers/members_helpers.rb
+++ b/lib/api/helpers/members_helpers.rb
@@ -19,28 +19,13 @@ module API
.non_request
end
- # rubocop: disable CodeReuse/ActiveRecord
def find_all_members_for_project(project)
- shared_group_ids = project.project_group_links.pluck(:group_id)
- project_group_ids = project.group&.self_and_ancestors&.pluck(:id)
- source_ids = [project.id, project_group_ids, shared_group_ids]
- .flatten
- .compact
- Member.includes(:user)
- .joins(user: :project_authorizations)
- .where(project_authorizations: { project_id: project.id })
- .where(source_id: source_ids)
+ MembersFinder.new(project, current_user).execute(include_invited_groups_members: true)
end
- # rubocop: enable CodeReuse/ActiveRecord
- # rubocop: disable CodeReuse/ActiveRecord
def find_all_members_for_group(group)
- source_ids = group.self_and_ancestors.pluck(:id)
- Member.includes(:user)
- .where(source_id: source_ids)
- .where(source_type: 'Namespace')
+ GroupMembersFinder.new(group).execute
end
- # rubocop: enable CodeReuse/ActiveRecord
end
end
end