class PactBroker::Api::Middleware::BasicAuth

Attributes

app[R]
app_with_read_auth[R]
app_with_write_auth[R]
policy[R]
read_credentials[R]
write_credentials[R]

Public Class Methods

new(app, write_credentials, read_credentials, policy) click to toggle source
# File lib/pact_broker/api/middleware/basic_auth.rb, line 10
def initialize(app, write_credentials, read_credentials, policy)
  @app = app
  @write_credentials = write_credentials
  @read_credentials = read_credentials
  @app_with_write_auth = build_app_with_write_auth
  @app_with_read_auth = build_app_with_read_auth
  @policy = policy
end

Public Instance Methods

call(env) click to toggle source
# File lib/pact_broker/api/middleware/basic_auth.rb, line 19
def call(env)
  if policy.public_access_allowed?(env)
    app.call(env)
  elsif policy.read_access_allowed?(env)
    app_with_read_auth.call(env)
  else
    app_with_write_auth.call(env)
  end
end

Protected Instance Methods

read_credentials_match(*credentials) click to toggle source
# File lib/pact_broker/api/middleware/basic_auth.rb, line 35
def read_credentials_match(*credentials)
  is_present?(read_credentials) && credentials == read_credentials
end
write_credentials_match(*credentials) click to toggle source
# File lib/pact_broker/api/middleware/basic_auth.rb, line 31
def write_credentials_match(*credentials)
  is_present?(write_credentials) && credentials == write_credentials
end

Private Instance Methods

build_app_with_read_auth() click to toggle source
# File lib/pact_broker/api/middleware/basic_auth.rb, line 50
def build_app_with_read_auth
  this = self
  Rack::Auth::Basic.new(app, "Restricted area") do |username, password|
    this.write_credentials_match(username, password) || this.read_credentials_match(username, password)
  end
end
build_app_with_write_auth() click to toggle source
# File lib/pact_broker/api/middleware/basic_auth.rb, line 43
def build_app_with_write_auth
  this = self
  Rack::Auth::Basic.new(app, "Restricted area") do |username, password|
    this.write_credentials_match(username, password)
  end
end
is_present?(credentials) click to toggle source
# File lib/pact_broker/api/middleware/basic_auth.rb, line 57
def is_present?(credentials)
  !credentials.first.blank? && !credentials.last.blank?
end