warden_omniauth-jonrowe 0.2.0 → 0.2.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.
- data/lib/warden_omniauth.rb +13 -19
- data/lib/warden_omniauth/version.rb +1 -1
- data/test/test_warden_omniauth.rb +12 -0
- metadata +3 -3
data/lib/warden_omniauth.rb
CHANGED
@@ -44,20 +44,12 @@ class WardenOmniAuth
|
|
44
44
|
# The base omniauth warden strategy. This is inherited for each
|
45
45
|
# omniauth strategy
|
46
46
|
class Strategy < Warden::Strategies::Base
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
# The name of the OmniAuth strategy to map to
|
54
|
-
def self.omni_name=(name)
|
55
|
-
@omni_name = name
|
56
|
-
end
|
57
|
-
|
58
|
-
# The name of the OmniAuth strategy to map to
|
59
|
-
def self.omni_name
|
60
|
-
@omni_name
|
47
|
+
class << self
|
48
|
+
def on_callback(&blk)
|
49
|
+
@on_callback = blk if blk
|
50
|
+
@on_callback || WardenOmniAuth.on_callback
|
51
|
+
end
|
52
|
+
attr_accessor :omni_name
|
61
53
|
end
|
62
54
|
|
63
55
|
def authenticate!
|
@@ -104,12 +96,14 @@ class WardenOmniAuth
|
|
104
96
|
|
105
97
|
# redirect after a callback
|
106
98
|
def redirect_after_callback=(path)
|
107
|
-
@
|
99
|
+
@generate_path_to_redirect_after_callback = proc { path }
|
100
|
+
end
|
101
|
+
def redirect_after_callback(&block)
|
102
|
+
@generate_path_to_redirect_after_callback = block
|
108
103
|
end
|
109
104
|
|
110
|
-
|
111
|
-
|
112
|
-
@redirect_after_callback_path ||= "/"
|
105
|
+
def redirect_after_callback_path(env={})
|
106
|
+
(@generate_path_to_redirect_after_callback || proc { "/" } ).call(env)
|
113
107
|
end
|
114
108
|
|
115
109
|
def call(env)
|
@@ -131,7 +125,7 @@ class WardenOmniAuth
|
|
131
125
|
args << {:scope => scope.to_sym} if scope
|
132
126
|
response = Rack::Response.new
|
133
127
|
if env['warden'].authenticate? *args
|
134
|
-
response.redirect(redirect_after_callback_path)
|
128
|
+
response.redirect(redirect_after_callback_path(env))
|
135
129
|
response.finish
|
136
130
|
else
|
137
131
|
auth_path = request.path.gsub(/\/callback$/, "")
|
@@ -96,6 +96,18 @@ context do
|
|
96
96
|
assert("should have made it into the app") { $captures.size == 1 }
|
97
97
|
assert("should have captured the user"){ $captures.first[:info] == 'fred' }
|
98
98
|
end
|
99
|
+
test do
|
100
|
+
session = { WardenOmniAuth::SCOPE_KEY => "user" }
|
101
|
+
$omni_auth.redirect_after_callback do |env|
|
102
|
+
assert('enviromnent passed to block') { env.fetch('omniauth.auth',{})['info'] == 'fred' }
|
103
|
+
'/my/dynamic/path'
|
104
|
+
end
|
105
|
+
|
106
|
+
response = get("/auth/twitter/callback", {}, {'rack.session' => session, 'omniauth.auth' => {'info' => "fred"}})
|
107
|
+
|
108
|
+
assert("should be redirected") { response.status == 302 }
|
109
|
+
assert("should go to the dynamic redirect path") { response.headers['Location'] == '/my/dynamic/path' }
|
110
|
+
end
|
99
111
|
|
100
112
|
# should give me different handlers for different callbacks
|
101
113
|
test do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warden_omniauth-jonrowe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-10-
|
13
|
+
date: 2012-10-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: omniauth
|
@@ -92,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
92
|
version: '0'
|
93
93
|
segments:
|
94
94
|
- 0
|
95
|
-
hash: -
|
95
|
+
hash: -1914201548067094911
|
96
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|