class PactBroker::Api::Authorization::ResourceAccessPolicy

Constants

ALL_METHODS
ALL_PATHS
HEARTBEAT_PATH
PACTS_FOR_VERIFICATION_PATH
POST
PUBLIC
READ
READ_METHODS
WRITE

Attributes

resource_access_rules[R]

Public Class Methods

build(allow_public_read_access, allow_public_access_to_heartbeat, enable_public_badge_access) click to toggle source
# File lib/pact_broker/api/authorization/resource_access_policy.rb, line 33
def self.build(allow_public_read_access, allow_public_access_to_heartbeat, enable_public_badge_access)
  rules = [
    [WRITE, ALL_METHODS, ALL_PATHS],
    [READ, READ_METHODS, ALL_PATHS],
    [READ, [POST], PACTS_FOR_VERIFICATION_PATH],
  ]

  if enable_public_badge_access
    rules.concat(BADGE_PATHS.collect { | badge_path | [PUBLIC, READ_METHODS, badge_path] })
  end

  if allow_public_access_to_heartbeat
    rules.unshift([PUBLIC, READ_METHODS, HEARTBEAT_PATH])
  end

  if allow_public_read_access
    rules.unshift([PUBLIC, READ_METHODS, ALL_PATHS])
    rules.unshift([PUBLIC, [POST], PACTS_FOR_VERIFICATION_PATH])
  end

  ResourceAccessPolicy.new(ResourceAccessRules.new(rules))
end
new(resource_access_rules) click to toggle source
# File lib/pact_broker/api/authorization/resource_access_policy.rb, line 21
def initialize(resource_access_rules)
  @resource_access_rules = resource_access_rules
end

Public Instance Methods

public_access_allowed?(env) click to toggle source
# File lib/pact_broker/api/authorization/resource_access_policy.rb, line 25
def public_access_allowed?(env)
  resource_access_rules.access_allowed?(env, PUBLIC)
end
read_access_allowed?(env) click to toggle source
# File lib/pact_broker/api/authorization/resource_access_policy.rb, line 29
def read_access_allowed?(env)
  resource_access_rules.access_allowed?(env, READ)
end