Class: Fir::AdminAuth

Inherits:
Rack::Auth::Basic
  • Object
show all
Includes:
AdminMiddleware
Defined in:
lib/fir/admin.rb

Instance Method Summary collapse

Methods included from AdminMiddleware

#admin_path?

Constructor Details

#initialize(*args) ⇒ AdminAuth

Returns a new instance of AdminAuth.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/fir/admin.rb', line 11

def initialize(*args)
  super
  if File.exists?('users.yml')
    @users = YAML::load(File.read('users.yml'))
    @users = {} unless @users.is_a?(Hash) # In case of an invalid YAML file
  else
    @users = {}
  end
  @authenticator = lambda do |username, password|
    if @users[username]
      salt     = @users[username]['salt']
      expected = @users[username]['crypted_password']
      actual   = Fir.encrypt_password(password, salt)
      expected == actual
    else
      false
    end
  end
end

Instance Method Details

#call(env) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/fir/admin.rb', line 31

def call(env)
  if admin_path?(env)
    super(env)
  else
    @app.call(env)
  end
end