Module Authorization::Maintenance::Usage
In: lib/declarative_authorization/maintenance.rb

Module for grouping usage-related helper methods

Methods

Public Class methods

Delivers a hash of {ControllerClass => usage_info_hash}, where usage_info_hash has the form of

[Source]

     # File lib/declarative_authorization/maintenance.rb, line 55
 55:       def self.usages_by_controller
 56:         # load each application controller
 57:         begin
 58:           Dir.glob(File.join(::Rails.root, 'app', 'controllers', '**', '*_controller\.rb')) do |entry|
 59:             require entry
 60:           end
 61:         rescue Errno::ENOENT
 62:         end
 63:         controllers = []
 64:         ObjectSpace.each_object(Class) do |obj|
 65:           controllers << obj if obj.ancestors.include?(ActionController::Base) and obj != ActionController::Base and obj.name.demodulize != 'ApplicationController'
 66:         end
 67: 
 68:         controllers.inject({}) do |memo, controller|
 69:           catchall_permissions = []
 70:           permission_by_action = {}
 71:           controller.all_filter_access_permissions.each do |controller_permissions|
 72:             catchall_permissions << controller_permissions if controller_permissions.actions.include?(:all)
 73:             controller_permissions.actions.reject {|action| action == :all}.each do |action|
 74:               permission_by_action[action] = controller_permissions
 75:             end
 76:           end
 77: 
 78:           actions = controller.public_instance_methods(false) - controller.hidden_actions.to_a
 79:           memo[controller] = actions.inject({}) do |actions_memo, action|
 80:             action_sym = action.to_sym
 81:             actions_memo[action_sym] =
 82:               if permission_by_action[action_sym]
 83:                 {
 84:                   :privilege => permission_by_action[action_sym].privilege,
 85:                   :context   => permission_by_action[action_sym].context,
 86:                   :controller_permissions => [permission_by_action[action_sym]]
 87:                 }
 88:               elsif !catchall_permissions.empty?
 89:                 {
 90:                   :privilege => catchall_permissions[0].privilege,
 91:                   :context   => catchall_permissions[0].context,
 92:                   :controller_permissions => catchall_permissions
 93:                 }
 94:               else
 95:                 {}
 96:               end
 97:             actions_memo
 98:           end
 99:           memo
100:         end
101:       end

[Validate]