diff options
Diffstat (limited to 'lib/redmine/access_control.rb')
-rw-r--r-- | lib/redmine/access_control.rb | 15 |
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 |