oa-openid 0.2.6 → 0.3.0.rc3
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/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
|