warden 0.9.6 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/warden/manager.rb +22 -20
- data/lib/warden/version.rb +1 -1
- data/spec/warden/manager_spec.rb +11 -0
- data/warden.gemspec +2 -2
- metadata +3 -3
data/lib/warden/manager.rb
CHANGED
@@ -37,14 +37,13 @@ module Warden
|
|
37
37
|
result ||= {}
|
38
38
|
case result
|
39
39
|
when Array
|
40
|
-
if result.first == 401
|
41
|
-
process_unauthenticated(
|
40
|
+
if result.first == 401 && !env['warden'].custom_failure?
|
41
|
+
process_unauthenticated(env)
|
42
42
|
else
|
43
43
|
result
|
44
44
|
end
|
45
45
|
when Hash
|
46
|
-
result
|
47
|
-
process_unauthenticated(result, env)
|
46
|
+
process_unauthenticated(env, result || {})
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
@@ -84,30 +83,33 @@ module Warden
|
|
84
83
|
# When a request is unauthentiated, here's where the processing occurs.
|
85
84
|
# It looks at the result of the proxy to see if it's been executed and what action to take.
|
86
85
|
# :api: private
|
87
|
-
def process_unauthenticated(
|
88
|
-
|
86
|
+
def process_unauthenticated(env, options={})
|
87
|
+
options[:action] ||= :unauthenticated
|
89
88
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
89
|
+
proxy = env['warden']
|
90
|
+
result = options[:result] || proxy.result
|
91
|
+
|
92
|
+
case result
|
93
|
+
when :redirect
|
94
|
+
body = proxy.message || "You are being redirected to #{proxy.headers['Location']}"
|
95
|
+
[proxy.status, proxy.headers, [body]]
|
96
|
+
when :custom
|
97
|
+
proxy.custom_response
|
98
|
+
else
|
99
|
+
call_failure_app(env, options)
|
97
100
|
end
|
98
101
|
end
|
99
102
|
|
100
103
|
# Calls the failure app.
|
101
104
|
# The before_failure hooks are run on each failure
|
102
105
|
# :api: private
|
103
|
-
def call_failure_app(env,
|
104
|
-
if
|
105
|
-
|
106
|
-
|
107
|
-
env["
|
108
|
-
env["warden.options"] = opts
|
106
|
+
def call_failure_app(env, options = {})
|
107
|
+
if config.failure_app
|
108
|
+
options.merge!(:attempted_path => ::Rack::Request.new(env).fullpath)
|
109
|
+
env["PATH_INFO"] = "/#{options[:action]}"
|
110
|
+
env["warden.options"] = options
|
109
111
|
|
110
|
-
_run_callbacks(:before_failure, env,
|
112
|
+
_run_callbacks(:before_failure, env, options)
|
111
113
|
config.failure_app.call(env).to_a
|
112
114
|
else
|
113
115
|
raise "No Failure App provided"
|
data/lib/warden/version.rb
CHANGED
data/spec/warden/manager_spec.rb
CHANGED
@@ -69,6 +69,17 @@ describe Warden::Manager do
|
|
69
69
|
result.first.should == 401
|
70
70
|
result.last.should == ["You Fail!"]
|
71
71
|
end
|
72
|
+
|
73
|
+
it "should set the attempted url in warden.options hash" do
|
74
|
+
env = env_with_params("/access/path", {})
|
75
|
+
app = lambda do |env|
|
76
|
+
env['warden'].authenticate(:pass)
|
77
|
+
throw(:warden)
|
78
|
+
end
|
79
|
+
result = setup_rack(app, :failure_app => @fail_app).call(env)
|
80
|
+
result.first.should == 401
|
81
|
+
env["warden.options"][:attempted_path].should == "/access/path"
|
82
|
+
end
|
72
83
|
end # failure
|
73
84
|
|
74
85
|
end
|
data/warden.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{warden}
|
8
|
-
s.version = "0.9.
|
8
|
+
s.version = "0.9.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Neighman"]
|
12
|
-
s.date = %q{2010-03-
|
12
|
+
s.date = %q{2010-03-11}
|
13
13
|
s.email = %q{has.sox@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 9
|
8
|
-
-
|
9
|
-
version: 0.9.
|
8
|
+
- 7
|
9
|
+
version: 0.9.7
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Daniel Neighman
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-11 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|