diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2012-09-19 21:48:33 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2012-09-19 21:48:33 +0000 |
commit | 59d8ae61ef731351ca54a19bd9868b0b1e862c66 (patch) | |
tree | 7bb419ebf78530574c4bf77e5afbf3f72950b6b5 /app/models/issue.rb | |
parent | fa2fe3e1e852f90a6f5e91fbcda6ab666db0a2df (diff) | |
download | redmine-59d8ae61ef731351ca54a19bd9868b0b1e862c66.tar.gz redmine-59d8ae61ef731351ca54a19bd9868b0b1e862c66.zip |
Anonymous users should not see private issues with anonymous author (#11872).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10433 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/issue.rb')
-rw-r--r-- | app/models/issue.rb | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/app/models/issue.rb b/app/models/issue.rb index 6e7f9a52c..5b1cfadb8 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -88,11 +88,19 @@ class Issue < ActiveRecord::Base when 'all' nil when 'default' - user_ids = [user.id] + user.groups.map(&:id) - "(#{table_name}.is_private = #{connection.quoted_false} OR #{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))" + if user.logged? + user_ids = [user.id] + user.groups.map(&:id) + "(#{table_name}.is_private = #{connection.quoted_false} OR #{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))" + else + "(#{table_name}.is_private = #{connection.quoted_false})" + end when 'own' - user_ids = [user.id] + user.groups.map(&:id) - "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))" + if user.logged? + user_ids = [user.id] + user.groups.map(&:id) + "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))" + else + '1=0' + end else '1=0' end @@ -106,9 +114,9 @@ class Issue < ActiveRecord::Base when 'all' true when 'default' - !self.is_private? || self.author == user || user.is_or_belongs_to?(assigned_to) + !self.is_private? || (user.logged? && (self.author == user || user.is_or_belongs_to?(assigned_to))) when 'own' - self.author == user || user.is_or_belongs_to?(assigned_to) + user.logged? && (self.author == user || user.is_or_belongs_to?(assigned_to)) else false end |