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
path: root/lib/api
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-22 09:06:20 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-22 09:06:20 +0300
commit8e75748aabcbcea411f8bbc68936805bc2b5ff0c (patch)
tree9186d3e27c66b3680e2039d6769233750c74cc4b /lib/api
parent98eaa8d2de5dd751d7a42fa5d601715064f14297 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/api')
-rw-r--r--lib/api/entities.rb1
-rw-r--r--lib/api/helpers/members_helpers.rb21
-rw-r--r--lib/api/members.rb32
-rw-r--r--lib/api/snippets.rb4
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