Use password from config in basic auth

This commit is contained in:
2024-07-07 13:29:12 -03:00
parent 31ab54478a
commit 7dd5248a6e
4 changed files with 31 additions and 4 deletions

View File

@ -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

View File

@ -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