class RackPassword::Block

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/rack_password.rb, line 7
def initialize app, options = {}
  @app = app
  @options = {
    :key => :staging_auth,
    :code_param => :code
    }.merge options
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack_password.rb, line 15
def call env
  request = Rack::Request.new env

  bv = BlockValidator.new(@options, request)
  return @app.call(env) if bv.valid?


  if request.post? and bv.valid_code?(request.params[@options[:code_param].to_s]) # If post method check :code_param value
    domain = @options[:cookie_domain]
    domain ||= request.host == 'localhost' ? '' : ".#{request.host}"
  [301, {'Location' => request.path, 'Set-Cookie' => "#{@options[:key]}=#{request.params[@options[:code_param].to_s]}; domain=#{domain}; expires=30-Dec-2039 23:59:59 GMT"}, ['']] # Redirect if code is valid
  else
    success_rack_response
  end
end
success_rack_response() click to toggle source
# File lib/rack_password.rb, line 31
def success_rack_response
  [200, {'Content-Type' => 'text/html'}, [read_success_view]]
end

Private Instance Methods

read_success_view() click to toggle source
# File lib/rack_password.rb, line 37
def read_success_view
  @success_view ||= File.open(File.join(File.dirname(__FILE__), "views", "block_middleware.html")).read
end