Sha256: 086b407f54d1a9c6a8ab28a34a7871dce51da6010fb95a8f0fca196c53e1efc5

Contents?: true

Size: 914 Bytes

Versions: 43

Compression:

Stored size: 914 Bytes

Contents

require "rack"

module PactBroker
  module Api
    module Authorization
      class ResourceAccessRules
        PATH_INFO = Rack::PATH_INFO
        REQUEST_METHOD = Rack::REQUEST_METHOD

        def initialize(rules)
          @rules = rules
        end

        def access_allowed?(env, level)
          !!rules.find do | rule_level, allowed_methods, path_pattern |
            level_allowed?(level, rule_level) &&
              method_allowed?(env, allowed_methods) &&
              path_allowed?(env, path_pattern)
          end
        end

        private

        attr_reader :rules

        def level_allowed?(level, rule_level)
          level >= rule_level
        end

        def path_allowed?(env, pattern)
          env[PATH_INFO] =~ pattern
        end

        def method_allowed?(env, allowed_methods)
          allowed_methods.include?(env[REQUEST_METHOD])
        end
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
pact_broker-2.113.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.112.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.111.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.109.1 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.109.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.108.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.107.1 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.107.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.107.0.beta.1 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.106.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.105.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.104.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.103.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.102.2 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.102.1 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.102.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.101.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.100.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.99.0 lib/pact_broker/api/authorization/resource_access_rules.rb
pact_broker-2.98.0 lib/pact_broker/api/authorization/resource_access_rules.rb