summaryrefslogtreecommitdiffstats
path: root/lib/redmine/access_control.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/redmine/access_control.rb')
-rw-r--r--lib/redmine/access_control.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/redmine/access_control.rb b/lib/redmine/access_control.rb
index 3845fa5e7..b4f3cca73 100644
--- a/lib/redmine/access_control.rb
+++ b/lib/redmine/access_control.rb
@@ -54,6 +54,16 @@ module Redmine
@loggedin_only_permissions ||= @permissions.select {|p| p.require_loggedin?}
end
+ def read_action?(action)
+ if action.is_a?(Symbol)
+ perm = permission(action)
+ !perm.nil? && perm.read?
+ else
+ s = "#{action[:controller]}/#{action[:action]}"
+ permissions.detect {|p| p.actions.include?(s) && !p.read?}.nil?
+ end
+ end
+
def available_project_modules
@available_project_modules ||= @permissions.collect(&:project_module).uniq.compact
end
@@ -93,6 +103,7 @@ module Redmine
@actions = []
@public = options[:public] || false
@require = options[:require]
+ @read = options[:read] || false
@project_module = options[:project_module]
hash.each do |controller, actions|
if actions.is_a? Array
@@ -115,6 +126,10 @@ module Redmine
def require_loggedin?
@require && (@require == :member || @require == :loggedin)
end
+
+ def read?
+ @read
+ end
end
end
end