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