You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

25 lines
879 B

class AuthenticatedPgHero
def initialize(app)
@app = app
end
def call(environment)
request = Rack::Auth::Basic::Request.new(environment)
if valid_credentials?(request)
@app.call(environment)
else
[401, { "Content-Type" => "text/plain", "WWW-Authenticate" => 'Basic realm="PgHero Administration"' }, ["Anmeldung erforderlich"]]
end
end
private
def valid_credentials?(request)
return false unless request.provided? && request.basic?
expected_user = ENV.fetch("PGHERO_USERNAME", "admin")
expected_password = ENV["PGHERO_PASSWORD"].to_s
supplied_user, supplied_password = request.credentials
return false if expected_password.blank?
ActiveSupport::SecurityUtils.secure_compare(supplied_user.to_s, expected_user) && ActiveSupport::SecurityUtils.secure_compare(supplied_password.to_s, expected_password)
end
end