Sha256: 9467aaaf4719a95368d1136d5ae5c250a2c1b95bd72f95c11cc3fd9e5bdc7d57

Contents?: true

Size: 654 Bytes

Versions: 2

Compression:

Stored size: 654 Bytes

Contents

module Credentials
  class Rulebook
    attr_reader :rules
    
    def initialize(klass, rules = [])
      @rules = rules
      @klass = klass
    end
    
    def can(verb, *args)
      @rules << Credentials::Rules::Can.new(@klass, verb, *args)
    end
    
    def cannot(verb, *args)
      @rules << Credentials::Rules::Cannot.new(@klass, verb, *args)
    end
    
    def can?(actor, verb, *args)
      result = @klass.credential_options[:allow_by_default] || false
      @rules.each do |rule|
        result = true if rule.allow?(actor, verb, *args)
        result = false if rule.deny?(actor, verb, *args)
      end
      result
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
fauxparse-credentials-1.0.1 lib/credentials/rulebook.rb
credentials-1.0.1 lib/credentials/rulebook.rb