Add HTTP basic authentication endpoint
All checks were successful
Gitea Actions Demo / lint (push) Successful in 1m32s
Gitea Actions Demo / test (push) Successful in 1m18s
Gitea Actions Demo / release-image (push) Successful in 1m7s

This commit is contained in:
Ryan Cavicchioni 2024-09-04 15:24:12 -05:00
parent 9f222725d1
commit 6f4b7335f8
Signed by: ryanc
GPG Key ID: 877EEDAF9245103D

31
app.rb
View File

@ -217,6 +217,25 @@ helpers do
JSON.generate(obj, opts:)
end
end
def protected! hidden = false
return if authorized?
if hidden
halt 404, "Not Found"
else
headers["WWW-Authenticate"] = 'Basic realm="Restricted Area"'
halt 401, "Unauthorized"
end
end
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? and
@auth.basic? and
@auth.credentials and
@auth.credentials == ["qwer", "asdf"]
end
end
get "/" do
@ -382,3 +401,15 @@ get "/chunked/:delay" do
out << "Hello, world!\n"
end
end
route :delete, :get, :patch, :post, :put, "/auth/basic", provides: "json" do
pretty = params.key? :pretty
if params.key? :hidden
protected! hidden: true
else
protected!
end
json({authenticated: true, user: @auth.username}, pretty:)
end