databasedotcom-oauth2 0.1.7 → 0.1.8
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/lib/databasedotcom-oauth2.rb +53 -22
- data/lib/databasedotcom-oauth2/version.rb +1 -1
- metadata +2 -2
@@ -15,6 +15,21 @@ end
|
|
15
15
|
|
16
16
|
module Databasedotcom
|
17
17
|
|
18
|
+
def self.parse_domain(url = nil)
|
19
|
+
unless url.nil?
|
20
|
+
url = "https://" + url if (url =~ /http[s]?:\/\//).nil?
|
21
|
+
begin
|
22
|
+
url = Addressable::URI.parse(url)
|
23
|
+
rescue Addressable::URI::InvalidURIError
|
24
|
+
url = nil
|
25
|
+
end
|
26
|
+
url = url.host unless url.nil?
|
27
|
+
url.strip! unless url.nil?
|
28
|
+
end
|
29
|
+
url = nil if url && url.strip.empty?
|
30
|
+
url
|
31
|
+
end
|
32
|
+
|
18
33
|
class Client
|
19
34
|
def self.from_token(token, api_version)
|
20
35
|
client = nil
|
@@ -22,7 +37,7 @@ module Databasedotcom
|
|
22
37
|
client = self.new({
|
23
38
|
:client_id => token.client.id,
|
24
39
|
:client_secret => token.client.secret,
|
25
|
-
:host => token.client.site
|
40
|
+
:host => Databasedotcom.parse_domain(token.client.site)
|
26
41
|
})
|
27
42
|
m = token["id"].match(/\/id\/([^\/]+)\/([^\/]+)$/)
|
28
43
|
client.org_id = m[1] rescue nil
|
@@ -35,6 +50,11 @@ module Databasedotcom
|
|
35
50
|
client
|
36
51
|
end
|
37
52
|
|
53
|
+
#def set_org_and_user_id(orgid, userid)
|
54
|
+
# @org_id = orgid
|
55
|
+
# @user_id = userid
|
56
|
+
#end
|
57
|
+
|
38
58
|
def org_id=(val)
|
39
59
|
@org_id = val
|
40
60
|
end
|
@@ -88,6 +108,7 @@ module Databasedotcom
|
|
88
108
|
@display_override = options[:display_override] || false
|
89
109
|
@immediate_override = options[:immediate_override] || false
|
90
110
|
@api_version = options[:api_version] || "24.0"
|
111
|
+
@debugging = options[:debugging] || false
|
91
112
|
end
|
92
113
|
|
93
114
|
fail "\n\ndatabasedotcom-oauth2 initialization error! :endpoints parameter " \
|
@@ -139,6 +160,7 @@ module Databasedotcom
|
|
139
160
|
end
|
140
161
|
|
141
162
|
def authorize_call
|
163
|
+
puts "==================\nauthorize phase\n==================\n" if @debugging
|
142
164
|
#determine endpoint via param; but if blank, use default
|
143
165
|
endpoint = request.params["endpoint"] #get endpoint from http param
|
144
166
|
keys = @endpoints[endpoint] #if endpoint not found, default will be used
|
@@ -150,11 +172,13 @@ module Databasedotcom
|
|
150
172
|
state = Addressable::URI.parse(request.params["state"])
|
151
173
|
state.query_values={} unless state.query_values
|
152
174
|
state.query_values= state.query_values.merge({:endpoint => endpoint})
|
175
|
+
|
176
|
+
puts "endpoint: #{endpoint}\nmydomain: #{mydomain}\nstate: #{state.to_str}" if @debugging
|
153
177
|
|
154
178
|
#build params hash to be passed to ouath2 authorize redirect url
|
155
179
|
auth_params = {
|
156
180
|
:redirect_uri => "#{full_host}#{@path_prefix}/callback",
|
157
|
-
:state => state.
|
181
|
+
:state => state.to_str
|
158
182
|
}
|
159
183
|
auth_params[:scope] = @scope unless @scope.nil? || @scope.strip.empty?
|
160
184
|
auth_params[:display] = @display unless @display.nil?
|
@@ -171,7 +195,9 @@ module Databasedotcom
|
|
171
195
|
auth_params.merge!(overrides)
|
172
196
|
|
173
197
|
#do redirect
|
174
|
-
|
198
|
+
redirect_url = client(mydomain || endpoint, keys[:key], keys[:secret]).auth_code.authorize_url(auth_params)
|
199
|
+
puts "redirecting to #{redirect_url}..." if @debugging
|
200
|
+
redirect redirect_url
|
175
201
|
end
|
176
202
|
|
177
203
|
def on_callback_path?
|
@@ -179,6 +205,7 @@ module Databasedotcom
|
|
179
205
|
end
|
180
206
|
|
181
207
|
def callback_call
|
208
|
+
puts "==================\ncallback phase\n==================\n" if @debugging
|
182
209
|
#check for error
|
183
210
|
callback_error = request.params["error"]
|
184
211
|
callback_error_details = request.params["error_description"]
|
@@ -194,35 +221,54 @@ module Databasedotcom
|
|
194
221
|
state_params = state.query_values.dup
|
195
222
|
endpoint = state_params.delete("endpoint")
|
196
223
|
keys = @endpoints[endpoint]
|
224
|
+
puts "endpoint #{endpoint}"
|
225
|
+
puts "keys #{keys}"
|
197
226
|
state.query_values= state_params
|
198
227
|
state = state.to_s
|
199
228
|
state.sub!(/\?$/,"") unless state.nil?
|
229
|
+
puts "endpoint: #{endpoint}\nstate: #{state.to_str}\nretrieving token" if @debugging
|
200
230
|
|
201
231
|
#do callout to retrieve token
|
202
232
|
access_token = client(endpoint, keys[:key], keys[:secret]).auth_code.get_token(code,
|
203
233
|
:redirect_uri => "#{full_host}#{@path_prefix}/callback")
|
234
|
+
puts "access_token immediatly post get token call #{access_token.inspect}" if @debugging
|
204
235
|
access_token.options[:mode] = :query
|
205
236
|
access_token.options[:param_name] = :oauth_token
|
206
237
|
access_token.options[:endpoint] = endpoint
|
207
238
|
access_token.client = nil
|
239
|
+
puts "access_token pre marshal-encrypt-cookiewrite #{access_token.inspect}" if @debugging
|
208
240
|
|
209
241
|
#populate session with serialized, encrypted token
|
210
242
|
#will be used later to materialize actual token and databasedotcom client handle
|
211
243
|
set_session_token(encrypt(access_token))
|
244
|
+
puts "session_token \n#{session_token}" if @debugging
|
212
245
|
redirect state.to_str
|
213
246
|
end
|
214
247
|
|
215
248
|
def materialize_token_and_client_from_session_if_present
|
216
|
-
|
249
|
+
puts "==========================\nmaterialize intercept\n==========================\n" if @debugging
|
250
|
+
access_token = nil
|
251
|
+
puts "session_token \n#{session_token}" if @debugging
|
252
|
+
begin
|
253
|
+
access_token = decrypt(session_token) unless session_token.nil?
|
254
|
+
rescue Exception => e
|
255
|
+
puts "Exception FYI"
|
256
|
+
self.class._log_exception(e)
|
257
|
+
end
|
217
258
|
unless access_token.nil?
|
259
|
+
puts "access_token post cookieread-decrypt-marshal #{access_token.inspect}" if @debugging
|
218
260
|
instance_url = access_token.params["instance_url"]
|
219
261
|
endpoint = access_token.options[:endpoint]
|
220
262
|
keys = @endpoints[endpoint]
|
263
|
+
puts "endpoint #{endpoint}\nkeys #{keys}" if @debugging
|
221
264
|
access_token.client = client(instance_url, keys[:key], keys[:secret])
|
222
265
|
unless keys.nil?
|
223
|
-
@env[TOKEN_KEY] = access_token
|
266
|
+
@env[TOKEN_KEY] = access_token #::OAuth2::AccessToken.from_hash(client(instance_url, keys[:key], keys[:secret]),access_token_hash.dup)
|
224
267
|
@env[CLIENT_KEY] = ::Databasedotcom::Client.from_token(@env[TOKEN_KEY],@api_version)
|
268
|
+
@env[CLIENT_KEY].debugging = @debugging
|
225
269
|
end
|
270
|
+
puts "materialized token: #{@env[TOKEN_KEY].inspect}" if @debugging
|
271
|
+
puts "materialized client: #{@env[CLIENT_KEY].inspect}" if @debugging
|
226
272
|
end
|
227
273
|
end
|
228
274
|
|
@@ -284,7 +330,7 @@ module Databasedotcom
|
|
284
330
|
::OAuth2::Client.new(
|
285
331
|
client_id,
|
286
332
|
client_secret,
|
287
|
-
:site => "https://#{
|
333
|
+
:site => "https://#{Databasedotcom.parse_domain(site)}",
|
288
334
|
:authorize_url => '/services/oauth2/authorize',
|
289
335
|
:token_url => '/services/oauth2/token'
|
290
336
|
)
|
@@ -306,7 +352,7 @@ module Databasedotcom
|
|
306
352
|
end
|
307
353
|
|
308
354
|
def sanitize_mydomain(mydomain)
|
309
|
-
mydomain = parse_domain(mydomain)
|
355
|
+
mydomain = Databasedotcom.parse_domain(mydomain)
|
310
356
|
mydomain = nil unless mydomain.nil? || !mydomain.strip.empty?
|
311
357
|
mydomain = mydomain.split(/\.my\.salesforce\.com/).first + ".my.salesforce.com" unless mydomain.nil?
|
312
358
|
mydomain
|
@@ -331,21 +377,6 @@ module Databasedotcom
|
|
331
377
|
endpoints
|
332
378
|
end
|
333
379
|
|
334
|
-
def parse_domain(url = nil)
|
335
|
-
unless url.nil?
|
336
|
-
url = "https://" + url if (url =~ /http[s]?:\/\//).nil?
|
337
|
-
begin
|
338
|
-
url = Addressable::URI.parse(url)
|
339
|
-
rescue Addressable::URI::InvalidURIError
|
340
|
-
url = nil
|
341
|
-
end
|
342
|
-
url = url.host unless url.nil?
|
343
|
-
url.strip! unless url.nil?
|
344
|
-
end
|
345
|
-
url = nil if url && url.strip.empty?
|
346
|
-
url
|
347
|
-
end
|
348
|
-
|
349
380
|
def param_repeated(url = nil, param_name = nil)
|
350
381
|
return_value = nil
|
351
382
|
unless url.nil? || url.strip.empty? || param_name.nil?
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: databasedotcom-oauth2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|