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.
Files changed (2) hide show
  1. data/lib/rack/openid.rb +15 -1
  2. metadata +12 -11
@@ -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(Rack::Utils.parse_query(req.query_string), req.url)
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: 23
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 1
9
8
  - 2
10
- version: 1.1.2
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-03 00:00:00 -05:00
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: 3
29
+ hash: 19
30
30
  segments:
31
+ - 1
32
+ - 1
31
33
  - 0
32
- - 4
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: 9
45
+ hash: 27
45
46
  segments:
46
47
  - 2
47
- - 0
48
- - 3
49
- version: 2.0.3
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