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
diff options
context:
space:
mode:
authorGitLab Release Tools Bot <delivery-team+release-tools@gitlab.com>2021-08-31 20:25:23 +0300
committerGitLab Release Tools Bot <delivery-team+release-tools@gitlab.com>2021-08-31 20:25:23 +0300
commit3333112d46dd179a55295ebed754544a97b49b7f (patch)
tree218cc0d9d971809b17ec62c5196177025cbd075a /lib
parent2da7c8579601c14a93d4291b8cf5fa39c6eeabd8 (diff)
parent8d08c6cbe51a88fbdc5065aba6e459768e98e63b (diff)
Merge remote-tracking branch 'dev/14-2-stable' into 14-2-stable
Diffstat (limited to 'lib')
-rw-r--r--lib/atlassian/jira_connect/client.rb20
-rw-r--r--lib/atlassian/jira_connect/jira_user.rb18
-rw-r--r--lib/gitlab/import_export/group/import_export.yml2
-rw-r--r--lib/gitlab/import_export/group/legacy_import_export.yml2
-rw-r--r--lib/gitlab/import_export/members_mapper.rb7
-rw-r--r--lib/gitlab/import_export/project/import_export.yml2
-rw-r--r--lib/gitlab/markdown_cache.rb2
-rw-r--r--lib/gitlab/middleware/multipart.rb2
8 files changed, 44 insertions, 11 deletions
diff --git a/lib/atlassian/jira_connect/client.rb b/lib/atlassian/jira_connect/client.rb
index 3e2e6f1b9ba..dc37465744b 100644
--- a/lib/atlassian/jira_connect/client.rb
+++ b/lib/atlassian/jira_connect/client.rb
@@ -30,8 +30,21 @@ module Atlassian
responses.compact
end
+ def user_info(account_id)
+ r = get('/rest/api/3/user', { accountId: account_id, expand: 'groups' })
+
+ JiraUser.new(r.parsed_response) if r.code == 200
+ end
+
private
+ def get(path, query_params)
+ uri = URI.join(@base_uri, path)
+ uri.query = URI.encode_www_form(query_params)
+
+ self.class.get(uri, headers: headers(uri, 'GET'))
+ end
+
def store_ff_info(project:, feature_flags:, **opts)
items = feature_flags.map { |flag| ::Atlassian::JiraConnect::Serializers::FeatureFlagEntity.represent(flag, opts) }
items.reject! { |item| item.issue_keys.empty? }
@@ -99,10 +112,11 @@ module Atlassian
self.class.post(uri, headers: headers(uri), body: metadata.merge(payload).to_json)
end
- def headers(uri)
+ def headers(uri, http_method = 'POST')
{
- 'Authorization' => "JWT #{jwt_token('POST', uri)}",
- 'Content-Type' => 'application/json'
+ 'Authorization' => "JWT #{jwt_token(http_method, uri)}",
+ 'Content-Type' => 'application/json',
+ 'Accept' => 'application/json'
}
end
diff --git a/lib/atlassian/jira_connect/jira_user.rb b/lib/atlassian/jira_connect/jira_user.rb
new file mode 100644
index 00000000000..57ceb8fdf13
--- /dev/null
+++ b/lib/atlassian/jira_connect/jira_user.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Atlassian
+ module JiraConnect
+ class JiraUser
+ def initialize(data)
+ @data = data
+ end
+
+ def site_admin?
+ groups = @data.dig('groups', 'items')
+ return false unless groups
+
+ groups.any? { |g| g['name'] == 'site-admins' }
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/import_export/group/import_export.yml b/lib/gitlab/import_export/group/import_export.yml
index 4786c7a52cc..630f918a78b 100644
--- a/lib/gitlab/import_export/group/import_export.yml
+++ b/lib/gitlab/import_export/group/import_export.yml
@@ -20,7 +20,7 @@ tree:
included_attributes:
user:
- :id
- - :email
+ - :public_email
- :username
author:
- :name
diff --git a/lib/gitlab/import_export/group/legacy_import_export.yml b/lib/gitlab/import_export/group/legacy_import_export.yml
index 0a6234f9f02..082d2346f3d 100644
--- a/lib/gitlab/import_export/group/legacy_import_export.yml
+++ b/lib/gitlab/import_export/group/legacy_import_export.yml
@@ -20,7 +20,7 @@ tree:
included_attributes:
user:
- :id
- - :email
+ - :public_email
- :username
author:
- :name
diff --git a/lib/gitlab/import_export/members_mapper.rb b/lib/gitlab/import_export/members_mapper.rb
index ff972cf9352..ce886cb8738 100644
--- a/lib/gitlab/import_export/members_mapper.rb
+++ b/lib/gitlab/import_export/members_mapper.rb
@@ -19,7 +19,8 @@ module Gitlab
@exported_members.inject(missing_keys_tracking_hash) do |hash, member|
if member['user']
old_user_id = member['user']['id']
- existing_user = User.find_by(find_user_query(member))
+ old_user_email = member.dig('user', 'public_email') || member.dig('user', 'email')
+ existing_user = User.find_by(find_user_query(old_user_email)) if old_user_email
hash[old_user_id] = existing_user.id if existing_user && add_team_member(member, existing_user)
else
add_team_member(member)
@@ -94,8 +95,8 @@ module Gitlab
relation_class: relation_class)
end
- def find_user_query(member)
- user_arel[:email].eq(member['user']['email'])
+ def find_user_query(email)
+ user_arel[:email].eq(email)
end
def user_arel
diff --git a/lib/gitlab/import_export/project/import_export.yml b/lib/gitlab/import_export/project/import_export.yml
index 5633194a8f8..3ebdcc950c3 100644
--- a/lib/gitlab/import_export/project/import_export.yml
+++ b/lib/gitlab/import_export/project/import_export.yml
@@ -114,7 +114,7 @@ tree:
included_attributes:
user:
- :id
- - :email
+ - :public_email
- :username
author:
- :name
diff --git a/lib/gitlab/markdown_cache.rb b/lib/gitlab/markdown_cache.rb
index db39904ea23..d6371732624 100644
--- a/lib/gitlab/markdown_cache.rb
+++ b/lib/gitlab/markdown_cache.rb
@@ -11,7 +11,7 @@ module Gitlab
# this if the change to the renderer output is a new feature or a
# minor bug fix.
# See: https://gitlab.com/gitlab-org/gitlab/-/issues/330313
- CACHE_COMMONMARK_VERSION = 28
+ CACHE_COMMONMARK_VERSION = 29
CACHE_COMMONMARK_VERSION_START = 10
BaseError = Class.new(StandardError)
diff --git a/lib/gitlab/middleware/multipart.rb b/lib/gitlab/middleware/multipart.rb
index 30b3fe3d893..49be3ffc839 100644
--- a/lib/gitlab/middleware/multipart.rb
+++ b/lib/gitlab/middleware/multipart.rb
@@ -176,7 +176,7 @@ module Gitlab
::Gitlab::Middleware::Multipart::Handler.new(env, message).with_open_files do
@app.call(env)
end
- rescue UploadedFile::InvalidPathError => e
+ rescue UploadedFile::InvalidPathError, ApolloUploadServer::GraphQLDataBuilder::OutOfBounds => e
[400, { 'Content-Type' => 'text/plain' }, [e.message]]
end
end