warden 1.1.0 → 1.1.1

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- warden (1.0.7)
4
+ warden (1.1.1)
5
5
  rack (>= 1.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,12 @@
1
+ == Version 1.1.1 / 2012-02-16
2
+ * Allow run_callbacks as an option to set_user and user
3
+
1
4
  == Version 1.1.0 / 2011-11-02
2
5
  * Use the default scopes action when using a bare throw(:warden)
6
+
3
7
  == Version 1.0.6
4
8
  * Remove gem files from the packaged gem
9
+
5
10
  == Version 1.0.3
6
11
  * Do not renew session on user fetch
7
12
 
@@ -144,7 +144,7 @@ module Warden
144
144
  #
145
145
  # Parameters:
146
146
  # user - An object that has been setup to serialize into and out of the session.
147
- # opts - An options hash. Use the :scope option to set the scope of the user, set the :store option to false to skip serializing into the session.
147
+ # opts - An options hash. Use the :scope option to set the scope of the user, set the :store option to false to skip serializing into the session, set the :run_callbacks to false to skip running the callbacks (the default is true).
148
148
  #
149
149
  # :api: public
150
150
  def set_user(user, opts = {})
@@ -161,7 +161,9 @@ module Warden
161
161
  session_serializer.store(user, scope)
162
162
  end
163
163
 
164
- manager._run_callbacks(:after_set_user, user, self, opts)
164
+ run_callbacks = opts.fetch(:run_callbacks, true)
165
+ manager._run_callbacks(:after_set_user, user, self, opts) if run_callbacks
166
+
165
167
  @users[scope]
166
168
  end
167
169
 
@@ -176,11 +178,24 @@ module Warden
176
178
  # # with scope
177
179
  # env['warden'].user(:admin)
178
180
  #
181
+ # # as a Hash
182
+ # env['warden'].user(:scope => :admin)
183
+ #
184
+ # # with default scope and run_callbacks option
185
+ # env['warden'].user(:run_callbacks => false)
186
+ #
187
+ # # with a scope and run_callbacks option
188
+ # env['warden'].user(:scope => :admin, :run_callbacks => true)
189
+ #
179
190
  # :api: public
180
- def user(scope = @config.default_scope)
191
+ def user(argument = {})
192
+ opts = argument.is_a?(Hash) ? argument : { :scope => argument }
193
+ scope = (opts[:scope] ||= @config.default_scope)
194
+
181
195
  @users[scope] ||= begin
182
196
  user = session_serializer.fetch(scope)
183
- set_user(user, :scope => scope, :event => :fetch) if user
197
+ opts[:event] = :fetch
198
+ set_user(user, opts) if user
184
199
  end
185
200
  end
186
201
 
@@ -323,6 +338,6 @@ module Warden
323
338
  raise "Invalid strategy #{name}"
324
339
  end
325
340
  end
326
-
327
341
  end # Proxy
342
+
328
343
  end # Warden
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Warden
3
- VERSION = "1.1.0".freeze
3
+ VERSION = "1.1.1".freeze
4
4
  end
@@ -15,7 +15,7 @@ module Warden::Spec
15
15
  opts[:failure_app] ||= failure_app
16
16
  opts[:default_strategies] ||= [:password]
17
17
  opts[:default_serializers] ||= [:session]
18
- blk = opts[:configurator] || lambda{}
18
+ blk = opts[:configurator] || proc{}
19
19
 
20
20
  Rack::Builder.new do
21
21
  use opts[:session] || Warden::Spec::Helpers::Session
@@ -365,6 +365,33 @@ describe Warden::Proxy do
365
365
  end
366
366
  setup_rack(app).call(@env)
367
367
  end
368
+
369
+ it "should not run the callbacks when :run_callbacks is false" do
370
+ app = lambda do |env|
371
+ env['warden'].manager.should_not_receive(:_run_callbacks)
372
+ env['warden'].authenticate(:run_callbacks => false, :scope => :pass)
373
+ valid_response
374
+ end
375
+ setup_rack(app).call(@env)
376
+ end
377
+
378
+ it "should run the callbacks when :run_callbacks is true" do
379
+ app = lambda do |env|
380
+ env['warden'].manager.should_receive(:_run_callbacks)
381
+ env['warden'].authenticate(:pass)
382
+ valid_response
383
+ end
384
+ setup_rack(app).call(@env)
385
+ end
386
+
387
+ it "should run the callbacks by default" do
388
+ app = lambda do |env|
389
+ env['warden'].manager.should_receive(:_run_callbacks)
390
+ env['warden'].authenticate(:pass)
391
+ valid_response
392
+ end
393
+ setup_rack(app).call(@env)
394
+ end
368
395
  end
369
396
 
370
397
  describe "get user" do
@@ -412,6 +439,35 @@ describe Warden::Proxy do
412
439
  setup_rack(app).call(@env)
413
440
  @env['warden.spec.strategies'].should_not include(:pass)
414
441
  end
442
+
443
+ describe "run callback option" do
444
+ it "should not call run_callbacks when we pass a :run_callback => false" do
445
+ app = lambda do |env|
446
+ env['warden'].manager.should_not_receive(:_run_callbacks)
447
+ env['warden'].user(:run_callbacks => false)
448
+ valid_response
449
+ end
450
+ setup_rack(app).call(@env)
451
+ end
452
+
453
+ it "should call run_callbacks when we pass a :run_callback => true" do
454
+ app = lambda do |env|
455
+ env['warden'].manager.should_receive(:_run_callbacks)
456
+ env['warden'].user(:run_callbacks => true)
457
+ valid_response
458
+ end
459
+ setup_rack(app).call(@env)
460
+ end
461
+
462
+ it "should call run_callbacks by default" do
463
+ app = lambda do |env|
464
+ env['warden'].manager.should_receive(:_run_callbacks)
465
+ env['warden'].user
466
+ valid_response
467
+ end
468
+ setup_rack(app).call(@env)
469
+ end
470
+ end
415
471
  end
416
472
  end
417
473
 
@@ -900,4 +956,4 @@ describe "dynamic default_strategies" do
900
956
  session['warden.user.baz.key'].should == "User"
901
957
  end
902
958
  end
903
- end
959
+ end
@@ -4,7 +4,7 @@ require './lib/warden/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = %q{warden}
7
- s.version = Warden::VERSION
7
+ s.version = Warden::VERSION.dup
8
8
  s.authors = ["Daniel Neighman"]
9
9
  s.date = %q{2011-07-27}
10
10
  s.email = %q{has.sox@gmail.com}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 0
10
- version: 1.1.0
9
+ - 1
10
+ version: 1.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Neighman
@@ -15,7 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-27 00:00:00 Z
18
+ date: 2011-07-27 00:00:00 +02:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: rack
@@ -82,6 +83,7 @@ files:
82
83
  - spec/warden/test/test_mode_spec.rb
83
84
  - TODO.textile
84
85
  - warden.gemspec
86
+ has_rdoc: true
85
87
  homepage: http://github.com/hassox/warden
86
88
  licenses: []
87
89
 
@@ -111,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
113
  requirements: []
112
114
 
113
115
  rubyforge_project: warden
114
- rubygems_version: 1.8.6
116
+ rubygems_version: 1.5.3
115
117
  signing_key:
116
118
  specification_version: 3
117
119
  summary: Rack middleware that provides authentication for rack applications