class Rack::Auth::BasicPath

Public Class Methods

new(app, username, password, *paths) click to toggle source
# File lib/basic_path.rb, line 7
def initialize(app, username, password, *paths)
  @app = app
  @username = username
  @password = password
  @path_regex = Regexp.union(paths)
end

Public Instance Methods

call(env) click to toggle source
# File lib/basic_path.rb, line 14
def call(env)
  return @app.call(env) unless env['PATH_INFO'].match(@path_regex)

  auth = BasicPath::Request.new(env)

  return unauthorized unless auth.provided?

  return bad_request unless auth.basic?

  if valid?(auth)
    env['REMOTE_USER'] = auth.username

    return @app.call(env)
  end

  unauthorized
end

Private Instance Methods

challenge() click to toggle source
# File lib/basic_path.rb, line 34
def challenge
  'Basic realm="%s"' % realm
end
valid?(auth) click to toggle source
# File lib/basic_path.rb, line 38
def valid?(auth)
  [@username, @password] == auth.credentials
end