oa-openid 0.2.6 → 0.3.0.rc3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +5 -0
- data/lib/omniauth/openid.rb +1 -0
- data/lib/omniauth/strategies/google_hybrid.rb +55 -0
- data/lib/omniauth/strategies/open_id.rb +4 -2
- data/lib/omniauth/version.rb +3 -3
- data/oa-openid.gemspec +12 -14
- data/spec/omniauth/strategies/google_hybrid_spec.rb +63 -0
- data/spec/omniauth/strategies/open_id_spec.rb +83 -67
- metadata +77 -25
data/Gemfile
CHANGED
@@ -1,5 +1,10 @@
|
|
1
|
+
require File.expand_path('../lib/omniauth/version', __FILE__)
|
2
|
+
|
1
3
|
source 'http://rubygems.org'
|
2
4
|
|
5
|
+
gem 'oa-core', OmniAuth::Version::STRING, :path => '../oa-core'
|
6
|
+
gem 'oa-oauth', OmniAuth::Version::STRING, :path => '../oa-oauth'
|
7
|
+
|
3
8
|
platforms :jruby do
|
4
9
|
gem 'jruby-openssl', '~> 0.7'
|
5
10
|
end
|
data/lib/omniauth/openid.rb
CHANGED
@@ -55,6 +55,7 @@ module OmniAuth
|
|
55
55
|
module Strategies
|
56
56
|
autoload :OpenID, 'omniauth/strategies/open_id'
|
57
57
|
autoload :GoogleApps, 'omniauth/strategies/google_apps'
|
58
|
+
autoload :GoogleHybrid, 'omniauth/strategies/google_hybrid'
|
58
59
|
autoload :Steam, 'omniauth/strategies/steam'
|
59
60
|
end
|
60
61
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rack/openid'
|
2
|
+
require 'omniauth/openid'
|
3
|
+
require 'oauth'
|
4
|
+
|
5
|
+
module OmniAuth
|
6
|
+
module Strategies
|
7
|
+
# OmniAuth strategy for connecting to Google via the OpenID+OAuth Hybrid Protocol.
|
8
|
+
# For help, check the example implementation on https://github.com/boyvanamstel/Google-Hybrid-Omniauth-implementation
|
9
|
+
class GoogleHybrid < OmniAuth::Strategies::OpenID
|
10
|
+
|
11
|
+
protected
|
12
|
+
|
13
|
+
def dummy_app
|
14
|
+
lambda{|env| [401, {"WWW-Authenticate" => Rack::OpenID.build_header(
|
15
|
+
:identifier => identifier,
|
16
|
+
:return_to => callback_url,
|
17
|
+
:required => @options[:required],
|
18
|
+
:optional => @options[:optional],
|
19
|
+
:"oauth[consumer]" => @options[:consumer_key],
|
20
|
+
:"oauth[scope]" => @options[:scope],
|
21
|
+
:method => 'post'
|
22
|
+
)}, []]}
|
23
|
+
end
|
24
|
+
|
25
|
+
def auth_hash
|
26
|
+
# Based on https://gist.github.com/569650 by nov
|
27
|
+
oauth_response = ::OpenID::OAuth::Response.from_success_response(@openid_response)
|
28
|
+
|
29
|
+
consumer = ::OAuth::Consumer.new(
|
30
|
+
@options[:consumer_key],
|
31
|
+
@options[:consumer_secret],
|
32
|
+
:site => 'https://www.google.com',
|
33
|
+
:access_token_path => '/accounts/OAuthGetAccessToken'
|
34
|
+
)
|
35
|
+
request_token = ::OAuth::RequestToken.new(
|
36
|
+
consumer,
|
37
|
+
oauth_response.request_token,
|
38
|
+
"" # OAuth request token secret is also blank in OpenID/OAuth Hybrid
|
39
|
+
)
|
40
|
+
@access_token = request_token.get_access_token
|
41
|
+
|
42
|
+
OmniAuth::Utils.deep_merge(super(), {
|
43
|
+
'uid' => @openid_response.display_identifier,
|
44
|
+
'user_info' => user_info(@openid_response),
|
45
|
+
'credentials' => {
|
46
|
+
'scope' => @options[:scope],
|
47
|
+
'token' => @access_token.token,
|
48
|
+
'secret' => @access_token.secret
|
49
|
+
}
|
50
|
+
})
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
@@ -56,9 +56,11 @@ module OmniAuth
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def identifier
|
59
|
-
options[:identifier] || request[IDENTIFIER_URL_PARAMETER]
|
59
|
+
i = options[:identifier] || request[IDENTIFIER_URL_PARAMETER]
|
60
|
+
i = nil if i == ''
|
61
|
+
i
|
60
62
|
end
|
61
|
-
|
63
|
+
|
62
64
|
def request_phase
|
63
65
|
identifier ? start : get_identifier
|
64
66
|
end
|
data/lib/omniauth/version.rb
CHANGED
@@ -4,13 +4,13 @@ module OmniAuth
|
|
4
4
|
MAJOR = 0
|
5
5
|
end
|
6
6
|
unless defined?(::OmniAuth::Version::MINOR)
|
7
|
-
MINOR =
|
7
|
+
MINOR = 3
|
8
8
|
end
|
9
9
|
unless defined?(::OmniAuth::Version::PATCH)
|
10
|
-
PATCH =
|
10
|
+
PATCH = 0
|
11
11
|
end
|
12
12
|
unless defined?(::OmniAuth::Version::PRE)
|
13
|
-
PRE =
|
13
|
+
PRE = "rc3"
|
14
14
|
end
|
15
15
|
unless defined?(::OmniAuth::Version::STRING)
|
16
16
|
STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
|
data/oa-openid.gemspec
CHANGED
@@ -1,28 +1,26 @@
|
|
1
|
-
#
|
1
|
+
# encoding: utf-8
|
2
2
|
require File.expand_path('../lib/omniauth/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.
|
6
|
-
gem.
|
7
|
-
gem.
|
8
|
-
gem.add_development_dependency 'maruku', '~> 0.6'
|
5
|
+
gem.add_dependency 'oa-core', OmniAuth::Version::STRING
|
6
|
+
gem.add_dependency 'rack-openid', '~> 1.3.1'
|
7
|
+
gem.add_dependency 'ruby-openid-apps-discovery', '~> 1.2.0'
|
9
8
|
gem.add_development_dependency 'rack-test', '~> 0.5'
|
10
9
|
gem.add_development_dependency 'rake', '~> 0.8'
|
10
|
+
gem.add_development_dependency 'rdiscount', '~> 1.6'
|
11
11
|
gem.add_development_dependency 'rspec', '~> 2.5'
|
12
12
|
gem.add_development_dependency 'simplecov', '~> 0.4'
|
13
|
-
gem.add_development_dependency 'webmock', '~> 1.
|
13
|
+
gem.add_development_dependency 'webmock', '~> 1.7'
|
14
14
|
gem.add_development_dependency 'yard', '~> 0.7'
|
15
|
-
gem.
|
16
|
-
gem.name = 'oa-openid'
|
17
|
-
gem.version = OmniAuth::Version::STRING
|
15
|
+
gem.authors = ['Michael Bleigh', 'Erik Michaels-Ober']
|
18
16
|
gem.description = %q{OpenID strategies for OmniAuth.}
|
19
|
-
gem.summary = gem.description
|
20
17
|
gem.email = ['michael@intridea.com', 'sferik@gmail.com']
|
21
|
-
gem.homepage = 'http://github.com/intridea/omniauth'
|
22
|
-
gem.authors = ['Michael Bleigh', 'Erik Michaels-Ober']
|
23
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
|
24
18
|
gem.files = `git ls-files`.split("\n")
|
25
|
-
gem.
|
19
|
+
gem.homepage = 'http://github.com/intridea/omniauth'
|
20
|
+
gem.name = 'oa-openid'
|
26
21
|
gem.require_paths = ['lib']
|
27
22
|
gem.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if gem.respond_to? :required_rubygems_version=
|
23
|
+
gem.summary = gem.description
|
24
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
|
+
gem.version = OmniAuth::Version::STRING
|
28
26
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
require 'rack/openid'
|
3
|
+
require 'omniauth/openid'
|
4
|
+
require 'oauth'
|
5
|
+
|
6
|
+
describe "OmniAuth::Strategies::GoogleHybrid" do
|
7
|
+
|
8
|
+
def app
|
9
|
+
Rack::Builder.new {
|
10
|
+
use OmniAuth::Test::PhonySession
|
11
|
+
use OmniAuth::Builder do
|
12
|
+
provider :google_hybrid, nil,
|
13
|
+
:name => 'google_hybrid',
|
14
|
+
:identifier => 'https://www.google.com/accounts/o8/id',
|
15
|
+
:scope => ["https://www.google.com/m8/feeds/", "https://mail.google.com/mail/feed/atom/"],
|
16
|
+
:consumer_key => '[your key here]',
|
17
|
+
:consumer_secret => '[your secret here]'
|
18
|
+
end
|
19
|
+
run lambda { |env| [404, {'Content-Type' => 'text/plain'}, [env.key?('omniauth.auth').to_s]] }
|
20
|
+
}.to_app
|
21
|
+
end
|
22
|
+
|
23
|
+
def session
|
24
|
+
last_request.env['rack.session']
|
25
|
+
end
|
26
|
+
|
27
|
+
def expired_query_string
|
28
|
+
'openid=consumer&janrain_nonce=2011-07-21T20%3A14%3A56ZJ8LP3T&openid.assoc_handle=%7BHMAC-SHA1%7D%7B4e284c39%7D%7B9nvQeg%3D%3D%7D&openid.claimed_id=http%3A%2F%2Flocalhost%3A1123%2Fjohn.doe%3Fopenid.success%3Dtrue&openid.identity=http%3A%2F%2Flocalhost%3A1123%2Fjohn.doe%3Fopenid.success%3Dtrue&openid.mode=id_res&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.op_endpoint=http%3A%2F%2Flocalhost%3A1123%2Fserver%2F%3Fopenid.success%3Dtrue&openid.response_nonce=2011-07-21T20%3A14%3A56Zf9gC8S&openid.return_to=http%3A%2F%2Flocalhost%3A8888%2FDevelopment%2FWordpress%2Fwp_openid%2F%3Fopenid%3Dconsumer%26janrain_nonce%3D2011-07-21T20%253A14%253A56ZJ8LP3T&openid.sig=GufV13SUJt8VgmSZ92jGZCFBEvQ%3D&openid.signed=assoc_handle%2Cclaimed_id%2Cidentity%2Cmode%2Cns%2Cop_endpoint%2Cresponse_nonce%2Creturn_to%2Csigned'
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'followed by /auth/google_hybrid/callback' do
|
32
|
+
context 'successful' do
|
33
|
+
#before do
|
34
|
+
# @identifier_url = 'https://www.google.com/accounts/o8/id'
|
35
|
+
# # TODO: change this mock to actually return some sort of OpenID response
|
36
|
+
# stub_request(:get, @identifier_url)
|
37
|
+
# get '/auth/google_hybrid/callback'
|
38
|
+
#end
|
39
|
+
|
40
|
+
it "should set provider to google_hybrid"
|
41
|
+
it "should create auth_hash based on sreg"
|
42
|
+
it "should create auth_hash based on ax"
|
43
|
+
|
44
|
+
it "should exchange OAuth request token for access token"
|
45
|
+
|
46
|
+
#it 'should call through to the master app' do
|
47
|
+
# last_response.body.should == 'true'
|
48
|
+
#end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'unsuccessful' do
|
52
|
+
describe 'returning with expired credentials' do
|
53
|
+
before do
|
54
|
+
get '/auth/google_hybrid/callback?' + expired_query_string
|
55
|
+
end
|
56
|
+
it 'it should redirect to invalid credentials' do
|
57
|
+
last_response.should be_redirect
|
58
|
+
last_response.headers['Location'].should =~ %r{invalid_credentials}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,71 +1,87 @@
|
|
1
1
|
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
require 'rack/openid'
|
3
|
+
require 'omniauth/openid'
|
2
4
|
|
3
|
-
describe OmniAuth::Strategies::OpenID do
|
5
|
+
describe OmniAuth::Strategies::OpenID, :type => :strategy do
|
4
6
|
|
5
|
-
|
7
|
+
include OmniAuth::Test::StrategyTestCase
|
8
|
+
|
9
|
+
def strategy
|
10
|
+
[OmniAuth::Strategies::OpenID]
|
11
|
+
end
|
12
|
+
|
13
|
+
def expired_query_string
|
14
|
+
'openid=consumer&janrain_nonce=2011-07-21T20%3A14%3A56ZJ8LP3T&openid.assoc_handle=%7BHMAC-SHA1%7D%7B4e284c39%7D%7B9nvQeg%3D%3D%7D&openid.claimed_id=http%3A%2F%2Flocalhost%3A1123%2Fjohn.doe%3Fopenid.success%3Dtrue&openid.identity=http%3A%2F%2Flocalhost%3A1123%2Fjohn.doe%3Fopenid.success%3Dtrue&openid.mode=id_res&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.op_endpoint=http%3A%2F%2Flocalhost%3A1123%2Fserver%2F%3Fopenid.success%3Dtrue&openid.response_nonce=2011-07-21T20%3A14%3A56Zf9gC8S&openid.return_to=http%3A%2F%2Flocalhost%3A8888%2FDevelopment%2FWordpress%2Fwp_openid%2F%3Fopenid%3Dconsumer%26janrain_nonce%3D2011-07-21T20%253A14%253A56ZJ8LP3T&openid.sig=GufV13SUJt8VgmSZ92jGZCFBEvQ%3D&openid.signed=assoc_handle%2Cclaimed_id%2Cidentity%2Cmode%2Cns%2Cop_endpoint%2Cresponse_nonce%2Creturn_to%2Csigned'
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '/auth/open_id without an identifier URL' do
|
18
|
+
before do
|
19
|
+
get '/auth/open_id'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should respond with OK' do
|
23
|
+
last_response.should be_ok
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should respond with HTML' do
|
27
|
+
last_response.content_type.should == 'text/html'
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should render an identifier URL input' do
|
31
|
+
last_response.body.should =~ %r{<input[^>]*#{OmniAuth::Strategies::OpenID::IDENTIFIER_URL_PARAMETER}}
|
32
|
+
end
|
33
|
+
end
|
6
34
|
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
# get '/auth/open_id/callback'
|
61
|
-
# end
|
62
|
-
#
|
63
|
-
# sets_an_auth_hash
|
64
|
-
# sets_provider_to 'open_id'
|
65
|
-
# sets_uid_to 'http://me.example.org'
|
66
|
-
#
|
67
|
-
# it 'should call through to the master app' do
|
68
|
-
# last_response.body.should == 'true'
|
69
|
-
# end
|
70
|
-
# end
|
71
|
-
# end
|
35
|
+
#describe '/auth/open_id with an identifier URL' do
|
36
|
+
# context 'successful' do
|
37
|
+
# before do
|
38
|
+
# @identifier_url = 'http://me.example.org'
|
39
|
+
# # TODO: change this mock to actually return some sort of OpenID response
|
40
|
+
# stub_request(:get, @identifier_url)
|
41
|
+
# get '/auth/open_id?openid_url=' + @identifier_url
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
# it 'should redirect to the OpenID identity URL' do
|
45
|
+
# last_response.should be_redirect
|
46
|
+
# last_response.headers['Location'].should =~ %r{^#{@identifier_url}.*}
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# it 'should tell the OpenID server to return to the callback URL' do
|
50
|
+
# return_to = CGI.escape(last_request.url + '/callback')
|
51
|
+
# last_response.headers['Location'].should =~ %r{[\?&]openid.return_to=#{return_to}}
|
52
|
+
# end
|
53
|
+
# end
|
54
|
+
#end
|
55
|
+
|
56
|
+
describe 'followed by /auth/open_id/callback' do
|
57
|
+
context 'successful' do
|
58
|
+
#before do
|
59
|
+
# @identifier_url = 'http://me.example.org'
|
60
|
+
# # TODO: change this mock to actually return some sort of OpenID response
|
61
|
+
# stub_request(:get, @identifier_url)
|
62
|
+
# get '/auth/open_id/callback'
|
63
|
+
#end
|
64
|
+
|
65
|
+
it "should set provider to open_id"
|
66
|
+
it "should create auth_hash based on sreg"
|
67
|
+
it "should create auth_hash based on ax"
|
68
|
+
|
69
|
+
#it 'should call through to the master app' do
|
70
|
+
# last_response.body.should == 'true'
|
71
|
+
#end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'unsuccessful' do
|
75
|
+
describe 'returning with expired credentials' do
|
76
|
+
before do
|
77
|
+
get '/auth/open_id/callback?' + expired_query_string
|
78
|
+
end
|
79
|
+
it 'it should redirect to invalid credentials' do
|
80
|
+
last_response.should be_redirect
|
81
|
+
last_response.headers['Location'].should =~ %r{invalid_credentials}
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oa-openid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
hash: 15424035
|
5
|
+
prerelease: 6
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
- rc
|
11
|
+
- 3
|
12
|
+
version: 0.3.0.rc3
|
6
13
|
platform: ruby
|
7
14
|
authors:
|
8
15
|
- Michael Bleigh
|
@@ -11,7 +18,7 @@ autorequire:
|
|
11
18
|
bindir: bin
|
12
19
|
cert_chain: []
|
13
20
|
|
14
|
-
date: 2011-
|
21
|
+
date: 2011-09-03 00:00:00 Z
|
15
22
|
dependencies:
|
16
23
|
- !ruby/object:Gem::Dependency
|
17
24
|
name: oa-core
|
@@ -21,7 +28,14 @@ dependencies:
|
|
21
28
|
requirements:
|
22
29
|
- - "="
|
23
30
|
- !ruby/object:Gem::Version
|
24
|
-
|
31
|
+
hash: 15424035
|
32
|
+
segments:
|
33
|
+
- 0
|
34
|
+
- 3
|
35
|
+
- 0
|
36
|
+
- rc
|
37
|
+
- 3
|
38
|
+
version: 0.3.0.rc3
|
25
39
|
type: :runtime
|
26
40
|
version_requirements: *id001
|
27
41
|
- !ruby/object:Gem::Dependency
|
@@ -32,6 +46,11 @@ dependencies:
|
|
32
46
|
requirements:
|
33
47
|
- - ~>
|
34
48
|
- !ruby/object:Gem::Version
|
49
|
+
hash: 25
|
50
|
+
segments:
|
51
|
+
- 1
|
52
|
+
- 3
|
53
|
+
- 1
|
35
54
|
version: 1.3.1
|
36
55
|
type: :runtime
|
37
56
|
version_requirements: *id002
|
@@ -43,40 +62,57 @@ dependencies:
|
|
43
62
|
requirements:
|
44
63
|
- - ~>
|
45
64
|
- !ruby/object:Gem::Version
|
65
|
+
hash: 31
|
66
|
+
segments:
|
67
|
+
- 1
|
68
|
+
- 2
|
69
|
+
- 0
|
46
70
|
version: 1.2.0
|
47
71
|
type: :runtime
|
48
72
|
version_requirements: *id003
|
49
73
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
74
|
+
name: rack-test
|
51
75
|
prerelease: false
|
52
76
|
requirement: &id004 !ruby/object:Gem::Requirement
|
53
77
|
none: false
|
54
78
|
requirements:
|
55
79
|
- - ~>
|
56
80
|
- !ruby/object:Gem::Version
|
57
|
-
|
81
|
+
hash: 1
|
82
|
+
segments:
|
83
|
+
- 0
|
84
|
+
- 5
|
85
|
+
version: "0.5"
|
58
86
|
type: :development
|
59
87
|
version_requirements: *id004
|
60
88
|
- !ruby/object:Gem::Dependency
|
61
|
-
name:
|
89
|
+
name: rake
|
62
90
|
prerelease: false
|
63
91
|
requirement: &id005 !ruby/object:Gem::Requirement
|
64
92
|
none: false
|
65
93
|
requirements:
|
66
94
|
- - ~>
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
|
96
|
+
hash: 27
|
97
|
+
segments:
|
98
|
+
- 0
|
99
|
+
- 8
|
100
|
+
version: "0.8"
|
69
101
|
type: :development
|
70
102
|
version_requirements: *id005
|
71
103
|
- !ruby/object:Gem::Dependency
|
72
|
-
name:
|
104
|
+
name: rdiscount
|
73
105
|
prerelease: false
|
74
106
|
requirement: &id006 !ruby/object:Gem::Requirement
|
75
107
|
none: false
|
76
108
|
requirements:
|
77
109
|
- - ~>
|
78
110
|
- !ruby/object:Gem::Version
|
79
|
-
|
111
|
+
hash: 3
|
112
|
+
segments:
|
113
|
+
- 1
|
114
|
+
- 6
|
115
|
+
version: "1.6"
|
80
116
|
type: :development
|
81
117
|
version_requirements: *id006
|
82
118
|
- !ruby/object:Gem::Dependency
|
@@ -87,6 +123,10 @@ dependencies:
|
|
87
123
|
requirements:
|
88
124
|
- - ~>
|
89
125
|
- !ruby/object:Gem::Version
|
126
|
+
hash: 9
|
127
|
+
segments:
|
128
|
+
- 2
|
129
|
+
- 5
|
90
130
|
version: "2.5"
|
91
131
|
type: :development
|
92
132
|
version_requirements: *id007
|
@@ -98,6 +138,10 @@ dependencies:
|
|
98
138
|
requirements:
|
99
139
|
- - ~>
|
100
140
|
- !ruby/object:Gem::Version
|
141
|
+
hash: 3
|
142
|
+
segments:
|
143
|
+
- 0
|
144
|
+
- 4
|
101
145
|
version: "0.4"
|
102
146
|
type: :development
|
103
147
|
version_requirements: *id008
|
@@ -109,7 +153,11 @@ dependencies:
|
|
109
153
|
requirements:
|
110
154
|
- - ~>
|
111
155
|
- !ruby/object:Gem::Version
|
112
|
-
|
156
|
+
hash: 1
|
157
|
+
segments:
|
158
|
+
- 1
|
159
|
+
- 7
|
160
|
+
version: "1.7"
|
113
161
|
type: :development
|
114
162
|
version_requirements: *id009
|
115
163
|
- !ruby/object:Gem::Dependency
|
@@ -120,20 +168,13 @@ dependencies:
|
|
120
168
|
requirements:
|
121
169
|
- - ~>
|
122
170
|
- !ruby/object:Gem::Version
|
171
|
+
hash: 5
|
172
|
+
segments:
|
173
|
+
- 0
|
174
|
+
- 7
|
123
175
|
version: "0.7"
|
124
176
|
type: :development
|
125
177
|
version_requirements: *id010
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: ZenTest
|
128
|
-
prerelease: false
|
129
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
|
-
requirements:
|
132
|
-
- - ~>
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version: "4.5"
|
135
|
-
type: :development
|
136
|
-
version_requirements: *id011
|
137
178
|
description: OpenID strategies for OmniAuth.
|
138
179
|
email:
|
139
180
|
- michael@intridea.com
|
@@ -156,10 +197,12 @@ files:
|
|
156
197
|
- lib/omniauth/openid.rb
|
157
198
|
- lib/omniauth/openid/gapps.rb
|
158
199
|
- lib/omniauth/strategies/google_apps.rb
|
200
|
+
- lib/omniauth/strategies/google_hybrid.rb
|
159
201
|
- lib/omniauth/strategies/open_id.rb
|
160
202
|
- lib/omniauth/strategies/steam.rb
|
161
203
|
- lib/omniauth/version.rb
|
162
204
|
- oa-openid.gemspec
|
205
|
+
- spec/omniauth/strategies/google_hybrid_spec.rb
|
163
206
|
- spec/omniauth/strategies/open_id_spec.rb
|
164
207
|
- spec/spec_helper.rb
|
165
208
|
homepage: http://github.com/intridea/omniauth
|
@@ -175,20 +218,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
175
218
|
requirements:
|
176
219
|
- - ">="
|
177
220
|
- !ruby/object:Gem::Version
|
221
|
+
hash: 3
|
222
|
+
segments:
|
223
|
+
- 0
|
178
224
|
version: "0"
|
179
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
226
|
none: false
|
181
227
|
requirements:
|
182
|
-
- - "
|
228
|
+
- - ">"
|
183
229
|
- !ruby/object:Gem::Version
|
184
|
-
|
230
|
+
hash: 25
|
231
|
+
segments:
|
232
|
+
- 1
|
233
|
+
- 3
|
234
|
+
- 1
|
235
|
+
version: 1.3.1
|
185
236
|
requirements: []
|
186
237
|
|
187
238
|
rubyforge_project:
|
188
|
-
rubygems_version: 1.8.
|
239
|
+
rubygems_version: 1.8.10
|
189
240
|
signing_key:
|
190
241
|
specification_version: 3
|
191
242
|
summary: OpenID strategies for OmniAuth.
|
192
243
|
test_files:
|
244
|
+
- spec/omniauth/strategies/google_hybrid_spec.rb
|
193
245
|
- spec/omniauth/strategies/open_id_spec.rb
|
194
246
|
- spec/spec_helper.rb
|