warden 0.10.3 → 0.10.4
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/.gitignore +3 -1
- data/lib/warden/config.rb +1 -1
- data/lib/warden/manager.rb +4 -2
- data/lib/warden/manager_deprecation.rb +36 -0
- data/lib/warden/proxy.rb +3 -2
- data/lib/warden/proxy_deprecation.rb +11 -0
- data/lib/warden/test/helpers.rb +1 -0
- data/lib/warden/version.rb +1 -1
- data/spec/warden/proxy_spec.rb +33 -13
- data/warden.gemspec +4 -2
- metadata +5 -3
data/.gitignore
CHANGED
data/lib/warden/config.rb
CHANGED
data/lib/warden/manager.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'warden/hooks'
|
3
3
|
require 'warden/config'
|
4
|
+
require 'warden/manager_deprecation'
|
4
5
|
|
5
6
|
module Warden
|
6
7
|
# The middleware for Rack Authentication
|
@@ -9,6 +10,7 @@ module Warden
|
|
9
10
|
# the rack environment hash
|
10
11
|
class Manager
|
11
12
|
extend Warden::Hooks
|
13
|
+
extend Warden::ManagerDeprecation
|
12
14
|
|
13
15
|
attr_accessor :config
|
14
16
|
|
@@ -28,7 +30,7 @@ module Warden
|
|
28
30
|
# If this is downstream from another warden instance, don't do anything.
|
29
31
|
# :api: private
|
30
32
|
def call(env) # :nodoc:
|
31
|
-
return @app.call(env)
|
33
|
+
return @app.call(env) unless env['warden'].nil? || env['warden'].manager == self
|
32
34
|
|
33
35
|
env['warden'] = Proxy.new(env, self)
|
34
36
|
result = catch(:warden) do
|
@@ -85,7 +87,7 @@ module Warden
|
|
85
87
|
# It looks at the result of the proxy to see if it's been executed and what action to take.
|
86
88
|
# :api: private
|
87
89
|
def process_unauthenticated(env, options={})
|
88
|
-
options[:action] ||=
|
90
|
+
options[:action] ||= "unauthenticated"
|
89
91
|
|
90
92
|
proxy = env['warden']
|
91
93
|
result = options[:result] || proxy.result
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Warden
|
3
|
+
module ManagerDeprecation
|
4
|
+
class Dummy
|
5
|
+
def update(type, &block)
|
6
|
+
if type == :session
|
7
|
+
warn "[DEPRECATION] warden.serializers.update(:session) is deprecated. " <<
|
8
|
+
"Please use Warden::Manager.serialize_from_session and Warden::Manager.serialize_into_session"
|
9
|
+
Warden::SessionSerializer.class_eval(&block)
|
10
|
+
else
|
11
|
+
method_missing(update)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def method_missing(method, *args)
|
16
|
+
warn "[DEPRECATION] warden.serializers.#{method} is deprecated."
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Read the default scope from Warden
|
22
|
+
def default_scope
|
23
|
+
warn "[DEPRECATION] Warden::Manager.default_scope is deprecated. It's now accessible in the Warden::Manager instance."
|
24
|
+
end
|
25
|
+
|
26
|
+
# Set the default scope for Warden.
|
27
|
+
def default_scope=(scope)
|
28
|
+
warn "[DEPRECATION] Warden::Manager.default_scope= is deprecated. Please set it in the Warden::Manager instance."
|
29
|
+
end
|
30
|
+
|
31
|
+
def serializers
|
32
|
+
warn "[DEPRECATION] warden.serializers is deprecated since Warden::Serializers were merged into Warden::Strategies."
|
33
|
+
Dummy.new
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/warden/proxy.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
require 'warden/proxy_deprecation'
|
2
3
|
|
3
4
|
module Warden
|
4
5
|
class UserNotSet < RuntimeError; end
|
5
6
|
|
6
7
|
class Proxy
|
8
|
+
include ProxyDeprecation
|
7
9
|
# An accessor to the winning strategy
|
8
10
|
# :api: private
|
9
11
|
attr_accessor :winning_strategy
|
@@ -267,14 +269,13 @@ module Warden
|
|
267
269
|
def _retrieve_scope_and_opts(args) #:nodoc:
|
268
270
|
opts = args.last.is_a?(Hash) ? args.pop : {}
|
269
271
|
scope = opts[:scope] || @config.default_scope
|
272
|
+
opts = (config[:scope_defaults][scope] || {}).merge(opts)
|
270
273
|
[scope, opts]
|
271
274
|
end
|
272
275
|
|
273
276
|
# Run the strategies for a given scope
|
274
277
|
def _run_strategies_for(scope, args) #:nodoc:
|
275
278
|
self.winning_strategy = @winning_strategies[scope]
|
276
|
-
return if winning_strategy && winning_strategy.halted?
|
277
|
-
|
278
279
|
strategies = args.empty? ? default_strategies(:scope => scope) : args
|
279
280
|
|
280
281
|
strategies.each do |name|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Warden
|
3
|
+
# Sets up a place for deprecation of methods from the main proxy
|
4
|
+
module ProxyDeprecation
|
5
|
+
def default_strategies=(*strategies)
|
6
|
+
warn "[DEPRECATION] warden.default_strategies= is deprecated. Instead use warden.default_strategies(*strategies) with an optional :scope => :scope)"
|
7
|
+
strategies.push(:scope => @config.default_scope)
|
8
|
+
default_strategies(*strategies)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/warden/test/helpers.rb
CHANGED
data/lib/warden/version.rb
CHANGED
data/spec/warden/proxy_spec.rb
CHANGED
@@ -220,6 +220,18 @@ describe Warden::Proxy do
|
|
220
220
|
setup_rack(app).call(env)
|
221
221
|
end
|
222
222
|
|
223
|
+
it "should store the last winning strategy per scope" do
|
224
|
+
env = env_with_params("/")
|
225
|
+
app = lambda do |env|
|
226
|
+
env['warden'].authenticate(:failz)
|
227
|
+
env['warden'].should_not be_authenticated
|
228
|
+
env['warden'].authenticate(:failz)
|
229
|
+
env['warden'].winning_strategy.message.should == "The Fails Strategy Has Failed You"
|
230
|
+
valid_response
|
231
|
+
end
|
232
|
+
setup_rack(app).call(env)
|
233
|
+
end
|
234
|
+
|
223
235
|
it "should run strategies for a given scope several times if cache is cleaned" do
|
224
236
|
env = env_with_params("/")
|
225
237
|
app = lambda do |env|
|
@@ -256,19 +268,6 @@ describe Warden::Proxy do
|
|
256
268
|
end
|
257
269
|
setup_rack(app).call(env)
|
258
270
|
end
|
259
|
-
|
260
|
-
it "should not run strategies until cache is cleaned if latest winning strategy halted" do
|
261
|
-
env = env_with_params("/")
|
262
|
-
app = lambda do |env|
|
263
|
-
env['warden'].authenticate(:failz)
|
264
|
-
env['warden'].should_not be_authenticated
|
265
|
-
env['warden'].authenticate(:pass)
|
266
|
-
env['warden'].winning_strategy.message.should == "The Fails Strategy Has Failed You"
|
267
|
-
valid_response
|
268
|
-
end
|
269
|
-
setup_rack(app).call(env)
|
270
|
-
end
|
271
|
-
|
272
271
|
end
|
273
272
|
|
274
273
|
describe "set user" do
|
@@ -774,6 +773,27 @@ describe "dynamic default_strategies" do
|
|
774
773
|
end
|
775
774
|
|
776
775
|
describe "default scope options" do
|
776
|
+
|
777
|
+
it "should allow me to set a default action for a given scope" do
|
778
|
+
$captures = []
|
779
|
+
builder = Rack::Builder.new do
|
780
|
+
use Warden::Manager do |config|
|
781
|
+
config.scope_defaults :foo, :strategies => [:two], :action => "some_bad_action"
|
782
|
+
config.failure_app = Warden::Spec::Helpers::FAILURE_APP
|
783
|
+
end
|
784
|
+
|
785
|
+
run(lambda do |e|
|
786
|
+
e['warden'].authenticate!(:scope => :foo)
|
787
|
+
end)
|
788
|
+
end
|
789
|
+
|
790
|
+
env = env_with_params("/foo")
|
791
|
+
env["rack.session"] = {}
|
792
|
+
builder.to_app.call(env)
|
793
|
+
request = Rack::Request.new(env)
|
794
|
+
request.path.should == "/some_bad_action"
|
795
|
+
end
|
796
|
+
|
777
797
|
it "should allow me to set store, false on a given scope" do
|
778
798
|
$captures = []
|
779
799
|
builder = Rack::Builder.new do
|
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.10.
|
8
|
+
s.version = "0.10.4"
|
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-
|
12
|
+
s.date = %q{2010-05-14}
|
13
13
|
s.email = %q{has.sox@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -27,8 +27,10 @@ Gem::Specification.new do |s|
|
|
27
27
|
"lib/warden/errors.rb",
|
28
28
|
"lib/warden/hooks.rb",
|
29
29
|
"lib/warden/manager.rb",
|
30
|
+
"lib/warden/manager_deprecation.rb",
|
30
31
|
"lib/warden/mixins/common.rb",
|
31
32
|
"lib/warden/proxy.rb",
|
33
|
+
"lib/warden/proxy_deprecation.rb",
|
32
34
|
"lib/warden/session_serializer.rb",
|
33
35
|
"lib/warden/strategies.rb",
|
34
36
|
"lib/warden/strategies/base.rb",
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 10
|
8
|
-
-
|
9
|
-
version: 0.10.
|
8
|
+
- 4
|
9
|
+
version: 0.10.4
|
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-
|
17
|
+
date: 2010-05-14 00:00:00 +10:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -66,8 +66,10 @@ files:
|
|
66
66
|
- lib/warden/errors.rb
|
67
67
|
- lib/warden/hooks.rb
|
68
68
|
- lib/warden/manager.rb
|
69
|
+
- lib/warden/manager_deprecation.rb
|
69
70
|
- lib/warden/mixins/common.rb
|
70
71
|
- lib/warden/proxy.rb
|
72
|
+
- lib/warden/proxy_deprecation.rb
|
71
73
|
- lib/warden/session_serializer.rb
|
72
74
|
- lib/warden/strategies.rb
|
73
75
|
- lib/warden/strategies/base.rb
|