diff options
author | Douwe Maan <douwe@selenight.nl> | 2017-05-31 17:11:15 -0500 |
---|---|---|
committer | Douwe Maan <douwe@selenight.nl> | 2017-05-31 17:11:17 -0500 |
commit | 371ae05c15f0a523585c67cdaa15605b617ef037 (patch) | |
tree | d2db072882128c6bf3e5cfd501c5de2dd84412f7 | |
parent | 322c9be816cd5cd9747a8737ec04622aa6b81e6b (diff) | |
download | gitlab-ce-371ae05c15f0a523585c67cdaa15605b617ef037.tar.gz |
Don't match email addresses or foo@bar as user referencesdm-emails-are-not-user-references
-rw-r--r-- | app/models/user.rb | 1 | ||||
-rw-r--r-- | changelogs/unreleased/dm-emails-are-not-user-references.yml | 4 | ||||
-rw-r--r-- | spec/lib/banzai/filter/user_reference_filter_spec.rb | 5 |
3 files changed, 10 insertions, 0 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 9aad327b592..9e13e91536d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -369,6 +369,7 @@ class User < ActiveRecord::Base # Pattern used to extract `@user` user references from text def reference_pattern %r{ + (?<!\w) #{Regexp.escape(reference_prefix)} (?<user>#{Gitlab::PathRegex::FULL_NAMESPACE_FORMAT_REGEX}) }x diff --git a/changelogs/unreleased/dm-emails-are-not-user-references.yml b/changelogs/unreleased/dm-emails-are-not-user-references.yml new file mode 100644 index 00000000000..fe55a75a88f --- /dev/null +++ b/changelogs/unreleased/dm-emails-are-not-user-references.yml @@ -0,0 +1,4 @@ +--- +title: Don't match email addresses or foo@bar as user references +merge_request: +author: diff --git a/spec/lib/banzai/filter/user_reference_filter_spec.rb b/spec/lib/banzai/filter/user_reference_filter_spec.rb index 63b23dac7ed..edf3846b742 100644 --- a/spec/lib/banzai/filter/user_reference_filter_spec.rb +++ b/spec/lib/banzai/filter/user_reference_filter_spec.rb @@ -16,6 +16,11 @@ describe Banzai::Filter::UserReferenceFilter, lib: true do expect(reference_filter(act).to_html).to eq(exp) end + it 'ignores references with text before the @ sign' do + exp = act = "Hey foo#{reference}" + expect(reference_filter(act).to_html).to eq(exp) + end + %w(pre code a style).each do |elem| it "ignores valid references contained inside '#{elem}' element" do exp = act = "<#{elem}>Hey #{reference}</#{elem}>" |