Compare commits
2 Commits
dfe9b1a90f
...
6f4b7335f8
Author | SHA1 | Date | |
---|---|---|---|
6f4b7335f8 | |||
9f222725d1 |
41
app.rb
41
app.rb
@ -209,6 +209,35 @@ before do
|
|||||||
request.session_options[:skip] = !request.path_info.start_with?("/session")
|
request.session_options[:skip] = !request.path_info.start_with?("/session")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
helpers do
|
||||||
|
def json(obj, opts: nil, pretty: false)
|
||||||
|
if pretty
|
||||||
|
JSON.pretty_generate obj, opts:
|
||||||
|
else
|
||||||
|
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
|
get "/" do
|
||||||
"hello there!\n"
|
"hello there!\n"
|
||||||
end
|
end
|
||||||
@ -372,3 +401,15 @@ get "/chunked/:delay" do
|
|||||||
out << "Hello, world!\n"
|
out << "Hello, world!\n"
|
||||||
end
|
end
|
||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user