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
This commit is contained in:
Go MAEDA
2020-10-18 02:28:27 +00:00
parent e48ff48820
commit ba016c5d77
2 changed files with 12 additions and 4 deletions

View File

@@ -31,11 +31,11 @@ module VersionsHelper
options = {:fixed_version_id => version, :set_filter => 1}.merge(options) options = {:fixed_version_id => version, :set_filter => 1}.merge(options)
project = project =
case version.sharing case version.sharing
when 'hierarchy', 'tree' when 'tree'
if version.project && version.project.root.visible? if version.project && version.project.root.visible? && User.current.allowed_to?(:view_issues, version.project.root)
version.project.root version.project.root
else else
version.project nil
end end
when 'system' when 'system'
nil nil

View File

@@ -42,7 +42,7 @@ class VersionsHelperTest < Redmine::HelperTest
def test_version_filtered_issues_path_sharing_hierarchy def test_version_filtered_issues_path_sharing_hierarchy
version = Version.new(:name => 'test', :sharing => 'hierarchy') version = Version.new(:name => 'test', :sharing => 'hierarchy')
version.project = Project.find(5) version.project = Project.find(5)
assert_match '/projects/ecookbook/issues?', version_filtered_issues_path(version) assert_match '/projects/private-child/issues?', version_filtered_issues_path(version)
end end
def test_version_filtered_issues_path_sharing_tree def test_version_filtered_issues_path_sharing_tree
@@ -51,6 +51,14 @@ class VersionsHelperTest < Redmine::HelperTest
assert_match '/projects/ecookbook/issues?', version_filtered_issues_path(version) assert_match '/projects/ecookbook/issues?', version_filtered_issues_path(version)
end end
def test_version_filtered_issues_path_sharing_tree_without_permission_to_root_project
EnabledModule.where("name = 'issue_tracking' AND project_id = 1").delete_all
version = Version.new(:name => 'test', :sharing => 'tree')
version.project = Project.find(5)
assert_no_match '/projects/ecookbook/issues?', version_filtered_issues_path(version)
assert_match '/issues?', version_filtered_issues_path(version)
end
def test_version_filtered_issues_path_sharing_system def test_version_filtered_issues_path_sharing_system
version = Version.new(:name => 'test', :sharing => 'system') version = Version.new(:name => 'test', :sharing => 'system')
version.project = Project.find(5) version.project = Project.find(5)