##// END OF EJS Templates
Don't consider roles without issue add/edit permissions for determining fields permissions (#15988)....
Jean-Philippe Lang -
r13365:453803c68f24
parent child
Show More
@@ -539,6 +539,7 class Issue < ActiveRecord::Base
539
539
540 user_real = user || User.current
540 user_real = user || User.current
541 roles = user_real.admin ? Role.all.to_a : user_real.roles_for_project(project)
541 roles = user_real.admin ? Role.all.to_a : user_real.roles_for_project(project)
542 roles = roles.select(&:consider_workflow?)
542 return {} if roles.empty?
543 return {} if roles.empty?
543
544
544 result = {}
545 result = {}
@@ -113,6 +113,10 class Role < ActiveRecord::Base
113 !permissions.nil? && permissions.include?(perm.to_sym)
113 !permissions.nil? && permissions.include?(perm.to_sym)
114 end
114 end
115
115
116 def consider_workflow?
117 has_permission?(:add_issues) || has_permission?(:edit_issues)
118 end
119
116 def <=>(role)
120 def <=>(role)
117 if role
121 if role
118 if builtin == role.builtin
122 if builtin == role.builtin
@@ -914,6 +914,29 class IssueTest < ActiveSupport::TestCase
914 assert_equal %w(due_date), issue.read_only_attribute_names(user)
914 assert_equal %w(due_date), issue.read_only_attribute_names(user)
915 end
915 end
916
916
917 def test_workflow_rules_should_ignore_roles_without_issue_permissions
918 role = Role.generate! :permissions => [:view_issues, :edit_issues]
919 ignored_role = Role.generate! :permissions => [:view_issues]
920
921 WorkflowPermission.delete_all
922 WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 1,
923 :role => role, :field_name => 'due_date',
924 :rule => 'required')
925 WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 1,
926 :role => role, :field_name => 'start_date',
927 :rule => 'readonly')
928 WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 1,
929 :role => role, :field_name => 'done_ratio',
930 :rule => 'readonly')
931 user = User.generate!
932 User.add_to_project user, Project.find(1), [role, ignored_role]
933
934 issue = Issue.new(:project_id => 1, :tracker_id => 1, :status_id => 1)
935
936 assert_equal %w(due_date), issue.required_attribute_names(user)
937 assert_equal %w(done_ratio start_date), issue.read_only_attribute_names(user).sort
938 end
939
917 def test_copy
940 def test_copy
918 issue = Issue.new.copy_from(1)
941 issue = Issue.new.copy_from(1)
919 assert issue.copy?
942 assert issue.copy?
General Comments 0
You need to be logged in to leave comments. Login now