diff options
author | Go MAEDA <maeda@farend.jp> | 2021-01-24 05:31:18 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2021-01-24 05:31:18 +0000 |
commit | 0f4228d4e6dca2b23409b8a67632c473e0426555 (patch) | |
tree | 46a11a5e7f3a5704c69a4fc5d92a1d380f000bc4 | |
parent | 020f56d93338d83bee4f8bf4ca45399615b356dc (diff) | |
download | redmine-0f4228d4e6dca2b23409b8a67632c473e0426555.tar.gz redmine-0f4228d4e6dca2b23409b8a67632c473e0426555.zip |
Do not propose watchers that are not allowed to see the object (#33329).
Patch by Marius BALTEANU.
git-svn-id: http://svn.redmine.org/redmine/trunk@20724 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/watchers_controller.rb | 7 | ||||
-rw-r--r-- | test/functional/watchers_controller_test.rb | 14 |
2 files changed, 20 insertions, 1 deletions
diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index f4e8f2287..86533c481 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -141,7 +141,12 @@ class WatchersController < ApplicationController end users = scope.sorted.like(params[:q]).to_a if @watchables && @watchables.size == 1 - users -= @watchables.first.watcher_users + watchable_object = @watchables.first + users -= watchable_object.watcher_users + + if watchable_object.respond_to?(:visible?) + users.reject! {|user| user.is_a?(User) && !watchable_object.visible?(user)} + end end users end diff --git a/test/functional/watchers_controller_test.rb b/test/functional/watchers_controller_test.rb index 4ab9c8243..4e93ce606 100644 --- a/test/functional/watchers_controller_test.rb +++ b/test/functional/watchers_controller_test.rb @@ -335,6 +335,20 @@ class WatchersControllerTest < Redmine::ControllerTest assert_not_include hidden.name, response.body end + def test_autocomplete_for_user_should_not_return_users_without_object_visibility + @request.session[:user_id] = 1 + get :autocomplete_for_user, :params => { + q: 'rober', + project_id: 'onlinestore', + object_id: '4', + object_type: 'issue' + }, :xhr => true + + assert_response :success + + assert response.body.blank? + end + def test_append @request.session[:user_id] = 2 assert_no_difference 'Watcher.count' do |