fluke/devops-service/auth/devops_auth.rb
Tim Lianov 03dc3d8d99 v3
2018-04-04 22:44:39 +03:00

35 lines
859 B
Ruby

module Sinatra
module DevopsAuth
module Helpers
def protect!
return if auth_with_basic?
headers['WWW-Authenticate'] = 'Basic realm="Restricted Area"'
halt 401, "Not authorized\n"
end
def auth_with_basic?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
if @auth.provided? and @auth.basic? and @auth.credentials
c = @auth.credentials
begin
u = Devops::Model::User.auth(c[0], c[1])
return false if u.nil?
request.env['REMOTE_USER'] = c[0]
request.env['USER'] = u
true
rescue Devops::Exception::RecordNotFound => e
false
end
else
false
end
end
end
def self.registered(app)
app.helpers Sinatra::DevopsAuth::Helpers
end
end
end