35 lines
		
	
	
		
			859 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			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
 | 
