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