summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-07-27 19:01:26 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-07-27 19:01:26 +0000
commit1ff28a8d8d370efef8bbac2da1edb85b758d4643 (patch)
tree906de1dd9c7637330f2eaea9c1a4217decd9a749 /app/models
parenta876afc5fd85a4ccae6947941884f3913f472ab0 (diff)
downloadgitlab-ce-1ff28a8d8d370efef8bbac2da1edb85b758d4643.tar.gz
Add latest changes from gitlab-org/security/gitlab@15-2-stable-ee
Diffstat (limited to 'app/models')
-rw-r--r--app/models/integrations/campfire.rb9
-rw-r--r--app/models/integrations/drone_ci.rb1
-rw-r--r--app/models/integrations/jira.rb8
-rw-r--r--app/models/integrations/packagist.rb3
-rw-r--r--app/models/integrations/zentao.rb17
5 files changed, 34 insertions, 4 deletions
diff --git a/app/models/integrations/campfire.rb b/app/models/integrations/campfire.rb
index bf1358ac0f6..3f7fa1c51b2 100644
--- a/app/models/integrations/campfire.rb
+++ b/app/models/integrations/campfire.rb
@@ -2,7 +2,15 @@
module Integrations
class Campfire < Integration
+ SUBDOMAIN_REGEXP = %r{\A[a-z](?:[a-z0-9-]*[a-z0-9])?\z}i.freeze
+
validates :token, presence: true, if: :activated?
+ validates :room,
+ allow_blank: true,
+ numericality: { only_integer: true, greater_than: 0 }
+ validates :subdomain,
+ allow_blank: true,
+ format: { with: SUBDOMAIN_REGEXP }, length: { in: 1..63 }
field :token,
type: 'password',
@@ -16,6 +24,7 @@ module Integrations
field :subdomain,
title: -> { _('Campfire subdomain (optional)') },
placeholder: '',
+ exposes_secrets: true,
help: -> do
ERB::Util.html_escape(
s_('CampfireService|The %{code_open}.campfirenow.com%{code_close} subdomain.')
diff --git a/app/models/integrations/drone_ci.rb b/app/models/integrations/drone_ci.rb
index b1f72b7144e..de69afeba6a 100644
--- a/app/models/integrations/drone_ci.rb
+++ b/app/models/integrations/drone_ci.rb
@@ -13,6 +13,7 @@ module Integrations
field :drone_url,
title: -> { s_('ProjectService|Drone server URL') },
placeholder: 'http://drone.example.com',
+ exposes_secrets: true,
required: true
field :token,
diff --git a/app/models/integrations/jira.rb b/app/models/integrations/jira.rb
index c9c9b9d59d6..566bbc456f8 100644
--- a/app/models/integrations/jira.rb
+++ b/app/models/integrations/jira.rb
@@ -223,7 +223,9 @@ module Integrations
# support any events.
end
- def find_issue(issue_key, rendered_fields: false, transitions: false)
+ def find_issue(issue_key, rendered_fields: false, transitions: false, restrict_project_key: false)
+ return if restrict_project_key && parse_project_from_issue_key(issue_key) != project_key
+
expands = []
expands << 'renderedFields' if rendered_fields
expands << 'transitions' if transitions
@@ -321,6 +323,10 @@ module Integrations
private
+ def parse_project_from_issue_key(issue_key)
+ issue_key.gsub(Gitlab::Regex.jira_issue_key_project_key_extraction_regex, '')
+ end
+
def branch_name(commit)
commit.first_ref_by_oid(project.repository)
end
diff --git a/app/models/integrations/packagist.rb b/app/models/integrations/packagist.rb
index 05ee919892d..fda4822c19f 100644
--- a/app/models/integrations/packagist.rb
+++ b/app/models/integrations/packagist.rb
@@ -23,7 +23,8 @@ module Integrations
field :server,
title: -> { _('Server (optional)') },
help: -> { s_('Enter your Packagist server. Defaults to https://packagist.org.') },
- placeholder: 'https://packagist.org'
+ placeholder: 'https://packagist.org',
+ exposes_secrets: true
validates :username, presence: true, if: :activated?
validates :token, presence: true, if: :activated?
diff --git a/app/models/integrations/zentao.rb b/app/models/integrations/zentao.rb
index 11db469f7ee..53194089296 100644
--- a/app/models/integrations/zentao.rb
+++ b/app/models/integrations/zentao.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
module Integrations
- class Zentao < Integration
+ class Zentao < BaseIssueTracker
include Gitlab::Routing
self.field_storage = :data_fields
@@ -10,11 +10,13 @@ module Integrations
title: -> { s_('ZentaoIntegration|ZenTao Web URL') },
placeholder: 'https://www.zentao.net',
help: -> { s_('ZentaoIntegration|Base URL of the ZenTao instance.') },
+ exposes_secrets: true,
required: true
field :api_url,
title: -> { s_('ZentaoIntegration|ZenTao API URL (optional)') },
- help: -> { s_('ZentaoIntegration|If different from Web URL.') }
+ help: -> { s_('ZentaoIntegration|If different from Web URL.') },
+ exposes_secrets: true
field :api_token,
type: 'password',
@@ -40,6 +42,17 @@ module Integrations
zentao_tracker_data || self.build_zentao_tracker_data
end
+ alias_method :project_url, :url
+
+ def set_default_data
+ return unless issues_tracker.present?
+
+ return if url
+
+ data_fields.url ||= issues_tracker['url']
+ data_fields.api_url ||= issues_tracker['api_url']
+ end
+
def title
'ZenTao'
end