summaryrefslogtreecommitdiff
path: root/lib/atlassian
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-08-30 19:44:55 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-08-30 19:44:55 +0000
commitf526ce392a317feb5a125bb16adb2629a487ce70 (patch)
tree8ab2b3458181a6cce84b401ce7dc9326fc0f5384 /lib/atlassian
parentf19a0fa10a0024fab5ef3c556612944f2a62c298 (diff)
downloadgitlab-ce-f526ce392a317feb5a125bb16adb2629a487ce70.tar.gz
Add latest changes from gitlab-org/security/gitlab@14-2-stable-ee
Diffstat (limited to 'lib/atlassian')
-rw-r--r--lib/atlassian/jira_connect/client.rb20
-rw-r--r--lib/atlassian/jira_connect/jira_user.rb18
2 files changed, 35 insertions, 3 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