summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/concerns/mentionable.rb1
-rw-r--r--lib/gitlab/markdown/redactor_filter.rb2
-rw-r--r--lib/gitlab/markdown/reference_filter.rb7
-rw-r--r--lib/gitlab/markdown/reference_gatherer_filter.rb2
-rw-r--r--lib/gitlab/markdown/user_reference_filter.rb2
-rw-r--r--spec/lib/gitlab/reference_extractor_spec.rb4
-rw-r--r--spec/support/mentionable_shared_examples.rb2
7 files changed, 12 insertions, 8 deletions
diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb
index 5b0ae411642..7ad8d5b7da7 100644
--- a/app/models/concerns/mentionable.rb
+++ b/app/models/concerns/mentionable.rb
@@ -61,7 +61,6 @@ module Mentionable
ext = Gitlab::ReferenceExtractor.new(p, current_user)
ext.analyze(text)
-
(ext.issues + ext.merge_requests + ext.commits).uniq - [local_reference]
end
diff --git a/lib/gitlab/markdown/redactor_filter.rb b/lib/gitlab/markdown/redactor_filter.rb
index 07ea6207d22..a1f3a8a8ebf 100644
--- a/lib/gitlab/markdown/redactor_filter.rb
+++ b/lib/gitlab/markdown/redactor_filter.rb
@@ -26,7 +26,7 @@ module Gitlab
reference_type = node.attr('data-reference-filter')
reference_filter = reference_type.constantize
- reference_filter.user_can_reference?(current_user, node)
+ reference_filter.user_can_reference?(current_user, node, context)
else
true
end
diff --git a/lib/gitlab/markdown/reference_filter.rb b/lib/gitlab/markdown/reference_filter.rb
index ea6136b3303..8ad52479d3d 100644
--- a/lib/gitlab/markdown/reference_filter.rb
+++ b/lib/gitlab/markdown/reference_filter.rb
@@ -15,9 +15,12 @@ module Gitlab
# Results:
# :references - A Hash of references that were found and replaced.
class ReferenceFilter < HTML::Pipeline::Filter
- def self.user_can_reference?(user, node)
+ def self.user_can_reference?(user, node, context)
if node.has_attribute?('data-project')
- project = Project.find(node.attr('data-project')) rescue nil
+ project_id = node.attr('data-project').to_i
+ return true if project_id == context[:project].id
+
+ project = Project.find(project_id) rescue nil
Ability.abilities.allowed?(user, :read_project, project)
else
true
diff --git a/lib/gitlab/markdown/reference_gatherer_filter.rb b/lib/gitlab/markdown/reference_gatherer_filter.rb
index d64671e9550..171ff906da6 100644
--- a/lib/gitlab/markdown/reference_gatherer_filter.rb
+++ b/lib/gitlab/markdown/reference_gatherer_filter.rb
@@ -31,7 +31,7 @@ module Gitlab
reference_type = node.attr('data-reference-filter')
reference_filter = reference_type.constantize
- return unless reference_filter.user_can_reference?(current_user, node)
+ return unless reference_filter.user_can_reference?(current_user, node, context)
references = reference_filter.referenced_by(node)
return unless references
diff --git a/lib/gitlab/markdown/user_reference_filter.rb b/lib/gitlab/markdown/user_reference_filter.rb
index 0d2be7499b7..4567e983692 100644
--- a/lib/gitlab/markdown/user_reference_filter.rb
+++ b/lib/gitlab/markdown/user_reference_filter.rb
@@ -42,7 +42,7 @@ module Gitlab
end
end
- def self.user_can_reference?(user, node)
+ def self.user_can_reference?(user, node, context)
if node.has_attribute?('data-group')
group = Group.find(node.attr('data-group')) rescue nil
Ability.abilities.allowed?(user, :read_group, group)
diff --git a/spec/lib/gitlab/reference_extractor_spec.rb b/spec/lib/gitlab/reference_extractor_spec.rb
index 6d7a067e4e0..088e34f050c 100644
--- a/spec/lib/gitlab/reference_extractor_spec.rb
+++ b/spec/lib/gitlab/reference_extractor_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
describe Gitlab::ReferenceExtractor do
let(:project) { create(:project) }
- subject { Gitlab::ReferenceExtractor.new(project, project.owner) }
+ subject { Gitlab::ReferenceExtractor.new(project, project.creator) }
it 'accesses valid user objects' do
@u_foo = create(:user, username: 'foo')
@@ -102,7 +102,7 @@ describe Gitlab::ReferenceExtractor do
let(:issue) { create(:issue, project: other_project) }
before do
- other_project.team << [project.owner, :developer]
+ other_project.team << [project.creator, :developer]
end
it 'handles project issue references' do
diff --git a/spec/support/mentionable_shared_examples.rb b/spec/support/mentionable_shared_examples.rb
index e3de0afb448..2b52b4c9b10 100644
--- a/spec/support/mentionable_shared_examples.rb
+++ b/spec/support/mentionable_shared_examples.rb
@@ -50,6 +50,8 @@ def common_mentionable_setup
}
extra_commits.each { |c| commitmap[c.short_id] = c }
+ allow(Project).to receive(:find).and_call_original
+ allow(Project).to receive(:find).with(project.id.to_s).and_return(project)
allow(project.repository).to receive(:commit) { |sha| commitmap[sha] }
set_mentionable_text.call(ref_string)