zuora_connect 2.0.60d → 2.0.60i

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f68ca8630651e624313553f6799344c23c5e63b05ed6345a4fc1cc082ea62491
4
- data.tar.gz: d3da0f0dfaadda7cd0ee62abfd413ceaa64c5e3869f9b131e543d86d538a1efc
3
+ metadata.gz: 1fc4afe6a78f90d6c87cfa73da32a7b129a5e584672886cad408368694aad1aa
4
+ data.tar.gz: bdfcffca2d8ec4eb224408b25c6b14248bde1623265cca5be7a6e46ea2c63931
5
5
  SHA512:
6
- metadata.gz: '00539cc692ffa61e7b13c5dbbd7cc7b9a204f3fc8ebcec71247f56b46d8915a116f47c987d2cfa36102911bf2aeb6b9dff0034565c459b414a332521f6fd6bd9'
7
- data.tar.gz: 1ed5cab4fdcf39c80981cfab2c75d071e9c4371ae74a82ef25e90721020667e8e5129f51760c5a92a530f630bb8e57b255d0caa18b39123a1a0bd5fe93acacd3
6
+ metadata.gz: 45fbd12da62db03d87bfb2879efe01a531bb23560785145d296b68e5d06d97dbd31d6e382f2c7f53d48267a91bbaf64ca907c10d0d009c1e21bd1b13ca442acc
7
+ data.tar.gz: 433893af604861265c826253fb5d40236f1662ef78506bac6c87d82c315552a42297668f393c73b32e7bcdb8ce501a33ae0fc0b48dd9dff95fb43ad61c16fde2
@@ -338,6 +338,10 @@ module ZuoraConnect
338
338
  raise
339
339
  end
340
340
 
341
+ def aws_secrets
342
+ (Rails.application.secrets.aws || {}).transform_keys { |key| key.to_s }
343
+ end
344
+
341
345
  #### START KMS ENCRYPTION Methods ####
342
346
  def zuora_logins=(val)
343
347
  write_attribute(:zuora_logins, kms_encrypt(val.to_json))
@@ -350,7 +354,7 @@ module ZuoraConnect
350
354
 
351
355
  def kms_decrypt(value)
352
356
  kms_tries ||= 0
353
- kms_client = Aws::KMS::Client.new({region: Rails.application.secrets.aws['AWS_REGION'], credentials: self.aws_auth_client}.delete_if { |k, v| v.blank? })
357
+ kms_client = Aws::KMS::Client.new({region: aws_secrets['AWS_REGION'], credentials: self.aws_auth_client}.delete_if { |k, v| v.blank? })
354
358
  resp = kms_client.decrypt({ciphertext_blob: [value].pack("H*") })
355
359
  return resp.plaintext
356
360
  rescue *AWS_AUTH_ERRORS => ex
@@ -365,7 +369,7 @@ module ZuoraConnect
365
369
 
366
370
  def kms_encrypt(value)
367
371
  kms_tries ||= 0
368
- kms_client = Aws::KMS::Client.new({region: Rails.application.secrets.aws['AWS_REGION'], credentials: self.aws_auth_client}.delete_if {|k,v| v.blank? })
372
+ kms_client = Aws::KMS::Client.new({region: aws_secrets['AWS_REGION'], credentials: self.aws_auth_client}.delete_if {|k,v| v.blank? })
369
373
 
370
374
  resp = kms_client.encrypt({key_id: kms_key, plaintext: value})
371
375
  return resp.ciphertext_blob.unpack('H*').first
@@ -380,12 +384,12 @@ module ZuoraConnect
380
384
  end
381
385
 
382
386
  def kms_key
383
- return ENV['AWS_KMS_ARN'] || Rails.application.secrets.dig(:aws,'AWS_KMS_ARN')
387
+ return ENV['AWS_KMS_ARN'] || aws_secrets['AWS_KMS_ARN']
384
388
  end
385
389
 
386
390
  def aws_auth_client
387
391
  if Rails.env.to_s == 'development'
388
- return Aws::Credentials.new(Rails.application.secrets.aws['AWS_ACCESS_KEY_ID'], Rails.application.secrets.aws['AWS_SECRET_ACCESS_KEY'])
392
+ return Aws::Credentials.new(aws_secrets['AWS_ACCESS_KEY_ID'], aws_secrets['AWS_SECRET_ACCESS_KEY'])
389
393
  else
390
394
  return nil
391
395
  end
@@ -1,9 +1,15 @@
1
1
  module ActiveRecord
2
2
  module ConnectionAdapters
3
3
  class PostgreSQLAdapter < AbstractAdapter
4
+
5
+ SCHEMA_ADDITIONAL_TYPES = 'SchemaAdditionalTypes'.freeze
6
+
4
7
  private
5
- def load_additional_types(type_map, oids = nil)
8
+ def load_additional_types_latest(oids = nil)
6
9
  initializer = OID::TypeMapInitializer.new(type_map)
10
+
11
+ return if loaded_from_cache?(initializer)
12
+
7
13
  if supports_ranges?
8
14
  query = <<-SQL
9
15
  SELECT DISTINCT on (t.typname) t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype
@@ -24,9 +30,73 @@ module ActiveRecord
24
30
  end
25
31
 
26
32
  execute_and_clear(query, "SCHEMA", []) do |records|
33
+ cache_additional_types(records)
27
34
  initializer.run(records)
28
35
  end
29
36
  end
37
+
38
+ def load_additional_types_deprecated(type_map, oids = nil)
39
+ initializer = OID::TypeMapInitializer.new(type_map)
40
+
41
+ return if loaded_from_cache?(initializer)
42
+
43
+ if supports_ranges?
44
+ query = <<-SQL
45
+ SELECT DISTINCT on (t.typname) t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype
46
+ FROM pg_type as t
47
+ LEFT JOIN pg_range as r ON oid = rngtypid
48
+ SQL
49
+ else
50
+ query = <<-SQL
51
+ SELECT DISTINCT on (t.typname) t.oid, t.typname, t.typelem, t.typdelim, t.typinput, t.typtype, t.typbasetype
52
+ FROM pg_type as t
53
+ SQL
54
+ end
55
+
56
+ if oids
57
+ query += "WHERE t.oid::integer IN (%s)" % oids.join(", ")
58
+ else
59
+ query += initializer.query_conditions_for_initial_load(type_map)
60
+ end
61
+
62
+ execute_and_clear(query, "SCHEMA", []) do |records|
63
+ cache_additional_types(records)
64
+ initializer.run(records)
65
+ end
66
+ end
67
+
68
+ def loaded_from_cache?(initializer)
69
+ if defined?(Redis.current)
70
+ begin
71
+ if Redis.current.exists(SCHEMA_ADDITIONAL_TYPES)
72
+ initializer.run(JSON.parse(Redis.current.get(SCHEMA_ADDITIONAL_TYPES)))
73
+ return true
74
+ end
75
+ rescue => ex
76
+ Rails.logger.warn('Exception occurred while loading additional types', ex)
77
+ end
78
+ end
79
+
80
+ false
81
+ end
82
+
83
+ def cache_additional_types(records)
84
+ if defined?(Redis.current)
85
+ begin
86
+ Redis.current.setex(SCHEMA_ADDITIONAL_TYPES, 1.hour.to_i, records.to_json)
87
+ rescue => ex
88
+ Rails.logger.warn('Exception occurred while caching additional types', ex)
89
+ end
90
+ end
91
+ end
92
+
93
+
94
+ rails_version = Rails.version.split('.').map { |x| x.to_i }
95
+ if (rails_version <=> [5, 2, 0]) >= 1
96
+ alias :load_additional_types :load_additional_types_latest
97
+ else
98
+ alias :load_additional_types :load_additional_types_deprecated
99
+ end
30
100
  end
31
101
  end
32
102
  end
@@ -92,7 +92,7 @@ module Resque
92
92
  log_with_severity :error, "Error reserving job: #{ex.inspect}"
93
93
  log_with_severity :error, ex.backtrace.join("\n")
94
94
  end
95
- raise e
95
+ raise ex
96
96
  end
97
97
 
98
98
  def create_job(queue, payload)
@@ -124,10 +124,15 @@ module ZuoraConnect
124
124
  ElasticAPM.set_user(session["#{@appinstance.id}::user::email"]) if defined?(ElasticAPM) && ElasticAPM.running?
125
125
  PaperTrail.whodunnit = session["#{@appinstance.id}::user::email"] if defined?(PaperTrail)
126
126
  end
127
+
128
+ locale = (session["#{@appinstance.id}::user::locale"] || "").gsub("_", "-")
127
129
  begin
128
- locale = session["#{@appinstance.id}::user::locale"]
129
130
  I18n.locale = locale.present? ? locale : @appinstance.locale
130
131
  rescue I18n::InvalidLocale => ex
132
+ if locale.include?("-")
133
+ locale = locale.split("-").first
134
+ retry
135
+ end
131
136
  ZuoraConnect.logger.error(ex) if !ZuoraConnect::AppInstance::IGNORED_LOCALS.include?(ex.locale.to_s.downcase)
132
137
  end
133
138
  begin
@@ -411,6 +416,7 @@ module ZuoraConnect
411
416
  if defined?(@appinstance) && !@appinstance['zuora_logins'].nil?
412
417
  #Add user/update
413
418
  begin
419
+ ZuoraConnect::ZuoraUser.reset_table_name
414
420
  @zuora_user = ZuoraConnect::ZuoraUser.where(:zuora_user_id => zuora_user_id).first
415
421
  rescue ActiveRecord::StatementInvalid => ex
416
422
  if ex.message.include?("PG::UndefinedTable") && ex.message.include?("zuora_users")
@@ -434,7 +440,8 @@ module ZuoraConnect
434
440
  session["#{@appinstance.id}::user::localUserId"] = @zuora_user.id
435
441
  session["#{@appinstance.id}::user::email"] = session['ZuoraCurrentIdentity']["username"]
436
442
  session["#{@appinstance.id}::user::timezone"] = session['ZuoraCurrentIdentity']["timeZone"]
437
- session["#{@appinstance.id}::user::locale"] = session['ZuoraCurrentIdentity']["language"]
443
+ session["#{@appinstance.id}::user::language"] = session['ZuoraCurrentIdentity']["language"]
444
+ session["#{@appinstance.id}::user::locale"] = session['ZuoraCurrentIdentity']["locale"]
438
445
  session["appInstance"] = @appinstance.id
439
446
 
440
447
  #We have multiple, user must pick
@@ -565,8 +572,8 @@ module ZuoraConnect
565
572
 
566
573
  rescue ZuoraAPI::Exceptions::ZuoraAPIError, Exception => ex
567
574
  if ex.message.include?("Referenced User resource(s) not found") && ex.class == ZuoraAPI::Exceptions::ZuoraAPIError
568
- locals = {title: "Provisioning Error", message: "New tenats need to be provisioned by API Gateway('#{ex.message}'). Please contact support."}
569
- render "zuora_connect/static/error_handled", locals: locals, status: 400, layout: false
575
+ locals = {title: "Provisioning Error", message: "New tenants need to be provisioned by API Gateway('#{ex.message}'). Please contact support."}
576
+ render "zuora_connect/static/error_handled", locals: locals, status: 200, layout: false
570
577
  else
571
578
  session.clear
572
579
  if defined?(ex.response) && ex.response.present? && defined?(ex.response.body)
@@ -81,6 +81,21 @@ module ZuoraConnect
81
81
  request_headers =
82
82
  event.payload[:headers].env.
83
83
  reject { |key| key.to_s.include?('.') || REQUEST_HEADERS_TO_IGNORE.include?(key.to_s) }
84
+ begin
85
+ if request_headers["HTTP_AUTHORIZATION"].present?
86
+ if request_headers["HTTP_AUTHORIZATION"].include?("Basic")
87
+ user_password = request_headers["HTTP_AUTHORIZATION"].split("Basic").last.strip
88
+ user, password = Base64.decode64(user_password).split(":")
89
+ request_headers["HTTP_AUTHORIZATION"] = "Basic #{user}:ValueFiltered"
90
+ elsif
91
+ request_headers["HTTP_AUTHORIZATION"] = "ValueFiltered"
92
+ end
93
+ end
94
+ request_headers["HTTP_API_TOKEN"] = "ValueFiltered" if request_headers["HTTP_API_TOKEN"].present?
95
+ rescue
96
+ request_headers.delete("HTTP_API_TOKEN")
97
+ request_headers.delete("HTTP_AUTHORIZATION")
98
+ end
84
99
  items.merge!({ headers: request_headers.to_s })
85
100
  end
86
101
 
@@ -1,3 +1,3 @@
1
1
  module ZuoraConnect
2
- VERSION = "2.0.60d"
2
+ VERSION = "2.0.60i"
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.60d
4
+ version: 2.0.60i
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-08-19 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment
@@ -438,44 +438,44 @@ signing_key:
438
438
  specification_version: 4
439
439
  summary: Summary of Connect.
440
440
  test_files:
441
- - test/integration/navigation_test.rb
442
- - test/controllers/zuora_connect/api/v1/app_instance_controller_test.rb
443
441
  - test/fixtures/zuora_connect/app_instances.yml
444
- - test/lib/generators/zuora_connect/datatable_generator_test.rb
445
442
  - test/models/zuora_connect/app_instance_test.rb
443
+ - test/integration/navigation_test.rb
444
+ - test/controllers/zuora_connect/api/v1/app_instance_controller_test.rb
446
445
  - test/zuora_connect_test.rb
447
- - test/dummy/Rakefile
448
- - test/dummy/config.ru
449
- - test/dummy/public/422.html
450
- - test/dummy/public/404.html
446
+ - test/lib/generators/zuora_connect/datatable_generator_test.rb
451
447
  - test/dummy/public/500.html
448
+ - test/dummy/public/404.html
452
449
  - test/dummy/public/favicon.ico
453
- - test/dummy/app/controllers/application_controller.rb
454
- - test/dummy/app/helpers/application_helper.rb
455
- - test/dummy/app/views/layouts/application.html.erb
456
- - test/dummy/app/assets/javascripts/application.js
457
- - test/dummy/app/assets/stylesheets/application.css
458
- - test/dummy/README.rdoc
459
- - test/dummy/bin/rails
460
- - test/dummy/bin/rake
461
- - test/dummy/bin/bundle
462
- - test/dummy/bin/setup
450
+ - test/dummy/public/422.html
451
+ - test/dummy/Rakefile
452
+ - test/dummy/config.ru
463
453
  - test/dummy/config/secrets.yml
464
454
  - test/dummy/config/boot.rb
465
- - test/dummy/config/initializers/mime_types.rb
466
- - test/dummy/config/initializers/filter_parameter_logging.rb
455
+ - test/dummy/config/application.rb
467
456
  - test/dummy/config/initializers/session_store.rb
468
- - test/dummy/config/initializers/inflections.rb
469
- - test/dummy/config/initializers/cookies_serializer.rb
470
457
  - test/dummy/config/initializers/assets.rb
471
458
  - test/dummy/config/initializers/wrap_parameters.rb
459
+ - test/dummy/config/initializers/filter_parameter_logging.rb
472
460
  - test/dummy/config/initializers/backtrace_silencers.rb
473
- - test/dummy/config/database.yml
474
- - test/dummy/config/environment.rb
475
- - test/dummy/config/application.rb
461
+ - test/dummy/config/initializers/mime_types.rb
462
+ - test/dummy/config/initializers/inflections.rb
463
+ - test/dummy/config/initializers/cookies_serializer.rb
476
464
  - test/dummy/config/routes.rb
465
+ - test/dummy/config/database.yml
466
+ - test/dummy/config/environments/test.rb
477
467
  - test/dummy/config/environments/production.rb
478
468
  - test/dummy/config/environments/development.rb
479
- - test/dummy/config/environments/test.rb
469
+ - test/dummy/config/environment.rb
480
470
  - test/dummy/config/locales/en.yml
471
+ - test/dummy/README.rdoc
472
+ - test/dummy/bin/rake
473
+ - test/dummy/bin/setup
474
+ - test/dummy/bin/rails
475
+ - test/dummy/bin/bundle
476
+ - test/dummy/app/views/layouts/application.html.erb
477
+ - test/dummy/app/assets/javascripts/application.js
478
+ - test/dummy/app/assets/stylesheets/application.css
479
+ - test/dummy/app/helpers/application_helper.rb
480
+ - test/dummy/app/controllers/application_controller.rb
481
481
  - test/test_helper.rb