diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-22 09:06:20 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-22 09:06:20 +0300 |
commit | 8e75748aabcbcea411f8bbc68936805bc2b5ff0c (patch) | |
tree | 9186d3e27c66b3680e2039d6769233750c74cc4b /lib/api | |
parent | 98eaa8d2de5dd751d7a42fa5d601715064f14297 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/api')
-rw-r--r-- | lib/api/entities.rb | 1 | ||||
-rw-r--r-- | lib/api/helpers/members_helpers.rb | 21 | ||||
-rw-r--r-- | lib/api/members.rb | 32 | ||||
-rw-r--r-- | lib/api/snippets.rb | 4 |
4 files changed, 33 insertions, 25 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 0aef021f043..3ff74dd9d38 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -1838,6 +1838,7 @@ end ::API::Entities::Issue.prepend_if_ee('EE::API::Entities::Issue') ::API::Entities::List.prepend_if_ee('EE::API::Entities::List') ::API::Entities::MergeRequestBasic.prepend_if_ee('EE::API::Entities::MergeRequestBasic', with_descendants: true) +::API::Entities::Member.prepend_if_ee('EE::API::Entities::Member', with_descendants: true) ::API::Entities::Namespace.prepend_if_ee('EE::API::Entities::Namespace') ::API::Entities::Project.prepend_if_ee('EE::API::Entities::Project', with_descendants: true) ::API::Entities::ProtectedRefAccess.prepend_if_ee('EE::API::Entities::ProtectedRefAccess') diff --git a/lib/api/helpers/members_helpers.rb b/lib/api/helpers/members_helpers.rb index 1395ffadab9..5bebf7ef570 100644 --- a/lib/api/helpers/members_helpers.rb +++ b/lib/api/helpers/members_helpers.rb @@ -13,10 +13,19 @@ module API authorize! :"admin_#{source_type}", source end - def find_all_members(source_type, source) - members = source_type == 'project' ? find_all_members_for_project(source) : find_all_members_for_group(source) - members.non_invite - .non_request + # rubocop: disable CodeReuse/ActiveRecord + def retrieve_members(source, params:, deep: false) + members = deep ? find_all_members(source) : source.members.where.not(user_id: nil) + members = members.includes(:user) + members = members.references(:user).merge(User.search(params[:query])) if params[:query].present? + members = members.where(user_id: params[:user_ids]) if params[:user_ids].present? + members + end + # rubocop: enable CodeReuse/ActiveRecord + + def find_all_members(source) + members = source.is_a?(Project) ? find_all_members_for_project(source) : find_all_members_for_group(source) + members.non_invite.non_request end def find_all_members_for_project(project) @@ -26,6 +35,10 @@ module API def find_all_members_for_group(group) GroupMembersFinder.new(group).execute end + + def present_members(members) + present members, with: Entities::Member, current_user: current_user + end end end end diff --git a/lib/api/members.rb b/lib/api/members.rb index 1d4616fed52..3526671e7f9 100644 --- a/lib/api/members.rb +++ b/lib/api/members.rb @@ -21,18 +21,14 @@ module API optional :user_ids, type: Array[Integer], desc: 'Array of user ids to look up for membership' use :pagination end - # rubocop: disable CodeReuse/ActiveRecord + get ":id/members" do source = find_source(source_type, params[:id]) - members = source.members.where.not(user_id: nil).includes(:user) - members = members.joins(:user).merge(User.search(params[:query])) if params[:query].present? - members = members.where(user_id: params[:user_ids]) if params[:user_ids].present? - members = paginate(members) + members = paginate(retrieve_members(source, params: params)) - present members, with: Entities::Member + present_members members end - # rubocop: enable CodeReuse/ActiveRecord desc 'Gets a list of group or project members viewable by the authenticated user, including those who gained membership through ancestor group.' do success Entities::Member @@ -42,18 +38,14 @@ module API optional :user_ids, type: Array[Integer], desc: 'Array of user ids to look up for membership' use :pagination end - # rubocop: disable CodeReuse/ActiveRecord + get ":id/members/all" do source = find_source(source_type, params[:id]) - members = find_all_members(source_type, source) - members = members.includes(:user).references(:user).merge(User.search(params[:query])) if params[:query].present? - members = members.where(user_id: params[:user_ids]) if params[:user_ids].present? - members = paginate(members) + members = paginate(retrieve_members(source, params: params, deep: true)) - present members, with: Entities::Member + present_members members end - # rubocop: enable CodeReuse/ActiveRecord desc 'Gets a member of a group or project.' do success Entities::Member @@ -68,7 +60,7 @@ module API members = source.members member = members.find_by!(user_id: params[:user_id]) - present member, with: Entities::Member + present_members member end # rubocop: enable CodeReuse/ActiveRecord @@ -82,10 +74,10 @@ module API get ":id/members/all/:user_id" do source = find_source(source_type, params[:id]) - members = find_all_members(source_type, source) + members = find_all_members(source) member = members.find_by!(user_id: params[:user_id]) - present member, with: Entities::Member + present_members member end # rubocop: enable CodeReuse/ActiveRecord @@ -113,7 +105,7 @@ module API if !member not_allowed! # This currently can only be reached in EE elsif member.persisted? && member.valid? - present member, with: Entities::Member + present_members member else render_validation_error!(member) end @@ -140,7 +132,7 @@ module API .execute(member) if updated_member.valid? - present updated_member, with: Entities::Member + present_members updated_member else render_validation_error!(updated_member) end @@ -165,3 +157,5 @@ module API end end end + +API::Members.prepend_if_ee('EE::API::Members') diff --git a/lib/api/snippets.rb b/lib/api/snippets.rb index f8b37b33348..f759b3607a8 100644 --- a/lib/api/snippets.rb +++ b/lib/api/snippets.rb @@ -14,7 +14,7 @@ module API end def public_snippets - SnippetsFinder.new(current_user, scope: :are_public).execute + Snippet.only_personal_snippets.are_public.fresh end def snippets @@ -33,7 +33,7 @@ module API present paginate(snippets_for_current_user), with: Entities::PersonalSnippet end - desc 'List all public snippets current_user has access to' do + desc 'List all public personal snippets current_user has access to' do detail 'This feature was introduced in GitLab 8.15.' success Entities::PersonalSnippet end |