Sha256: e180693b850709f73161e8385575acdf0aa88073ae4b5aedcf40e7aa3907a898

Contents?: true

Size: 1.24 KB

Versions: 5

Compression:

Stored size: 1.24 KB

Contents

module CanTango
  class PermissionEngine < Engine
    autoload_modules :Collector, :Compiler, :Evaluator, :Selector
    autoload_modules :Factory, :Loader, :Parser, :Permission
    autoload_modules :RulesParser, :Store, :YamlStore, :Statements, :Statement

    include CanTango::Ability::Executor
    include CanTango::Ability::RoleHelpers
    include CanTango::Ability::UserHelpers

    def initialize ability
      super
    end

    def permit_rules
      permissions.each do |permission|
        permission.evaluate! user
      end
    end

    def engine_name
      :permission
    end

    def valid?
      puts "valid_mode? #{valid_mode?} #{modes} #{cached?}"
      return false if !valid_mode?
      permissions.empty? ? invalid : true
    end

    def permissions
      permission_factory.build!
    end

    protected

    alias_method :cache_key, :engine_name

    def start_execute
      debug "Permission Engine executing..."
    end

    def end_execute
      debug "Done Permission Engine"
    end

    def invalid
      debug "No permissions found!"
      false
    end

    def permission_factory
      @permission_factory ||= CanTango::PermissionEngine::Factory.new self
    end

    def changed?
      permission_factory.store.changed?
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

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