class Cerberus::Basic

Public Class Methods

new(app) click to toggle source
# File lib/cerberus/basic.rb, line 5
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/cerberus/basic.rb, line 9
def call(env)
  if Cerberus.config.basic.enabled.call(env)
    auth = Rack::Auth::Basic.new(@app) do |username, password|
      username_digest = Cerberus.config.basic.username_digest
      password_digest = Cerberus.config.basic.password_digest

      eql?(username, username_digest) & eql?(password, password_digest)
    end

    auth.call(env)
  else
    @app.call(env)
  end
end

Private Instance Methods

eql?(value, comparable) click to toggle source
# File lib/cerberus/basic.rb, line 26
def eql?(value, comparable)
  Rack::Utils.secure_compare(::Digest::SHA256.hexdigest(value), comparable)
end