authlogic-connect 0.0.4.06 → 0.0.5
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/Rakefile +1 -1
- data/lib/authlogic-connect.rb +11 -0
- data/lib/authlogic_connect/oauth/tokens/github_token.rb +12 -0
- data/lib/authlogic_connect/oauth/tokens/oauth_token.rb +16 -12
- data/test/libs/database.rb +1 -1
- data/test/test_helper.rb +2 -1
- data/test/test_user.rb +9 -0
- metadata +5 -5
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@ require 'rake/gempackagetask'
|
|
6
6
|
spec = Gem::Specification.new do |s|
|
7
7
|
s.name = "authlogic-connect"
|
8
8
|
s.author = "Lance Pollard"
|
9
|
-
s.version = "0.0.
|
9
|
+
s.version = "0.0.5"
|
10
10
|
s.summary = "Authlogic Connect: Oauth and OpenID made dead simple"
|
11
11
|
s.homepage = "http://github.com/viatropos/authlogic-connect"
|
12
12
|
s.email = "lancejpollard@gmail.com"
|
data/lib/authlogic-connect.rb
CHANGED
@@ -24,4 +24,15 @@ custom_models += Dir["#{library}/openid/tokens"]
|
|
24
24
|
custom_models.each do |path|
|
25
25
|
$LOAD_PATH << path
|
26
26
|
ActiveSupport::Dependencies.load_paths << path
|
27
|
+
end
|
28
|
+
|
29
|
+
# Rails 3beta4 backport
|
30
|
+
if defined?(ActiveSupport::HashWithIndifferentAccess)
|
31
|
+
ActiveSupport::HashWithIndifferentAccess.class_eval do
|
32
|
+
unless defined?(:symbolize_keys!)
|
33
|
+
def symbolize_keys!
|
34
|
+
symbolize_keys
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
27
38
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class GithubToken < OauthToken
|
2
|
+
|
3
|
+
key do |access_token|
|
4
|
+
user = JSON.parse(access_token.get("/api/v2/json/user/show"))
|
5
|
+
user["id"]
|
6
|
+
end
|
7
|
+
|
8
|
+
settings "https://github.com",
|
9
|
+
:authorize_path => "/login/oauth/authorize",
|
10
|
+
:access_token_path => "/login/oauth/access_token"
|
11
|
+
|
12
|
+
end
|
@@ -12,6 +12,10 @@ class OauthToken < AccessToken
|
|
12
12
|
@client
|
13
13
|
end
|
14
14
|
|
15
|
+
def clear
|
16
|
+
@client = nil
|
17
|
+
end
|
18
|
+
|
15
19
|
def oauth_version
|
16
20
|
self.class.oauth_version
|
17
21
|
end
|
@@ -20,7 +24,7 @@ class OauthToken < AccessToken
|
|
20
24
|
client.get(path, options)
|
21
25
|
end
|
22
26
|
|
23
|
-
def post(path, body=
|
27
|
+
def post(path, body = "", headers = {})
|
24
28
|
client.post(path, body, headers)
|
25
29
|
end
|
26
30
|
|
@@ -52,15 +56,11 @@ class OauthToken < AccessToken
|
|
52
56
|
end
|
53
57
|
|
54
58
|
def consumer
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
@consumer = OAuth2::Client.new(credentials[:key], credentials[:secret], config.merge(credentials[:options] || {}))
|
60
|
-
end
|
59
|
+
if oauth_version == 1.0
|
60
|
+
OAuth::Consumer.new(credentials[:key], credentials[:secret], config.merge(credentials[:options] || {}))
|
61
|
+
else
|
62
|
+
OAuth2::Client.new(credentials[:key], credentials[:secret], config.merge(credentials[:options] || {}))
|
61
63
|
end
|
62
|
-
|
63
|
-
@consumer
|
64
64
|
end
|
65
65
|
|
66
66
|
# if we're lucky we can find it by the token.
|
@@ -84,7 +84,8 @@ class OauthToken < AccessToken
|
|
84
84
|
redirect_uri = options[:redirect_uri]
|
85
85
|
token = options[:token]
|
86
86
|
secret = options[:secret]
|
87
|
-
|
87
|
+
consumer = self.consumer # cached
|
88
|
+
|
88
89
|
if oauth_version == 1.0
|
89
90
|
access = request_token(token, secret).get_access_token(:oauth_verifier => oauth_verifier)
|
90
91
|
result = {:token => access.token, :secret => access.secret, :key => nil}
|
@@ -109,8 +110,10 @@ class OauthToken < AccessToken
|
|
109
110
|
# this is a cleaner method so we can access the authorize_url
|
110
111
|
# from oauth 1 or 2
|
111
112
|
def authorize_url(callback_url, &block)
|
113
|
+
consumer = self.consumer # cached
|
114
|
+
|
112
115
|
if oauth_version == 1.0
|
113
|
-
request = get_request_token(callback_url)
|
116
|
+
request = get_request_token(callback_url, consumer)
|
114
117
|
yield request if block_given?
|
115
118
|
return request.authorize_url
|
116
119
|
else
|
@@ -131,8 +134,9 @@ class OauthToken < AccessToken
|
|
131
134
|
|
132
135
|
# if you pass a hash as the second parameter to consumer.get_request_token,
|
133
136
|
# ruby oauth will think this is a form and all sorts of bad things happen
|
134
|
-
def get_request_token(callback_url)
|
137
|
+
def get_request_token(callback_url, consumer = nil)
|
135
138
|
options = {:scope => config[:scope]} if config[:scope]
|
139
|
+
consumer ||= self.consumer
|
136
140
|
consumer.get_request_token({:oauth_callback => callback_url}, options)
|
137
141
|
end
|
138
142
|
|
data/test/libs/database.rb
CHANGED
@@ -18,7 +18,7 @@ ActiveRecord::Schema.define(:version => 1) do
|
|
18
18
|
t.datetime :updated_at
|
19
19
|
end
|
20
20
|
|
21
|
-
create_table :
|
21
|
+
create_table :access_tokens, :force => true do |t|
|
22
22
|
t.integer :user_id
|
23
23
|
t.string :type, :limit => 30
|
24
24
|
t.string :key, :limit => 1024
|
data/test/test_helper.rb
CHANGED
data/test/test_user.rb
CHANGED
@@ -190,5 +190,14 @@ module AuthlogicConnect
|
|
190
190
|
end
|
191
191
|
end
|
192
192
|
|
193
|
+
context "tokens" do
|
194
|
+
setup do
|
195
|
+
@token = TwitterToken.new
|
196
|
+
end
|
197
|
+
|
198
|
+
should "be version 1 since it's twitter" do
|
199
|
+
assert_equal 1.0, @token.oauth_version
|
200
|
+
end
|
201
|
+
end
|
193
202
|
end
|
194
203
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authlogic-connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
|
11
|
-
version: 0.0.4.06
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
12
11
|
platform: ruby
|
13
12
|
authors:
|
14
13
|
- Lance Pollard
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2010-
|
18
|
+
date: 2010-07-07 00:00:00 -07:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
@@ -168,6 +167,7 @@ files:
|
|
168
167
|
- lib/authlogic_connect/oauth/tokens/aol_token.rb
|
169
168
|
- lib/authlogic_connect/oauth/tokens/facebook_token.rb
|
170
169
|
- lib/authlogic_connect/oauth/tokens/get_satisfaction_token.rb
|
170
|
+
- lib/authlogic_connect/oauth/tokens/github_token.rb
|
171
171
|
- lib/authlogic_connect/oauth/tokens/google_token.rb
|
172
172
|
- lib/authlogic_connect/oauth/tokens/linked_in_token.rb
|
173
173
|
- lib/authlogic_connect/oauth/tokens/meetup_token.rb
|