Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-12-13 18:08:02 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-13 18:08:02 +0300
commit4eeb6b0d16021ab4a730eec4610eff2606421147 (patch)
tree488db828fe58f1e80dc5415970e4c929db7e4c4b /app/finders/members_finder.rb
parent8cc5f2790908ba9bb8eecba2b78a3c5a88c77b90 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/finders/members_finder.rb')
-rw-r--r--app/finders/members_finder.rb20
1 files changed, 13 insertions, 7 deletions
diff --git a/app/finders/members_finder.rb b/app/finders/members_finder.rb
index e8c7f9622a9..a919ff5bf8a 100644
--- a/app/finders/members_finder.rb
+++ b/app/finders/members_finder.rb
@@ -9,14 +9,18 @@ class MembersFinder
@group = project.group
end
- def execute(include_descendants: false, include_invited_groups_members: false)
+ def execute(include_relations: [:inherited, :direct])
project_members = project.project_members
project_members = project_members.non_invite unless can?(current_user, :admin_project, project)
- union_members = group_union_members(include_descendants, include_invited_groups_members)
+ return project_members if include_relations == [:direct]
+
+ union_members = group_union_members(include_relations)
+
+ union_members << project_members if include_relations.include?(:direct)
if union_members.any?
- distinct_union_of_members(union_members << project_members)
+ distinct_union_of_members(union_members)
else
project_members
end
@@ -28,15 +32,17 @@ class MembersFinder
private
- def group_union_members(include_descendants, include_invited_groups_members)
+ def group_union_members(include_relations)
[].tap do |members|
- members << direct_group_members(include_descendants) if group
- members << project_invited_groups_members if include_invited_groups_members
+ members << direct_group_members(include_relations.include?(:descendants)) if group
+ members << project_invited_groups_members if include_relations.include?(:invited_groups_members)
end
end
def direct_group_members(include_descendants)
- GroupMembersFinder.new(group).execute(include_descendants: include_descendants).non_invite # rubocop: disable CodeReuse/Finder
+ requested_relations = [:inherited, :direct]
+ requested_relations << :descendants if include_descendants
+ GroupMembersFinder.new(group).execute(include_relations: requested_relations).non_invite # rubocop: disable CodeReuse/Finder
end
def project_invited_groups_members