class Boxlet::Handlers::Auth

Public Class Methods

new(username, password) click to toggle source
# File lib/handlers/auth.rb, line 4
def initialize(username, password)
  @username = username
  @password = password
  @realm = "Boxlet"
end

Public Instance Methods

authorize(request) { |]| ... } click to toggle source
# File lib/handlers/auth.rb, line 10
def authorize(request)
  @auth = Request.new(request.env)

  return unauthorized unless @auth.provided?
  return bad_request unless @auth.basic?

  if valid?(@username, @password)
    headers = {'REMOTE_USER' => @username}

    [200, headers, yield]
  else
    unauthorized
  end
end

Private Instance Methods

bad_request() click to toggle source
# File lib/handlers/auth.rb, line 45
def bad_request
  content_hash = {
    'CONTENT_TYPE' => 'text/plain',
    'CONTENT_LENGTH' => '0'
  }
  return [400, content_hash, []]
end
challenge() click to toggle source
# File lib/handlers/auth.rb, line 27
def challenge
  'Basic realm="%s"' % @realm
end
unauthorized(www_authenticate = challenge) click to toggle source
# File lib/handlers/auth.rb, line 36
def unauthorized(www_authenticate = challenge)
  content_hash = {
    'CONTENT_TYPE' => 'text/plain',
    'CONTENT_LENGTH' => '0',
    'WWW-Authenticate' => www_authenticate.to_s
  }
  return [401, content_hash, []]
end
valid?(username, password) click to toggle source
# File lib/handlers/auth.rb, line 31
def valid?(username, password)
  @auth.credentials[0] == username &&
    @auth.credentials[1] == password
end