Sha256: 21afef135a8fdcae9309bb7ee8dfc640f6f1a080fac025b6e58b2c9091f18e8f

Contents?: true

Size: 1.03 KB

Versions: 7

Compression:

Stored size: 1.03 KB

Contents

module CanTango
  class PermissionEngine < Engine
    class Collector
      include CanTango::Helpers::Debug

      attr_reader :ability, :permissions, :type

      def initialize ability, permissions, type
        debug "Collecting #{type} permissions"
        @ability = ability
        @permissions = permissions
        @type = type
      end

      def build
        relevant_rules.inject([]){|evaluators, (name, rules)|
          evaluators << CanTango::PermissionEngine::Evaluator.new(ability, rules) 
        }
      end

      def relevant_rules
        selector.select permissions
      end

      def selector
        CanTango::PermissionEngine::Selector.create type, self
      end

      def role_groups_list
        ability.role_groups
      end

      def roles_list
        ability.roles
      end

      def user
        ability.user
      end

      def user_account
        ability.user_account
      end
      alias_method :account, :user_account

      def user_key_field
        ability.user_key_field
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
cantango-0.9.4.7 lib/cantango/permission_engine/collector.rb
cantango-0.9.4.6 lib/cantango/permission_engine/collector.rb
cantango-0.9.4.5 lib/cantango/permission_engine/collector.rb
cantango-0.9.4.3 lib/cantango/permission_engine/collector.rb
cantango-0.9.4.2 lib/cantango/permission_engine/collector.rb
cantango-0.9.4.1 lib/cantango/permission_engine/collector.rb
cantango-0.9.4 lib/cantango/permission_engine/collector.rb