Module: TinyAdmin::Plugins::SimpleAuth

Defined in:
lib/tiny_admin/plugins/simple_auth.rb

Defined Under Namespace

Modules: InstanceMethods

Class Method Summary collapse

Class Method Details

.configure(app, opts = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/tiny_admin/plugins/simple_auth.rb', line 9

def configure(app, opts = {})
  opts ||= {}
  password_hash = opts[:password] || ENV.fetch("ADMIN_PASSWORD_HASH", nil)

  Warden::Strategies.add(:secret) do
    define_method(:authenticate!) do
      secret = params["secret"] || ""
      return fail(:invalid_credentials) if Digest::SHA512.hexdigest(secret) != password_hash

      success!(app: "TinyAdmin")
    end
  end

  app.opts[:login_form] = opts[:login_form] || TinyAdmin::Views::Pages::SimpleAuthLogin
  app.use Warden::Manager do |manager|
    manager.default_strategies :secret
    manager.failure_app = TinyAdmin::Authentication
  end
end