gollum、というかSinatraのはなし。--configで渡すファイルに以下のような感じで記述する。
module Precious
class App < Sinatra::Base
enable :logging
before '/private/*' do
response['WWW-Authenticate'] = %(Basic realm="private area.")
throw(:halt, [401, "Not authorized\n"]) unless private_authorized?
show_page_or_file("/private/#{params[:splat].first}")
end
def private_authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.credentials == ['user', 'pass'] #=> username, password
end
end
end