From 7e1f04bdfb6fd8860a3a5b552b5983be9d1f1b1f Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 22 May 2011 09:14:36 +0000 Subject: [PATCH] Do not propose users that can't view an issue as watchers (#7412). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5876 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- test/unit/watcher_test.rb | 11 +++++++++++ .../acts_as_watchable/lib/acts_as_watchable.rb | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/test/unit/watcher_test.rb b/test/unit/watcher_test.rb index 86d96b2cb..d9abb7f6d 100644 --- a/test/unit/watcher_test.rb +++ b/test/unit/watcher_test.rb @@ -53,6 +53,17 @@ class WatcherTest < ActiveSupport::TestCase assert issue.watched_by?(User.find(1)) end + def test_addable_watcher_users + addable_watcher_users = @issue.addable_watcher_users + assert_kind_of Array, addable_watcher_users + assert_kind_of User, addable_watcher_users.first + end + + def test_addable_watcher_users_should_not_include_user_that_cannot_view_the_object + issue = Issue.new(:project => Project.find(1), :is_private => true) + assert_nil issue.addable_watcher_users.detect {|user| !issue.visible?(user)} + end + def test_recipients @issue.watchers.delete_all @issue.reload diff --git a/vendor/plugins/acts_as_watchable/lib/acts_as_watchable.rb b/vendor/plugins/acts_as_watchable/lib/acts_as_watchable.rb index 61196d9a8..a22098eec 100644 --- a/vendor/plugins/acts_as_watchable/lib/acts_as_watchable.rb +++ b/vendor/plugins/acts_as_watchable/lib/acts_as_watchable.rb @@ -31,7 +31,11 @@ module Redmine # Returns an array of users that are proposed as watchers def addable_watcher_users - self.project.users.sort - self.watcher_users + users = self.project.users.sort - self.watcher_users + if respond_to?(:visible?) + users.reject! {|user| !visible?(user)} + end + users end # Adds user as a watcher