warden 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +12 -0
- data/README.textile +3 -1
- data/Rakefile +2 -0
- data/lib/warden/manager.rb +1 -1
- data/lib/warden/proxy.rb +18 -5
- data/lib/warden/version.rb +1 -1
- data/spec/warden/proxy_spec.rb +40 -1
- data/warden.gemspec +3 -3
- metadata +2 -2
data/History.rdoc
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
* enhancements
|
2
|
+
* authenticated? always try to serialize the user from session (josevalim)
|
3
|
+
* stored_in_session? checks if user information is stored in session, without serializing (josevalim)
|
4
|
+
* 401 behaves exactly like throw :warden (staugaard)
|
5
|
+
|
6
|
+
=== Version 0.5.1 / 2009-10-25
|
7
|
+
* enhancements
|
8
|
+
* Adds yeilding to authenticated? and unauthenticated? methods (hassox)
|
9
|
+
* Adds an option to silence missing strategies (josevalim)
|
10
|
+
* Add an option to authenticate(!) to prevent storage of a user into the session (hassox)
|
11
|
+
* allow custom :action to be thrown (josevalim)
|
12
|
+
|
1
13
|
=== Version 0.4.0 / 2009-10-12
|
2
14
|
|
3
15
|
* enhancements
|
data/README.textile
CHANGED
data/Rakefile
CHANGED
data/lib/warden/manager.rb
CHANGED
@@ -54,7 +54,7 @@ module Warden
|
|
54
54
|
if result.first != 401
|
55
55
|
return result
|
56
56
|
else
|
57
|
-
|
57
|
+
process_unauthenticated({:original_response => result, :action => :unauthenticated}, env)
|
58
58
|
end
|
59
59
|
when Hash
|
60
60
|
result[:action] ||= :unauthenticated
|
data/lib/warden/proxy.rb
CHANGED
@@ -36,11 +36,12 @@ module Warden
|
|
36
36
|
# env['warden'].authenticated?(:admin)
|
37
37
|
# :api: public
|
38
38
|
def authenticated?(scope = :default)
|
39
|
-
result =
|
39
|
+
result = user(scope) || false
|
40
40
|
yield if block_given? && result
|
41
41
|
result
|
42
|
-
end
|
42
|
+
end
|
43
43
|
|
44
|
+
# Same API as authenticated, but returns false when authenticated.
|
44
45
|
def unauthenticated?(scope = :default)
|
45
46
|
result = !authenticated?(scope)
|
46
47
|
yield if block_given? && result
|
@@ -77,6 +78,18 @@ module Warden
|
|
77
78
|
user(scope)
|
78
79
|
end
|
79
80
|
|
81
|
+
# Checks if the given scope is stored in session. Different from authenticated?, this method
|
82
|
+
# does not serialize values from session.
|
83
|
+
#
|
84
|
+
# Example
|
85
|
+
# env['warden'].set_user(@user)
|
86
|
+
# env['warden'].stored_in_session? #=> true
|
87
|
+
#
|
88
|
+
# :api: public
|
89
|
+
def stored_in_session?(scope = :default)
|
90
|
+
!!raw_session["warden.user.#{scope}.key"]
|
91
|
+
end
|
92
|
+
|
80
93
|
# Manually set the user into the session and auth proxy
|
81
94
|
#
|
82
95
|
# Parameters:
|
@@ -113,10 +126,10 @@ module Warden
|
|
113
126
|
#
|
114
127
|
# Example
|
115
128
|
# # default scope
|
116
|
-
# env['warden'].
|
129
|
+
# env['warden'].session[:foo] = "bar"
|
117
130
|
#
|
118
131
|
# # :sudo scope
|
119
|
-
# env['warden'].
|
132
|
+
# env['warden'].session(:sudo)[:foo] = "bar"
|
120
133
|
#
|
121
134
|
# :api: public
|
122
135
|
def session(scope = :default)
|
@@ -163,7 +176,7 @@ module Warden
|
|
163
176
|
# proxy methods through to the winning strategy
|
164
177
|
# :api: private
|
165
178
|
def result # :nodoc:
|
166
|
-
|
179
|
+
winning_strategy.nil? ? nil : winning_strategy.result
|
167
180
|
end
|
168
181
|
|
169
182
|
# Proxy through to the authentication strategy to find out the message that was generated.
|
data/lib/warden/version.rb
CHANGED
data/spec/warden/proxy_spec.rb
CHANGED
@@ -176,9 +176,49 @@ describe Warden::Proxy do
|
|
176
176
|
env['warden'].user(:bar).should == 'bar user'
|
177
177
|
env['warden'].user.should be_nil
|
178
178
|
end
|
179
|
+
|
180
|
+
it "should not be authenticated if scope cannot be retrieved from session" do
|
181
|
+
begin
|
182
|
+
Warden::Manager.serialize_from_session { |k| nil }
|
183
|
+
app = lambda do |env|
|
184
|
+
env['rack.session']['warden.user.foo_scope.key'] = "a foo user"
|
185
|
+
env['warden'].authenticated?(:foo_scope)
|
186
|
+
valid_response
|
187
|
+
end
|
188
|
+
env = env_with_params
|
189
|
+
setup_rack(app).call(env)
|
190
|
+
env['warden'].user(:foo_scope).should be_nil
|
191
|
+
ensure
|
192
|
+
Warden::Manager.serialize_from_session { |k| k }
|
193
|
+
end
|
194
|
+
end
|
179
195
|
end
|
180
196
|
end # describe "authentication"
|
181
197
|
|
198
|
+
describe "stored in session" do
|
199
|
+
before(:each) do
|
200
|
+
@env['rack.session'] ||= {}
|
201
|
+
@env['rack.session']['warden.user.default.key'] = "User"
|
202
|
+
end
|
203
|
+
|
204
|
+
it "returns true if user key is stored in session" do
|
205
|
+
app = lambda do |env|
|
206
|
+
env['warden'].stored_in_session?.should be_true
|
207
|
+
valid_response
|
208
|
+
end
|
209
|
+
setup_rack(app).call(@env)
|
210
|
+
end
|
211
|
+
|
212
|
+
it "returns false if user key is not stored in session" do
|
213
|
+
@env['rack.session'].delete("warden.user.default.key")
|
214
|
+
app = lambda do |env|
|
215
|
+
env['warden'].stored_in_session?.should be_false
|
216
|
+
valid_response
|
217
|
+
end
|
218
|
+
setup_rack(app).call(@env)
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
182
222
|
describe "set user" do
|
183
223
|
it "should store the user into the session" do
|
184
224
|
env = env_with_params("/")
|
@@ -309,7 +349,6 @@ describe Warden::Proxy do
|
|
309
349
|
it "should clear the session data when logging out" do
|
310
350
|
@env['rack.session'].should_not be_nil
|
311
351
|
app = lambda do |e|
|
312
|
-
# debugger
|
313
352
|
e['warden'].user.should_not be_nil
|
314
353
|
e['warden'].session[:foo] = :bar
|
315
354
|
e['warden'].logout
|
data/warden.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in
|
3
|
+
# Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{warden}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.2"
|
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{2009-
|
12
|
+
s.date = %q{2009-11-09}
|
13
13
|
s.email = %q{has.sox@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warden
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Neighman
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-09 00:00:00 -02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|