Sha256: 749097a261f9d4f3166b595e84435660a408156a970017bcbf3562b2e9234625
Contents?: true
Size: 922 Bytes
Versions: 2
Compression:
Stored size: 922 Bytes
Contents
require 'rack' require 'gollum/auth/version' module Gollum module Auth def self.new(*args) App.new(*args) end class App def initialize(app, opts = { }) @app = app @users = opts.fetch(:users, [ ]) end def call(env) request = Rack::Request.new(env) if request.path_info =~ /^\/(create|edit|delete|rename|revert|upload)(\/.*)?$/ auth = Rack::Auth::Basic::Request.new(env) unless auth.provided? && auth.basic? && valid?(auth.credentials) return [ 401, { 'Content-Type' => 'text/plain', 'WWW-Authenticate' => 'Basic realm="Gollum Wiki"' }, [ 'Not authorized' ] ] end end @app.call(env) end private def valid?(credentials) @users.any? { |u| [ u['user'], u['password'] ] == credentials } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
gollum-auth-0.1.1 | lib/gollum/auth.rb |
gollum-auth-0.1.0 | lib/gollum/auth.rb |