summaryrefslogtreecommitdiff
path: root/app/services/jira_connect_subscriptions/create_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/jira_connect_subscriptions/create_service.rb')
-rw-r--r--app/services/jira_connect_subscriptions/create_service.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/app/services/jira_connect_subscriptions/create_service.rb b/app/services/jira_connect_subscriptions/create_service.rb
index 38e5fe7e690..2f31a3c8d4e 100644
--- a/app/services/jira_connect_subscriptions/create_service.rb
+++ b/app/services/jira_connect_subscriptions/create_service.rb
@@ -5,8 +5,11 @@ module JiraConnectSubscriptions
include Gitlab::Utils::StrongMemoize
MERGE_REQUEST_SYNC_BATCH_SIZE = 20
MERGE_REQUEST_SYNC_BATCH_DELAY = 1.minute.freeze
+ NOT_SITE_ADMIN = 'The Jira user is not a site administrator.'
def execute
+ return error(NOT_SITE_ADMIN, 403) unless can_administer_jira?
+
unless namespace && can?(current_user, :create_jira_connect_subscription, namespace)
return error('Invalid namespace. Please make sure you have sufficient permissions', 401)
end
@@ -16,6 +19,10 @@ module JiraConnectSubscriptions
private
+ def can_administer_jira?
+ @params[:jira_user]&.site_admin?
+ end
+
def create_subscription
subscription = JiraConnectSubscription.new(installation: jira_connect_installation, namespace: namespace)