rack-openid 1.1.2 → 1.2.0
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/rack/openid.rb +15 -1
- metadata +12 -11
data/lib/rack/openid.rb
CHANGED
@@ -5,6 +5,7 @@ require 'openid'
|
|
5
5
|
require 'openid/consumer'
|
6
6
|
require 'openid/extensions/sreg'
|
7
7
|
require 'openid/extensions/ax'
|
8
|
+
require 'openid/extensions/oauth'
|
8
9
|
|
9
10
|
module Rack #:nodoc:
|
10
11
|
# A Rack middleware that provides a more HTTPish API around the
|
@@ -121,6 +122,7 @@ module Rack #:nodoc:
|
|
121
122
|
oidreq = consumer.begin(identifier)
|
122
123
|
add_simple_registration_fields(oidreq, params)
|
123
124
|
add_attribute_exchange_fields(oidreq, params)
|
125
|
+
add_oauth_fields(oidreq, params)
|
124
126
|
url = open_id_redirect_url(req, oidreq, params["trust_root"], params["return_to"], params["method"])
|
125
127
|
return redirect_to(url)
|
126
128
|
rescue ::OpenID::OpenIDError, Timeout::Error => e
|
@@ -139,7 +141,7 @@ module Rack #:nodoc:
|
|
139
141
|
|
140
142
|
oidresp = timeout_protection_from_identity_server {
|
141
143
|
consumer = ::OpenID::Consumer.new(session, @store)
|
142
|
-
consumer.complete(
|
144
|
+
consumer.complete(flatten_params(req.params), req.url)
|
143
145
|
}
|
144
146
|
|
145
147
|
env[RESPONSE] = oidresp
|
@@ -150,6 +152,10 @@ module Rack #:nodoc:
|
|
150
152
|
sanitize_query_string(env)
|
151
153
|
end
|
152
154
|
|
155
|
+
def flatten_params(params)
|
156
|
+
Rack::Utils.parse_query(Rack::Utils.build_nested_query(params))
|
157
|
+
end
|
158
|
+
|
153
159
|
def override_request_method(env, method)
|
154
160
|
return unless method
|
155
161
|
method = method.upcase
|
@@ -240,6 +246,14 @@ module Rack #:nodoc:
|
|
240
246
|
oidreq.add_extension(axreq)
|
241
247
|
end
|
242
248
|
|
249
|
+
def add_oauth_fields(oidreq, fields)
|
250
|
+
if (consumer = fields['oauth[consumer]']) &&
|
251
|
+
(scope = fields['oauth[scope]'])
|
252
|
+
oauthreq = ::OpenID::OAuth::Request.new(consumer, Array(scope).join(' '))
|
253
|
+
oidreq.add_extension(oauthreq)
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
243
257
|
def default_store
|
244
258
|
require 'openid/store/memory'
|
245
259
|
::OpenID::Store::Memory.new
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-openid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
- 1
|
9
8
|
- 2
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 1.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Joshua Peek
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-08 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -26,11 +26,12 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 19
|
30
30
|
segments:
|
31
|
+
- 1
|
32
|
+
- 1
|
31
33
|
- 0
|
32
|
-
|
33
|
-
version: "0.4"
|
34
|
+
version: 1.1.0
|
34
35
|
type: :runtime
|
35
36
|
version_requirements: *id001
|
36
37
|
- !ruby/object:Gem::Dependency
|
@@ -41,12 +42,12 @@ dependencies:
|
|
41
42
|
requirements:
|
42
43
|
- - ">="
|
43
44
|
- !ruby/object:Gem::Version
|
44
|
-
hash:
|
45
|
+
hash: 27
|
45
46
|
segments:
|
46
47
|
- 2
|
47
|
-
-
|
48
|
-
-
|
49
|
-
version: 2.
|
48
|
+
- 1
|
49
|
+
- 8
|
50
|
+
version: 2.1.8
|
50
51
|
type: :runtime
|
51
52
|
version_requirements: *id002
|
52
53
|
description: Provides a more HTTPish API around the ruby-openid library
|