Skip to content

Commit ba016c5

Browse files
committed
Invalid links to versions with sharing in project tree (#32860).
Patch by Alexander Meindl. git-svn-id: http://svn.redmine.org/redmine/trunk@20149 e93f8b46-1217-0410-a6f0-8f06a7374b81
1 parent e48ff48 commit ba016c5

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

app/helpers/versions_helper.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ def version_filtered_issues_path(version, options = {})
3131
options = {:fixed_version_id => version, :set_filter => 1}.merge(options)
3232
project =
3333
case version.sharing
34-
when 'hierarchy', 'tree'
35-
if version.project && version.project.root.visible?
34+
when 'tree'
35+
if version.project && version.project.root.visible? && User.current.allowed_to?(:view_issues, version.project.root)
3636
version.project.root
3737
else
38-
version.project
38+
nil
3939
end
4040
when 'system'
4141
nil

test/helpers/version_helper_test.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_version_filtered_issues_path_sharing_descendants
4242
def test_version_filtered_issues_path_sharing_hierarchy
4343
version = Version.new(:name => 'test', :sharing => 'hierarchy')
4444
version.project = Project.find(5)
45-
assert_match '/projects/ecookbook/issues?', version_filtered_issues_path(version)
45+
assert_match '/projects/private-child/issues?', version_filtered_issues_path(version)
4646
end
4747

4848
def test_version_filtered_issues_path_sharing_tree
@@ -51,6 +51,14 @@ def test_version_filtered_issues_path_sharing_tree
5151
assert_match '/projects/ecookbook/issues?', version_filtered_issues_path(version)
5252
end
5353

54+
def test_version_filtered_issues_path_sharing_tree_without_permission_to_root_project
55+
EnabledModule.where("name = 'issue_tracking' AND project_id = 1").delete_all
56+
version = Version.new(:name => 'test', :sharing => 'tree')
57+
version.project = Project.find(5)
58+
assert_no_match '/projects/ecookbook/issues?', version_filtered_issues_path(version)
59+
assert_match '/issues?', version_filtered_issues_path(version)
60+
end
61+
5462
def test_version_filtered_issues_path_sharing_system
5563
version = Version.new(:name => 'test', :sharing => 'system')
5664
version.project = Project.find(5)

0 commit comments

Comments
 (0)