oa-openid 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -0,0 +1,3 @@
1
+ == 0.0.3
2
+
3
+ * Display a form if no identifier is provided at /auth/open_id
data/README.rdoc CHANGED
@@ -0,0 +1,37 @@
1
+ = OmniAuth::OpenID
2
+
3
+ OpenID strategies for the OmniAuth gem.
4
+
5
+ == Installation
6
+
7
+ To get just OpenID functionality:
8
+
9
+ gem install oa-openid
10
+
11
+ For the full auth suite:
12
+
13
+ gem install omniauth
14
+
15
+ == Stand-Alone Example
16
+
17
+ Use the strategy as a middleware in your application:
18
+
19
+ require 'omniauth/openid'
20
+ require 'openid/store/filesystem'
21
+
22
+ use OmniAuth::Strategies::OpenID, OpenID::Store::Filesystem.new('/tmp')
23
+
24
+ Then simply direct users to '/auth/open_id' to prompt them for their OpenID identifier. You may also pre-set the identifier by passing an <tt>identifier</tt> parameter to the URL (Example: <tt>/auth/open_id?identifier=google.com</tt>).
25
+
26
+ == OmniAuth Builder
27
+
28
+ If OpenID is one of several authentication strategies, use the OmniAuth Builder:
29
+
30
+ require 'omniauth/openid'
31
+ require 'omniauth/basic' # for Campfire
32
+ require 'openid/store/filesystem'
33
+
34
+ use OmniAuth::Builder do
35
+ provider :open_id, OpenID::Store::Filesystem.new('/tmp')
36
+ provider :campfire
37
+ end
@@ -1,2 +1,8 @@
1
1
  require 'omniauth/core'
2
- require 'omniauth/strategies/open_id'
2
+
3
+ module OmniAuth
4
+ module Strategies
5
+ autoload :OpenID, 'omniauth/strategies/open_id'
6
+ autoload :GoogleApps, 'omniauth/strategies/google_apps'
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ require 'omniauth/openid'
2
+
3
+ module OmniAuth
4
+ module Strategies
5
+ class GoogleApps < OmniAuth::Strategies::OpenID
6
+ def initialize(app, store = nil, options = {})
7
+ options[:name] ||= 'google_apps'
8
+ super(app, store, options)
9
+ end
10
+
11
+ def identifier
12
+ options[:domain] || request['domain']
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,10 +1,18 @@
1
1
  require 'rack/openid'
2
+ require 'gapps_openid'
3
+ require 'omniauth/openid'
2
4
 
3
5
  module OmniAuth
4
6
  module Strategies
5
7
  class OpenID
6
8
  include OmniAuth::Strategy
7
9
 
10
+ attr_accessor :options
11
+
12
+ # Should be 'openid_url'
13
+ # @see http://github.com/intridea/omniauth/issues/issue/13
14
+ IDENTIFIER_URL_PARAMETER = 'identifier'
15
+
8
16
  AX = {
9
17
  :email => 'http://axschema.org/contact/email',
10
18
  :name => 'http://axschema.org/namePerson',
@@ -20,8 +28,8 @@ module OmniAuth
20
28
  def initialize(app, store = nil, options = {})
21
29
  super(app, options[:name] || :open_id)
22
30
  @options = options
23
- @options[:required] ||= [AX[:email], AX[:name], 'email', 'fullname']
24
- @options[:optional] ||= [AX[:first_name], AX[:last_name], AX[:nickname], AX[:city], AX[:state], AX[:website], AX[:image], 'postcode', 'nickname']
31
+ @options[:required] ||= [AX[:email], AX[:first_name], AX[:last_name], 'email', 'fullname']
32
+ @options[:optional] ||= [AX[:nickname], AX[:city], AX[:state], AX[:website], AX[:image], 'postcode', 'nickname']
25
33
  @store = store
26
34
  end
27
35
 
@@ -41,7 +49,7 @@ module OmniAuth
41
49
  end
42
50
 
43
51
  def identifier
44
- request[:identifier]
52
+ request[IDENTIFIER_URL_PARAMETER]
45
53
  end
46
54
 
47
55
  def request_phase
@@ -53,21 +61,17 @@ module OmniAuth
53
61
  response = openid.call(env)
54
62
  case env['rack.openid.response']
55
63
  when Rack::OpenID::MissingResponse, Rack::OpenID::TimeoutResponse
56
- fail :connection_failed
64
+ fail!(:connection_failed)
57
65
  else
58
66
  response
59
67
  end
60
68
  end
61
69
 
62
70
  def get_identifier
63
- response = app.call(env)
64
- if response[0] < 400
65
- response
66
- else
67
- OmniAuth::Form.build('OpenID Authentication') do
68
- text_field('OpenID Identifier', 'identifier')
69
- end.to_response
70
- end
71
+ OmniAuth::Form.build('OpenID Authentication') do
72
+ label_field('OpenID Identifier', IDENTIFIER_URL_PARAMETER)
73
+ input_field('url', IDENTIFIER_URL_PARAMETER)
74
+ end.to_response
71
75
  end
72
76
 
73
77
  def callback_phase
@@ -76,12 +80,11 @@ module OmniAuth
76
80
  openid = Rack::OpenID.new(lambda{|env| [200,{},[]]}, @store)
77
81
  openid.call(env)
78
82
  resp = env.delete('rack.openid.response')
79
- case resp.status
80
- when :failure
81
- fail!(:invalid_credentials)
82
- when :success
83
+ if resp && resp.status == :success
83
84
  request['auth'] = auth_hash(resp)
84
85
  @app.call(env)
86
+ else
87
+ fail!(:invalid_credentials)
85
88
  end
86
89
  end
87
90
 
@@ -120,4 +123,4 @@ module OmniAuth
120
123
  end
121
124
  end
122
125
  end
123
- end
126
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oa-openid
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 23
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 2
9
- version: 0.0.2
9
+ - 4
10
+ version: 0.0.4
10
11
  platform: ruby
11
12
  authors:
12
13
  - Michael Bleigh
@@ -14,85 +15,149 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-01 00:00:00 -04:00
18
+ date: 2010-08-16 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- name: oa-core
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
24
  requirements:
25
- - - ~>
25
+ - - "="
26
26
  - !ruby/object:Gem::Version
27
+ hash: 23
27
28
  segments:
28
29
  - 0
29
30
  - 0
30
- - 0
31
- version: 0.0.0
31
+ - 4
32
+ version: 0.0.4
33
+ requirement: *id001
34
+ name: oa-core
35
+ prerelease: false
32
36
  type: :runtime
33
- version_requirements: *id001
34
37
  - !ruby/object:Gem::Dependency
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 17
44
+ segments:
45
+ - 1
46
+ - 1
47
+ - 1
48
+ version: 1.1.1
49
+ requirement: *id002
35
50
  name: rack-openid
36
51
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
52
+ type: :runtime
53
+ - !ruby/object:Gem::Dependency
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
55
+ none: false
38
56
  requirements:
39
57
  - - ">="
40
58
  - !ruby/object:Gem::Version
59
+ hash: 3
41
60
  segments:
42
61
  - 0
43
62
  version: "0"
63
+ requirement: *id003
64
+ name: ruby-openid-apps-discovery
65
+ prerelease: false
44
66
  type: :runtime
45
- version_requirements: *id002
46
67
  - !ruby/object:Gem::Dependency
47
- name: rspec
48
- prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
68
+ version_requirements: &id004 !ruby/object:Gem::Requirement
69
+ none: false
50
70
  requirements:
51
71
  - - ">="
52
72
  - !ruby/object:Gem::Version
73
+ hash: 3
53
74
  segments:
54
- - 1
55
- - 2
56
- - 9
57
- version: 1.2.9
75
+ - 0
76
+ version: "0"
77
+ requirement: *id004
78
+ name: rake
79
+ prerelease: false
58
80
  type: :development
59
- version_requirements: *id003
60
81
  - !ruby/object:Gem::Dependency
61
- name: webmock
62
- prerelease: false
63
- requirement: &id004 !ruby/object:Gem::Requirement
82
+ version_requirements: &id005 !ruby/object:Gem::Requirement
83
+ none: false
64
84
  requirements:
65
- - - ">="
85
+ - - ~>
66
86
  - !ruby/object:Gem::Version
87
+ hash: 15
67
88
  segments:
68
89
  - 0
69
- version: "0"
90
+ - 0
91
+ - 8
92
+ version: 0.0.8
93
+ requirement: *id005
94
+ name: mg
95
+ prerelease: false
70
96
  type: :development
71
- version_requirements: *id004
72
97
  - !ruby/object:Gem::Dependency
73
- name: rack-test
74
- prerelease: false
75
- requirement: &id005 !ruby/object:Gem::Requirement
98
+ version_requirements: &id006 !ruby/object:Gem::Requirement
99
+ none: false
76
100
  requirements:
77
- - - ">="
101
+ - - ~>
78
102
  - !ruby/object:Gem::Version
103
+ hash: 27
79
104
  segments:
105
+ - 1
106
+ - 3
80
107
  - 0
81
- version: "0"
108
+ version: 1.3.0
109
+ requirement: *id006
110
+ name: rspec
111
+ prerelease: false
82
112
  type: :development
83
- version_requirements: *id005
84
113
  - !ruby/object:Gem::Dependency
85
- name: mg
114
+ version_requirements: &id007 !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ~>
118
+ - !ruby/object:Gem::Version
119
+ hash: 19
120
+ segments:
121
+ - 1
122
+ - 3
123
+ - 4
124
+ version: 1.3.4
125
+ requirement: *id007
126
+ name: webmock
86
127
  prerelease: false
87
- requirement: &id006 !ruby/object:Gem::Requirement
128
+ type: :development
129
+ - !ruby/object:Gem::Dependency
130
+ version_requirements: &id008 !ruby/object:Gem::Requirement
131
+ none: false
88
132
  requirements:
89
- - - ">="
133
+ - - ~>
90
134
  - !ruby/object:Gem::Version
135
+ hash: 3
91
136
  segments:
92
137
  - 0
93
- version: "0"
138
+ - 5
139
+ - 4
140
+ version: 0.5.4
141
+ requirement: *id008
142
+ name: rack-test
143
+ prerelease: false
144
+ type: :development
145
+ - !ruby/object:Gem::Dependency
146
+ version_requirements: &id009 !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ~>
150
+ - !ruby/object:Gem::Version
151
+ hash: 1
152
+ segments:
153
+ - 1
154
+ - 4
155
+ - 3
156
+ version: 1.4.3
157
+ requirement: *id009
158
+ name: json
159
+ prerelease: false
94
160
  type: :development
95
- version_requirements: *id006
96
161
  description: OpenID strategies for OmniAuth.
97
162
  email: michael@intridea.com
98
163
  executables: []
@@ -103,7 +168,7 @@ extra_rdoc_files: []
103
168
 
104
169
  files:
105
170
  - lib/omniauth/openid.rb
106
- - lib/omniauth/strategies/google.rb
171
+ - lib/omniauth/strategies/google_apps.rb
107
172
  - lib/omniauth/strategies/open_id.rb
108
173
  - README.rdoc
109
174
  - LICENSE.rdoc
@@ -118,23 +183,27 @@ rdoc_options: []
118
183
  require_paths:
119
184
  - lib
120
185
  required_ruby_version: !ruby/object:Gem::Requirement
186
+ none: false
121
187
  requirements:
122
188
  - - ">="
123
189
  - !ruby/object:Gem::Version
190
+ hash: 3
124
191
  segments:
125
192
  - 0
126
193
  version: "0"
127
194
  required_rubygems_version: !ruby/object:Gem::Requirement
195
+ none: false
128
196
  requirements:
129
197
  - - ">="
130
198
  - !ruby/object:Gem::Version
199
+ hash: 3
131
200
  segments:
132
201
  - 0
133
202
  version: "0"
134
203
  requirements: []
135
204
 
136
205
  rubyforge_project:
137
- rubygems_version: 1.3.6
206
+ rubygems_version: 1.3.7
138
207
  signing_key:
139
208
  specification_version: 3
140
209
  summary: OpenID strategies for OmniAuth.
@@ -1,7 +0,0 @@
1
- module OmniAuth
2
- module Strategies
3
- class Google < OmniAuth::Stratgies::OpenID
4
- def identifier; 'https://www.google.com/accounts/o8/id' end
5
- end
6
- end
7
- end