Add permission checking to UserReferenceFilter
This commit is contained in:
parent
189c5347be
commit
29604ff2c3
|
|
@ -78,12 +78,16 @@ module Gitlab
|
|||
%(<a href="#{url}" class="#{klass}">@#{user}</a>)
|
||||
elsif namespace = Namespace.find_by(path: user)
|
||||
if namespace.is_a?(Group)
|
||||
url = group_url(user, only_path: context[:only_path])
|
||||
if user_can_read_group?(namespace)
|
||||
url = group_url(user, only_path: context[:only_path])
|
||||
%(<a href="#{url}" class="#{klass}">@#{user}</a>)
|
||||
else
|
||||
match
|
||||
end
|
||||
else
|
||||
url = user_url(user, only_path: context[:only_path])
|
||||
%(<a href="#{url}" class="#{klass}">@#{user}</a>)
|
||||
end
|
||||
|
||||
%(<a href="#{url}" class="#{klass}">@#{user}</a>)
|
||||
else
|
||||
match
|
||||
end
|
||||
|
|
@ -112,6 +116,11 @@ module Gitlab
|
|||
h.namespace_project_url(project.namespace, project,
|
||||
only_path: context[:only_path])
|
||||
end
|
||||
|
||||
def user_can_read_group?(group)
|
||||
return false if context[:current_user].blank?
|
||||
Ability.abilities.allowed?(context[:current_user], :read_group, group)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -47,11 +47,21 @@ module Gitlab::Markdown
|
|||
end
|
||||
end
|
||||
|
||||
it 'links to a Group' do
|
||||
group = create(:group)
|
||||
context 'mentioning a group' do
|
||||
let(:group) { create(:group) }
|
||||
let(:user) { create(:user) }
|
||||
|
||||
doc = filter("Hey @#{group.name}")
|
||||
expect(doc.css('a').first.attr('href')).to eq urls.group_url(group)
|
||||
it 'links to a Group that the current user can read' do
|
||||
group.add_user(user, Gitlab::Access::DEVELOPER)
|
||||
|
||||
doc = filter("Hey @#{group.name}", current_user: user)
|
||||
expect(doc.css('a').first.attr('href')).to eq urls.group_url(group)
|
||||
end
|
||||
|
||||
it 'ignores references to a Group that the current user cannot read' do
|
||||
doc = filter("Hey @#{group.name}", current_user: user)
|
||||
expect(doc.to_html).to eq "Hey @#{group.name}"
|
||||
end
|
||||
end
|
||||
|
||||
it 'links with adjacent text' do
|
||||
|
|
|
|||
Loading…
Reference in New Issue