zuora_connect 2.0.57e → 2.0.57f

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b2e138a9e6f9b4a52f7137f75f1e5b42ea0ec86d3b171200c8c1f72f420e354
4
- data.tar.gz: 1a3623a3c7642fd58874073a40df968ca2cf873d57e37ce1b6cc73b4578a7a92
3
+ metadata.gz: abdb831ee4c52ca77b9d88bc6af7592d4c5675d969972f5df8cad88768da95c3
4
+ data.tar.gz: 2047383429c6d9aac57602e427e87c75be3bf281998287971b0f4e70c759c266
5
5
  SHA512:
6
- metadata.gz: 24c23ef88ab8eedae5a9f2f3a6dfd5f7e7156f9bbac0e1d8c17e6194ad88b28c0bdbb3ac6e7d6d4ff8a5000b8a0296bd122190c6e6e300b85597e4be9f0283c9
7
- data.tar.gz: 13dfee8116281ea45195120f9ede4e7317eb80b6fe138e912207c5ab6106f931516e251c95dc470efcc1d30dc46863216c5bb8d4124d03ad74b145ce09f67884
6
+ metadata.gz: d2fee7867ef23c4057389bc4c9ba97304e4ea29310f8408df18790333fde7eb6709a8e0f02f9610b5ffb9c4354134917f4b2e6fef5e3dc56c8baf6e3dd29e11b
7
+ data.tar.gz: e69ed51eee1b04b4fd51d51c005b3aabf833fbcb71c8680694bc66406f00ae392e279e4f85c55bf2dd41f33a53c9eeca53e0ffa709c9cb76ebab489efe4e3842
@@ -3,12 +3,7 @@
3
3
  <title>Select Task ID</title>
4
4
  <meta name="viewport" content="width=device-width,initial-scale=1">
5
5
  <style>
6
- body {
7
- background-color: #EFEFEF;
8
- margin: 0;
9
- }
10
-
11
- div.connect-dialog {
6
+ .connect-dialog {
12
7
  width: 95%;
13
8
  max-width: 33em;
14
9
  margin: 4em auto 0;
@@ -16,7 +11,11 @@
16
11
  text-align: center;
17
12
  }
18
13
 
19
- div.connect-dialog > div {
14
+ .connect-dialog div {
15
+ background-color: white;
16
+ color: #2E2F30;
17
+ text-align: center;
18
+ font-family: arial, sans-serif;
20
19
  margin: 0 0 1em;
21
20
  border: 1px solid #CCC;
22
21
  border-right-color: #999;
@@ -27,19 +26,17 @@
27
26
  border-top-right-radius: 9px;
28
27
  border-bottom-left-radius: 9px;
29
28
  border-bottom-right-radius: 9px;
30
- background-color: white;
31
29
  padding: 7px 12% 0;
32
30
  box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
33
31
  }
34
32
 
35
- div.connect-dialog > h1 {
33
+ .connect-dialog h1 {
36
34
  font-size: 100%;
37
35
  color: #3D4B5A;
38
36
  line-height: 1.5em;
39
37
  }
40
38
 
41
-
42
- div.connect-dialog > div.launch_button {
39
+ .connect-dialog .launch_button {
43
40
  margin: 1em 0 1em;
44
41
  margin-right: auto;
45
42
  margin-left: auto;
@@ -149,24 +149,24 @@ module ZuoraConnect
149
149
  ZuoraConnect::AppInstance.destroy(id)
150
150
  Apartment::Tenant.drop(id)
151
151
  render "zuora_connect/static/error_handled", :locals => {
152
- :title => "Application Setup Error",
152
+ :title => "Application Setup Error",
153
153
  :message => "Application cannot be run using Zuora Session. Delete old application \
154
154
  deployment and create new with Zuora Basic or OAuth credentials."
155
155
  }, :layout => false
156
- return
156
+ return
157
157
  rescue ZuoraConnect::Exceptions::AccessDenied => ex
158
158
  respond_to do |format|
159
- format.html {
159
+ format.html {
160
160
  render "zuora_connect/static/error_handled", :locals => {
161
- :title => "Application State Error",
161
+ :title => "Application State Error",
162
162
  :message => ex.message
163
- }, status: 401, layout: false
163
+ }, status: 401, layout: false
164
164
  }
165
- format.js {
165
+ format.js {
166
166
  render "zuora_connect/static/error_handled", :locals => {
167
- :title => "Application State Error",
167
+ :title => "Application State Error",
168
168
  :message => ex.message
169
- }, status: 401, layout: false
169
+ }, status: 401, layout: false
170
170
  }
171
171
  format.json { render json: {'errors' => ex.message}, status: 401 }
172
172
  format.all { render json: ex.message, status: 401 }
@@ -196,17 +196,17 @@ module ZuoraConnect
196
196
  raise ZuoraConnect::Exceptions::AccessDenied.new("User is not an authorized admin for this application") if raise_error
197
197
 
198
198
  respond_to do |format|
199
- format.html {
199
+ format.html {
200
200
  render "zuora_connect/static/error_handled", :locals => {
201
- :title => "Unauthorized",
201
+ :title => "Unauthorized",
202
202
  :message => "User is not an authorized admin for this application"
203
203
  }, status: 401, :layout => false
204
204
  }
205
- format.js {
205
+ format.js {
206
206
  render "zuora_connect/static/error_handled", :locals => {
207
- :title => "Unauthorized",
207
+ :title => "Unauthorized",
208
208
  :message => "User is not an authorized admin for this application"
209
- }, status: 401, :layout => false
209
+ }, status: 401, :layout => false
210
210
  }
211
211
  format.json { render json: {'errors' => ex.message}, status: 401 }
212
212
  format.all { render json: ex.message, status: 401 }
@@ -246,7 +246,7 @@ module ZuoraConnect
246
246
  auth_headers.merge!({'Authorization' => "ZSession-a3N2w #{zuora_client.get_session(prefix: false, auth_type: :basic)}"})
247
247
  else
248
248
  render "zuora_connect/static/error_handled", :locals => {
249
- :title => "Missing Authorization Token",
249
+ :title => "Missing Authorization Token",
250
250
  :message => "Zuora 'Zuora-Auth-Token' header and 'ZSession' cookie not present."
251
251
  }, :layout => false
252
252
  return
@@ -268,27 +268,34 @@ module ZuoraConnect
268
268
  if zuora_tenant_id.to_s == "10548"
269
269
  session.clear
270
270
  render "zuora_connect/static/error_handled", :locals => {
271
- :title => "Security Testing",
271
+ :title => "Security Testing",
272
272
  :message => "Ya we know it you"
273
273
  }, :layout => false
274
274
  return
275
275
  else
276
- raise ZuoraConnect::Exceptions::Error.new("Header entity id does not match identity call entity id.")
276
+ raise ZuoraConnect::Exceptions::Error.new("Header entity id does not match identity call entity id.")
277
277
  end
278
278
  end
279
279
 
280
+ ##
281
+ # If the ZSession was refreshed, but it's still the same user and they aren't launching from the side bar,
282
+ # we don't need to continue
283
+ is_same_user = identity.slice("entityId", "tenantId", "userId", "userProfileId") == session.slice("entityId", "tenantId", "userId", "userProfileId")
284
+ zuora_details["identity"]["entityId"] = identity['entityId']
280
285
  session["ZuoraCurrentIdentity"] = identity
281
286
  session["ZuoraCurrentEntity"] = identity['entityId']
282
287
  session["ZSession"] = cookies['ZSession']
283
- zuora_instance_id = nil
284
- zuora_details["identity"]["entityId"] = identity['entityId']
285
-
286
- client_describe, response = zuora_client.rest_call(
287
- url: zuora_client.rest_endpoint("genesis/user/info").gsub('v1/', ''),
288
- session_type: zuora_client.class == ZuoraAPI::Oauth ? :bearer : :basic,
289
- headers: auth_headers
290
- )
291
- session["ZuoraCurrentUserInfo"] = client_describe
288
+ unless is_same_user && !params[:sidebar_launch].to_s.to_bool
289
+ zuora_instance_id = nil
290
+ ZuoraConnect.logger.debug("UI Authorization", zuora: zuora_details)
291
+
292
+ client_describe, response = zuora_client.rest_call(
293
+ url: zuora_client.rest_endpoint("genesis/user/info").gsub('v1/', ''),
294
+ session_type: zuora_client.class == ZuoraAPI::Oauth ? :bearer : :basic,
295
+ headers: auth_headers
296
+ )
297
+ session["ZuoraCurrentUserInfo"] = client_describe
298
+ end
292
299
  end
293
300
 
294
301
  #Find matching app instances.
@@ -296,7 +303,7 @@ module ZuoraConnect
296
303
  appinstances = ZuoraConnect::AppInstance.where("zuora_entity_ids ?& array[:entities] = true AND zuora_domain = :host AND id = :id", entities: [zuora_entity_id], host: zuora_client.rest_domain, id: zuora_instance_id.to_i).pluck(:id, :name)
297
304
  else
298
305
  #if app_instance_ids is present then permissions still controlled by connect
299
- if params[:app_instance_ids].present?
306
+ if params[:app_instance_ids].present?
300
307
  navbar, response = zuora_client.rest_call(url: zuora_client.rest_endpoint("navigation"))
301
308
  urls = navbar['menus'].map {|x| x['url']}
302
309
  app_env = ENV["DEIS_APP"] || "xyz123"
@@ -304,7 +311,7 @@ module ZuoraConnect
304
311
  if url.blank?
305
312
  if navbar['menus'].map {|x| x['label']}.include?('Link Connect Account')
306
313
  render "zuora_connect/static/error_handled", :locals => {
307
- :title => "Link Account",
314
+ :title => "Link Account",
308
315
  :message => "Link Connect account to gain access to application."
309
316
  }, :layout => false
310
317
  return
@@ -330,7 +337,7 @@ module ZuoraConnect
330
337
  ZuoraConnect.logger.debug("Instance is #{appinstances.to_h.keys.first}")
331
338
  @appinstance = ZuoraConnect::AppInstance.find(appinstances.to_h.keys.first)
332
339
 
333
- #Add user/update
340
+ #Add user/update
334
341
  begin
335
342
  @zuora_user = ZuoraConnect::ZuoraUser.where(:zuora_user_id => zuora_user_id).first
336
343
  rescue ActiveRecord::StatementInvalid => ex
@@ -350,7 +357,7 @@ module ZuoraConnect
350
357
  else
351
358
  ZuoraConnect.logger.debug("New zuora user object for #{zuora_user_id}")
352
359
  @zuora_user = ZuoraConnect::ZuoraUser.create!(:zuora_user_id => zuora_user_id, :zuora_identity_response => {zuora_entity_id => session["ZuoraCurrentIdentity"]})
353
- end
360
+ end
354
361
  @zuora_user.session = session
355
362
  session["#{@appinstance.id}::user::localUserId"] = @zuora_user.id
356
363
  session["#{@appinstance.id}::user::email"] = session['ZuoraCurrentIdentity']["username"]
@@ -359,19 +366,19 @@ module ZuoraConnect
359
366
  session["appInstance"] = @appinstance.id
360
367
 
361
368
  #We have multiple, user must pick
362
- elsif appinstances.size > 1
369
+ elsif appinstances.size > 1
363
370
  ZuoraConnect.logger.debug("User must select instance. #{@names}")
364
371
  render "zuora_connect/static/launch", :locals => {:names => appinstances.to_h}, :layout => false
365
372
  return
366
373
 
367
374
  #We have no deployed instance for this tenant
368
- else
369
- #Ensure user can access oauth creation API
375
+ else
376
+ #Ensure user can access oauth creation API
370
377
  if !session["ZuoraCurrentUserInfo"]['permissions'].include?("permission.userManagement")
371
378
  Thread.current[:appinstance] = nil
372
379
  session["appInstance"] = nil
373
380
  render "zuora_connect/static/error_handled", :locals => {
374
- :title => "Application can only complete its initial setup via platform administrator",
381
+ :title => "Application can only complete its initial setup via platform administrator",
375
382
  :message => "Please contact admin who has user managment permissions in tenant and have them click and finish setup."
376
383
  }, :layout => false
377
384
  return
@@ -389,20 +396,20 @@ module ZuoraConnect
389
396
  next_id = (ZuoraConnect::AppInstance.all.where('id > 24999999').order(id: :desc).limit(1).pluck(:id).first || 24999999) + 1
390
397
  user = (ENV['DEIS_APP'] || "Application").split('-').map(&:capitalize).join(' ')
391
398
  body = {
392
- 'userId' => zuora_user_id,
393
- 'entityIds' => [zuora_entity_id.unpack("a8a4a4a4a12").join('-')],
394
- 'customAuthorities' => [],
399
+ 'userId' => zuora_user_id,
400
+ 'entityIds' => [zuora_entity_id.unpack("a8a4a4a4a12").join('-')],
401
+ 'customAuthorities' => [],
395
402
  'additionalInformation' => {
396
- 'description' => "This user is for #{user} application.",
403
+ 'description' => "This user is for #{user} application.",
397
404
  'name' => "#{user} API User #{next_id}"
398
405
  }
399
406
  }
400
407
 
401
408
  oauth_response, response = zuora_client.rest_call(
402
- method: :post,
403
- body: body.to_json,
404
- url: zuora_client.rest_endpoint("genesis/clients").gsub('v1/', ''),
405
- session_type: zuora_client.class == ZuoraAPI::Oauth ? :bearer : :basic,
409
+ method: :post,
410
+ body: body.to_json,
411
+ url: zuora_client.rest_endpoint("genesis/clients").gsub('v1/', ''),
412
+ session_type: zuora_client.class == ZuoraAPI::Oauth ? :bearer : :basic,
406
413
  headers: auth_headers
407
414
  )
408
415
 
@@ -444,7 +451,7 @@ module ZuoraConnect
444
451
  Thread.current[:appinstance] = nil
445
452
  session["appInstance"] = nil
446
453
  render "zuora_connect/static/error_handled", :locals => {
447
- :title => "Application could not create unique tokens.",
454
+ :title => "Application could not create unique tokens.",
448
455
  :message => "Please contact support or retry launching application."
449
456
  }, :layout => false
450
457
  return
@@ -477,7 +484,7 @@ module ZuoraConnect
477
484
  end
478
485
  redirect_to "https://#{zuora_host}/apps/newlogin.do?retURL=#{request.fullpath}"
479
486
  return
480
-
487
+
481
488
  rescue ZuoraAPI::Exceptions::ZuoraAPIError, Exception => ex
482
489
  if ex.message.include?("Referenced User resource(s) not found") && ex.class == ZuoraAPI::Exceptions::ZuoraAPIError
483
490
  locals = {title: "Provisioning Error", message: "New tenats need to be provisioned by API Gateway('#{ex.message}'). Please contact support."}
@@ -490,7 +497,7 @@ module ZuoraConnect
490
497
  ZuoraConnect.logger.error("UI Authorization Error", ex, zuora: zuora_details)
491
498
  render "zuora_connect/static/error_unhandled", locals: {exception: ex, skip_exception: true}, layout: false, status: 500
492
499
  end
493
- return
500
+ return
494
501
  end
495
502
  elsif request["data"] && /^([A-Za-z0-9+\/\-\_]{4})*([A-Za-z0-9+\/]{4}|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)$/.match(request["data"].to_s)
496
503
  session.clear
@@ -529,10 +536,10 @@ module ZuoraConnect
529
536
  else
530
537
  raise ZuoraConnect::Exceptions::AccessDenied.new("Authorization mismatch. Possible tampering with session.")
531
538
  end
532
- end
539
+ end
533
540
  else
534
541
  if session["appInstance"].present?
535
- @appinstance = ZuoraConnect::AppInstance.find_by(:id => session["appInstance"])
542
+ @appinstance = ZuoraConnect::AppInstance.find_by(:id => session["appInstance"])
536
543
  else
537
544
  raise ZuoraConnect::Exceptions::AccessDenied.new("No application state or session found.")
538
545
  end
@@ -1,3 +1,3 @@
1
1
  module ZuoraConnect
2
- VERSION = "2.0.57e"
2
+ VERSION = "2.0.57f"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuora_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.57e
4
+ version: 2.0.57f
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connect Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-22 00:00:00.000000000 Z
11
+ date: 2020-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment