rack-auth-cheat 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +2 -0
- data/MANIFEST +7 -0
- data/README +38 -0
- data/Rakefile +54 -0
- data/lib/rack/auth/cheat.rb +58 -0
- data/rack-auth-cheat.gemspec +25 -0
- data/test/test_rack_auth_cheat.rb +22 -0
- metadata +73 -0
data/CHANGES
ADDED
data/MANIFEST
ADDED
data/README
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
= Description
|
2
|
+
Rack middleware that authenticates requests with matching username and password
|
3
|
+
|
4
|
+
= Prerequisites
|
5
|
+
rack 1.0.0 or later
|
6
|
+
|
7
|
+
= Usage
|
8
|
+
use "Rack::Auth::Cheat", "user_field", "password_field"
|
9
|
+
|
10
|
+
= Default Fields
|
11
|
+
The default user field is "username".
|
12
|
+
The default password field is "password".
|
13
|
+
|
14
|
+
= Details
|
15
|
+
The rack-auth-cheat library provides a Rack middleware interface which authenticates
|
16
|
+
any request with a matching username and password. This is useful in development
|
17
|
+
environments, especially as a way to stub out an external authentication system. Be
|
18
|
+
sure to include this from an environment-specific file such as
|
19
|
+
config/environments/development.rb rather than from a global configuration file such
|
20
|
+
as config/environment.rb
|
21
|
+
|
22
|
+
The call method we've defined first checks to see if the AUTH_USER
|
23
|
+
environment variable is set. If it is, we assume that the user has
|
24
|
+
already been authenticated and move on.
|
25
|
+
|
26
|
+
If AUTH_USER is not set, and AUTH_FAIL is not set, we then check whether
|
27
|
+
the username and password match (the "Cheat" authentication method). If
|
28
|
+
they match, AUTH_USER is set to the username.
|
29
|
+
|
30
|
+
If they don't match then the request is passed on without modification.
|
31
|
+
AUTH_FAIL will not be set by this class.
|
32
|
+
|
33
|
+
It up to the application to check for the presence of AUTH_USER and/or
|
34
|
+
AUTH_FAIL and act as necessary.
|
35
|
+
|
36
|
+
= Authors
|
37
|
+
Daniel Berger
|
38
|
+
Charlie O'Keefe
|
data/Rakefile
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rbconfig'
|
4
|
+
|
5
|
+
desc 'Install the rack-auth-cheat library (non-gem)'
|
6
|
+
task :install do
|
7
|
+
dir = File.join(CONFIG['sitelibdir'], 'rack', 'auth')
|
8
|
+
FileUtils.mkdir_p(dir) unless File.exists?(dir)
|
9
|
+
file = 'lib/rack/auth/cheat.rb'
|
10
|
+
FileUtils.cp_r(file, dir, :verbose => true)
|
11
|
+
end
|
12
|
+
|
13
|
+
desc 'Build the gem'
|
14
|
+
task :gem do
|
15
|
+
spec = eval(IO.read('rack-auth-cheat.gemspec'))
|
16
|
+
Gem::Builder.new(spec).build
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'Install the rack-auth-cheat library as a gem'
|
20
|
+
task :install_gem => [:gem] do
|
21
|
+
file = Dir["*.gem"].first
|
22
|
+
sh "gem install #{file}"
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'Export the git archive to a .zip, .gz and .bz2 file in your home directory'
|
26
|
+
task :export, :output_file do |t, args|
|
27
|
+
file = args[:output_file]
|
28
|
+
|
29
|
+
sh "git archive --prefix #{file}/ --output #{ENV['HOME']}/#{file}.tar master"
|
30
|
+
|
31
|
+
Dir.chdir(ENV['HOME']) do
|
32
|
+
sh "gzip -f #{ENV['HOME']}/#{file}.tar"
|
33
|
+
end
|
34
|
+
|
35
|
+
sh "git archive --prefix #{file}/ --output #{ENV['HOME']}/#{file}.tar master"
|
36
|
+
|
37
|
+
Dir.chdir(ENV['HOME']) do
|
38
|
+
sh "bzip2 -f #{ENV['HOME']}/#{file}.tar"
|
39
|
+
end
|
40
|
+
|
41
|
+
sh "git archive --prefix #{file}/ --output #{ENV['HOME']}/#{file}.zip --format zip master"
|
42
|
+
|
43
|
+
Dir.chdir(ENV['HOME']) do
|
44
|
+
sh "unzip #{file}.zip"
|
45
|
+
Dir.chdir(file) do
|
46
|
+
sh "rake gem"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
Rake::TestTask.new do |t|
|
52
|
+
t.verbose = true
|
53
|
+
t.warning = true
|
54
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Rack
|
2
|
+
module Auth
|
3
|
+
class Cheat
|
4
|
+
# Creates a new Rack::Auth::Cheat object. The +user_field+ and +password_field+
|
5
|
+
# are the params looked for in the call method. The defaults are 'username'
|
6
|
+
# and 'password', respectively.
|
7
|
+
#
|
8
|
+
def initialize(app, user_field = 'username', password_field = 'password')
|
9
|
+
@app = app
|
10
|
+
@user_field = user_field
|
11
|
+
@password_field = password_field
|
12
|
+
end
|
13
|
+
|
14
|
+
# The call method we've defined first checks to see if the AUTH_USER
|
15
|
+
# environment variable is set. If it is, we assume that the user has
|
16
|
+
# already been authenticated and move on.
|
17
|
+
#
|
18
|
+
# If AUTH_USER is not set, and AUTH_FAIL is not set, we then check whether
|
19
|
+
# the username and password match (the "Cheat" authentication method). If
|
20
|
+
# they match, AUTH_USER is set to the username.
|
21
|
+
#
|
22
|
+
# If they don't match then the request is passed on without modification.
|
23
|
+
# AUTH_FAIL will not be set by this class.
|
24
|
+
#
|
25
|
+
# It up to the application to check for the presence of AUTH_USER and/or
|
26
|
+
# AUTH_FAIL and act as necessary.
|
27
|
+
#
|
28
|
+
def call(env)
|
29
|
+
request = Rack::Request.new(env)
|
30
|
+
|
31
|
+
user = request.params[@user_field]
|
32
|
+
password = request.params[@password_field]
|
33
|
+
|
34
|
+
# Only authenticate user if both the username and password fields are present
|
35
|
+
unless user && password
|
36
|
+
return @app.call(env)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Do not authenticate if either one of these is set
|
40
|
+
if env['AUTH_USER'] || env['AUTH_FAIL']
|
41
|
+
return @app.call(env)
|
42
|
+
end
|
43
|
+
|
44
|
+
if user == password
|
45
|
+
env['AUTH_USER'] = user
|
46
|
+
env['AUTH_TYPE'] = "Cheat"
|
47
|
+
env['AUTH_TYPE_USER'] = user
|
48
|
+
env['AUTH_TYPE_THIS_REQUEST'] = "Cheat"
|
49
|
+
env['AUTH_DATETIME'] = Time.now.utc
|
50
|
+
|
51
|
+
env.delete('AUTH_FAIL')
|
52
|
+
end
|
53
|
+
|
54
|
+
@app.call(env)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.name = 'rack-auth-cheat'
|
5
|
+
gem.version = '0.1.0'
|
6
|
+
gem.authors = ["Daniel Berger", "Charlie O'Keefe"]
|
7
|
+
gem.email = 'cokeefe@globe.gov'
|
8
|
+
gem.homepage = 'http://www.github.com/rack-auth-cheat'
|
9
|
+
gem.summary = 'Rack middleware that authenticates requests with matching username and password'
|
10
|
+
gem.test_file = 'test/test_rack_auth_cheat.rb'
|
11
|
+
gem.files = Dir['**/*'].delete_if{ |item| item.include?('git') }
|
12
|
+
|
13
|
+
gem.extra_rdoc_files = ['CHANGES', 'README', 'MANIFEST']
|
14
|
+
|
15
|
+
gem.add_dependency('rack', '>= 1.0.0')
|
16
|
+
|
17
|
+
gem.description = <<-EOF
|
18
|
+
The rack-auth-cheat library provides a Rack middleware interface which authenticates
|
19
|
+
any request with a matching username and password. This is useful in development
|
20
|
+
environments, especially as a way to stub out an external authentication system. Be
|
21
|
+
sure to include this from an environment-specific file such as
|
22
|
+
config/environments/development.rb rather than from a global configuration file such
|
23
|
+
as config/environment.rb
|
24
|
+
EOF
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rack/auth/cheat'
|
3
|
+
|
4
|
+
class TC_Rack_Auth_Cheat < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@app = 1 # Placeholder
|
7
|
+
@env = 1 # Placeholder
|
8
|
+
@rack = Rack::Auth::Cheat.new(@app)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_constructor_basic
|
12
|
+
assert_nothing_raised{ Rack::Auth::Cheat.new(@app) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_version
|
16
|
+
assert_equal('0.1.0', Rack::Auth::Cheat::VERSION)
|
17
|
+
end
|
18
|
+
|
19
|
+
def teardown
|
20
|
+
@rack = nil
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rack-auth-cheat
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daniel Berger
|
8
|
+
- Charlie O'Keefe
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-12-21 00:00:00 -07:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: rack
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 1.0.0
|
25
|
+
version:
|
26
|
+
description: " The rack-auth-cheat library provides a Rack middleware interface which authenticates\n any request with a matching username and password. This is useful in development\n environments, especially as a way to stub out an external authentication system. Be\n sure to include this from an environment-specific file such as\n config/environments/development.rb rather than from a global configuration file such\n as config/environment.rb\n"
|
27
|
+
email: cokeefe@globe.gov
|
28
|
+
executables: []
|
29
|
+
|
30
|
+
extensions: []
|
31
|
+
|
32
|
+
extra_rdoc_files:
|
33
|
+
- CHANGES
|
34
|
+
- README
|
35
|
+
- MANIFEST
|
36
|
+
files:
|
37
|
+
- CHANGES
|
38
|
+
- lib/rack/auth/cheat.rb
|
39
|
+
- MANIFEST
|
40
|
+
- rack-auth-cheat.gemspec
|
41
|
+
- Rakefile
|
42
|
+
- README
|
43
|
+
- test/test_rack_auth_cheat.rb
|
44
|
+
has_rdoc: true
|
45
|
+
homepage: http://www.github.com/rack-auth-cheat
|
46
|
+
licenses: []
|
47
|
+
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
version:
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
requirements: []
|
66
|
+
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 1.3.5
|
69
|
+
signing_key:
|
70
|
+
specification_version: 3
|
71
|
+
summary: Rack middleware that authenticates requests with matching username and password
|
72
|
+
test_files:
|
73
|
+
- test/test_rack_auth_cheat.rb
|