summaryrefslogtreecommitdiffstats
path: root/app/models/issue.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2011-04-11 17:53:15 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2011-04-11 17:53:15 +0000
commitaa0d01b3d9f5ae5634eda73e1becd75cc4668f3e (patch)
tree8a2a59ba70b18777cf35940ff01b961709405893 /app/models/issue.rb
parent5fd891aa72243e7fff19a05d080c921ae420eeeb (diff)
downloadredmine-aa0d01b3d9f5ae5634eda73e1becd75cc4668f3e.tar.gz
redmine-aa0d01b3d9f5ae5634eda73e1becd75cc4668f3e.zip
Adds an issues visibility level on roles (#7412).
It can be set so that users only see their own issues (created or assigned). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5416 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/issue.rb')
-rw-r--r--app/models/issue.rb22
1 files changed, 20 insertions, 2 deletions
diff --git a/app/models/issue.rb b/app/models/issue.rb
index aca68b1ae..cbfad6a57 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -88,12 +88,30 @@ class Issue < ActiveRecord::Base
# Returns a SQL conditions string used to find all issues visible by the specified user
def self.visible_condition(user, options={})
- Project.allowed_to_condition(user, :view_issues, options)
+ Project.allowed_to_condition(user, :view_issues, options) do |role, user|
+ case role.issues_visibility
+ when 'default'
+ nil
+ when 'own'
+ "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id = #{user.id})"
+ else
+ '1=0'
+ end
+ end
end
# Returns true if usr or current user is allowed to view the issue
def visible?(usr=nil)
- (usr || User.current).allowed_to?(:view_issues, self.project)
+ (usr || User.current).allowed_to?(:view_issues, self.project) do |role, user|
+ case role.issues_visibility
+ when 'default'
+ true
+ when 'own'
+ self.author == user || self.assigned_to == user
+ else
+ false
+ end
+ end
end
def after_initialize