rack-openid 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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