diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/banzai/reference_parser/base_parser.rb | 11 | ||||
-rw-r--r-- | lib/banzai/reference_parser/commit_parser.rb | 6 | ||||
-rw-r--r-- | lib/banzai/reference_parser/commit_range_parser.rb | 6 | ||||
-rw-r--r-- | lib/banzai/reference_parser/issue_parser.rb | 5 | ||||
-rw-r--r-- | lib/banzai/reference_parser/label_parser.rb | 6 | ||||
-rw-r--r-- | lib/banzai/reference_parser/merge_request_parser.rb | 6 | ||||
-rw-r--r-- | lib/banzai/reference_parser/milestone_parser.rb | 6 | ||||
-rw-r--r-- | lib/banzai/reference_parser/snippet_parser.rb | 6 |
8 files changed, 52 insertions, 0 deletions
diff --git a/lib/banzai/reference_parser/base_parser.rb b/lib/banzai/reference_parser/base_parser.rb index f5d110e987b..c60cf46c141 100644 --- a/lib/banzai/reference_parser/base_parser.rb +++ b/lib/banzai/reference_parser/base_parser.rb @@ -61,6 +61,8 @@ module Banzai project_attr = 'data-project' nodes.select do |node| + next unless can_read_reference?(user) + if node.has_attribute?(project_attr) node_id = node.attr(project_attr).to_i @@ -226,6 +228,15 @@ module Banzai attr_reader :current_user, :project + # When a feature is disabled or visible only for + # team members we should not allow team members + # see reference comments. + # Override this method on classes where feature + # visibility should be checked. + def can_read_reference?(user) + true + end + def lazy(&block) Gitlab::Lazy.new(&block) end diff --git a/lib/banzai/reference_parser/commit_parser.rb b/lib/banzai/reference_parser/commit_parser.rb index 0fee9d267de..a65fc410b48 100644 --- a/lib/banzai/reference_parser/commit_parser.rb +++ b/lib/banzai/reference_parser/commit_parser.rb @@ -29,6 +29,12 @@ module Banzai commits end + + private + + def can_read_reference?(user) + @feature_allowed ||= project && project.feature_available?(:repository, user) + end end end end diff --git a/lib/banzai/reference_parser/commit_range_parser.rb b/lib/banzai/reference_parser/commit_range_parser.rb index 69d01f8db15..87db67c818e 100644 --- a/lib/banzai/reference_parser/commit_range_parser.rb +++ b/lib/banzai/reference_parser/commit_range_parser.rb @@ -33,6 +33,12 @@ module Banzai range.valid_commits? ? range : nil end + + private + + def can_read_reference?(user) + @feature_allowed ||= project && project.feature_available?(:repository, user) + end end end end diff --git a/lib/banzai/reference_parser/issue_parser.rb b/lib/banzai/reference_parser/issue_parser.rb index 6c20dec5734..d372a786dc5 100644 --- a/lib/banzai/reference_parser/issue_parser.rb +++ b/lib/banzai/reference_parser/issue_parser.rb @@ -13,6 +13,7 @@ module Banzai issues_readable_by_user(issues.values, user).to_set nodes.select do |node| + next unless can_read_reference?(user) readable_issues.include?(issue_for_node(issues, node)) end end @@ -47,6 +48,10 @@ module Banzai private + def can_read_reference?(user) + @feature_allowed ||= project && project.feature_available?(:issues, user) + end + def issue_for_node(issues, node) issues[node.attr(self.class.data_attribute).to_i] end diff --git a/lib/banzai/reference_parser/label_parser.rb b/lib/banzai/reference_parser/label_parser.rb index e5d1eb11d7f..8e54e7bb535 100644 --- a/lib/banzai/reference_parser/label_parser.rb +++ b/lib/banzai/reference_parser/label_parser.rb @@ -6,6 +6,12 @@ module Banzai def references_relation Label end + + private + + def can_read_reference?(user) + @feature_allowed ||= project && project.feature_available?(:issues, user) + end end end end diff --git a/lib/banzai/reference_parser/merge_request_parser.rb b/lib/banzai/reference_parser/merge_request_parser.rb index c9a9ca79c09..67ea83e017e 100644 --- a/lib/banzai/reference_parser/merge_request_parser.rb +++ b/lib/banzai/reference_parser/merge_request_parser.rb @@ -6,6 +6,12 @@ module Banzai def references_relation MergeRequest.includes(:author, :assignee, :target_project) end + + private + + def can_read_reference?(user) + @feature_allowed ||= project && project.feature_available?(:merge_requests, user) + end end end end diff --git a/lib/banzai/reference_parser/milestone_parser.rb b/lib/banzai/reference_parser/milestone_parser.rb index a000ac61e5c..2a99034739b 100644 --- a/lib/banzai/reference_parser/milestone_parser.rb +++ b/lib/banzai/reference_parser/milestone_parser.rb @@ -6,6 +6,12 @@ module Banzai def references_relation Milestone end + + private + + def can_read_reference?(user) + @feature_allowed ||= project && project.feature_available?(:issues, user) + end end end end diff --git a/lib/banzai/reference_parser/snippet_parser.rb b/lib/banzai/reference_parser/snippet_parser.rb index fa71b3c952a..4f5ae8274a8 100644 --- a/lib/banzai/reference_parser/snippet_parser.rb +++ b/lib/banzai/reference_parser/snippet_parser.rb @@ -6,6 +6,12 @@ module Banzai def references_relation Snippet end + + private + + def can_read_reference?(user) + @feature_allowed ||= project && project.feature_available?(:snippets, user) + end end end end |