Sha256: a9f44ac8151451e1991bb2f29651378c8101811745a25e57dfbfff0a74193e28

Contents?: true

Size: 883 Bytes

Versions: 43

Compression:

Stored size: 883 Bytes

Contents

require 'rack'
require 'webrick/httpauth/htpasswd'

module TDiary
	module Rack
		class Auth
			class PasswordFileNotFound < StandardError; end

			class Basic
				def initialize(app, file = '.htpasswd')
					@authenticator = ::Rack::Auth::Basic.new(app) do |user, pass|
						unless File.exist?(file)
							raise PasswordFileNotFound.new("#{file} is not found. Please create it by htpasswd program.")
						end
						htpasswd = WEBrick::HTTPAuth::Htpasswd.new(file)
						crypted = htpasswd.get_passwd(nil, user, false)
						crypted == pass.crypt(crypted) if crypted
					end
				end

				def call(env)
					begin
						@authenticator.call(env)
					rescue PasswordFileNotFound => e
						[403, {"Content-Type" => "text/plain"}, [e.message]]
					end
				end
			end
		end
	end
end

# Local Variables:
# mode: ruby
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# End:

Version data entries

43 entries across 32 versions & 1 rubygems

Version Path
tdiary-5.2.4 lib/tdiary/rack/auth/basic.rb
tdiary-5.2.3 lib/tdiary/rack/auth/basic.rb
tdiary-5.2.2 lib/tdiary/rack/auth/basic.rb
tdiary-5.2.1 lib/tdiary/rack/auth/basic.rb
tdiary-5.2.0 lib/tdiary/rack/auth/basic.rb
tdiary-5.1.7 lib/tdiary/rack/auth/basic.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/lib/tdiary/rack/auth/basic.rb
tdiary-5.1.6 lib/tdiary/rack/auth/basic.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/tdiary-5.1.4/lib/tdiary/rack/auth/basic.rb
tdiary-5.1.5 lib/tdiary/rack/auth/basic.rb
tdiary-5.1.5 vendor/bundle/ruby/3.0.0/gems/tdiary-5.1.4/lib/tdiary/rack/auth/basic.rb
tdiary-5.1.4 lib/tdiary/rack/auth/basic.rb
tdiary-5.1.3 lib/tdiary/rack/auth/basic.rb
tdiary-5.1.2 vendor/bundle/ruby/2.6.0/gems/tdiary-5.0.14/lib/tdiary/rack/auth/basic.rb
tdiary-5.1.2 lib/tdiary/rack/auth/basic.rb
tdiary-5.1.1 lib/tdiary/rack/auth/basic.rb
tdiary-5.1.1 vendor/bundle/ruby/2.6.0/gems/tdiary-5.0.14/lib/tdiary/rack/auth/basic.rb
tdiary-5.1.0 lib/tdiary/rack/auth/basic.rb
tdiary-5.0.14 lib/tdiary/rack/auth/basic.rb
tdiary-5.0.13 lib/tdiary/rack/auth/basic.rb