Use password from config in basic auth
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
require "cr-config"
|
||||
require "kemal-basic-auth"
|
||||
|
||||
class Config
|
||||
include CrConfig
|
||||
@ -17,3 +18,23 @@ class Config
|
||||
Config.set_instance config
|
||||
end
|
||||
end
|
||||
|
||||
class ConfigAuthHandler < Kemal::BasicAuth::Handler
|
||||
def initialize
|
||||
# Ignored, just make the compiler happy
|
||||
@credentials = Kemal::BasicAuth::Credentials.new({"foo" => "bar"})
|
||||
end
|
||||
|
||||
def authorize?(value) : String?
|
||||
username, password = Base64.decode_string(value[BASIC.size + 1..-1]).split(":")
|
||||
if username == "admin" && password == Config.instance.password
|
||||
username
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Tie auth to config
|
||||
|
||||
add_handler ConfigAuthHandler.new
|
||||
|
@ -6,14 +6,11 @@ require "./terminal.cr"
|
||||
require "compress/gzip"
|
||||
require "crystar"
|
||||
require "docr"
|
||||
require "kemal-basic-auth"
|
||||
require "kemal"
|
||||
require "uuid"
|
||||
|
||||
Config.load
|
||||
|
||||
basic_auth "admin", Config.instance.password
|
||||
|
||||
macro version
|
||||
"{{ `grep version shard.yml | cut -d: -f2` }}".strip()
|
||||
end
|
||||
@ -26,4 +23,10 @@ get "/version" do
|
||||
"#{version}"
|
||||
end
|
||||
|
||||
get "/reload" do
|
||||
Log.info { "Reloading configuration" }
|
||||
Config.load
|
||||
"Config reloaded"
|
||||
end
|
||||
|
||||
Kemal.run
|
||||
|
Reference in New Issue
Block a user