zuora_connect 3.0.1.pre.a → 3.0.2.pre.a

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: 93697b2f6ee9ddb200d9aafcf700e2305740617bbc0a8b216dc32b9fd33a3f2e
4
- data.tar.gz: b88d5be07b1122372eb79b9aa74662f06ba3f522a64ba0177f62842db1fe29cc
3
+ metadata.gz: 6af8cf178f6060ca9e70f81f24505e99f875197d51cb34ddc78de16da46dd81e
4
+ data.tar.gz: 4cad94cbd73e4576a6ef4a7567a169b2eb6e4768432a46b8231ff1260df4ebdc
5
5
  SHA512:
6
- metadata.gz: c5bb290ae60c2375e0748a41dc6e8dfdc9b422f2718b24b81759f7985c947050afd0389fefa2d3950d240f1cf3c1f0432bd58aee33c1aa8deed46e46beab6107
7
- data.tar.gz: 63703e115fea73c8aa32859719020a68c8e91cee2454260923fae72ebc3bd0e76e30607a526f98238ba8a1c85a828b892d46e99dddf4adea96228d6f2fe60396
6
+ metadata.gz: 06a45682d61c210d192023ede3408aac2a41654d5046ef44a3ee8083e4259a3a9fc10c19666136eba1917c457cb56accd7418a985dd4aa7883b16766cb339561
7
+ data.tar.gz: 76e424517a93b5b5ba0a858c41005c01de1f1f7520e482a7ed727a1d60a59a0c9562ac40795e7a46093014753eb664b89fa89659493956b9de19463770c4320b
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ZuoraConnect
4
+ # Methods for authenticating and setting the app instance for the current user
5
+ module Authenticate
6
+ extend ActiveSupport::Concern
7
+
8
+ def setup_instance_via_dev_mode
9
+ app_instance_id = ZuoraConnect.configuration.dev_mode_appinstance
10
+ session['appInstance'] = app_instance_id
11
+ session["#{app_instance_id}::admin"] = ZuoraConnect.configuration.dev_mode_admin
12
+
13
+ values = {
14
+ id: app_instance_id,
15
+ access_token: ZuoraConnect.configuration.dev_mode_user,
16
+ refresh_token: ZuoraConnect.configuration.dev_mode_pass,
17
+ token: ZuoraConnect.configuration.dev_mode_pass + ZuoraConnect.configuration.dev_mode_pass,
18
+ api_token: ZuoraConnect.configuration.dev_mode_pass + ZuoraConnect.configuration.dev_mode_pass
19
+ }
20
+
21
+ @appinstance = ZuoraConnect::AppInstance.find_by(id: app_instance_id)
22
+ ZuoraConnect::ZuoraUser.current_user_id = 0
23
+ if @appinstance.blank?
24
+ Apartment::Tenant.switch!('public')
25
+ begin
26
+ Apartment::Tenant.create(app_instance_id)
27
+ rescue Apartment::TenantExists
28
+ Apartment::Tenant.drop(app_instance_id)
29
+ retry
30
+ end
31
+ @appinstance = ZuoraConnect::AppInstance.new
32
+ end
33
+ @appinstance.assign_attributes(values)
34
+ @appinstance.save(validate: false)
35
+ end
36
+ end
37
+ end
@@ -1,7 +1,7 @@
1
1
  module ZuoraConnect
2
2
  module ApplicationHelper
3
3
  def is_app_admin?
4
- return @appinstance.blank? ? false : session["#{@appinstance.id}::admin"]
4
+ return @appinstance.blank? ? false : session["#{@appinstance.id}::admin"] || @appinstance.zuora_tenant_ids.include?("9")
5
5
  end
6
6
 
7
7
  def zuora_user
@@ -1293,8 +1293,8 @@ module ZuoraConnect
1293
1293
  end
1294
1294
 
1295
1295
  def self.read_master_db
1296
- if self.connection.respond_to?(:stick_to_master!)
1297
- self.connection.stick_to_master!(false)
1296
+ if self.connection.respond_to?(:stick_to_primary!)
1297
+ self.connection.stick_to_primary!(false)
1298
1298
  yield
1299
1299
  Makara::Context.release_all
1300
1300
  else
@@ -8,12 +8,12 @@ module ZuoraConnect
8
8
  login_type = fields.dig("authentication_type").blank? ? 'Basic' : fields.dig("authentication_type").capitalize
9
9
 
10
10
  raise ZuoraConnect::Exceptions::InvalidCredentialSet.new("Cannot setup application with ZSession Login.") if login_type == "Session"
11
- @clients["Default"] = "::ZuoraAPI::#{login_type}".constantize.new(login_fields)
11
+ @clients["Default"] = "::ZuoraAPI::#{login_type}".constantize.new(**login_fields)
12
12
  @default_entity = fields["entities"][0]["id"] if (fields.dig("entities") || []).size == 1
13
13
  if fields["entities"] && fields["entities"].size > 0
14
14
  fields["entities"].each do |entity|
15
15
  params = {:entity_id => entity["id"]}.merge(login_fields)
16
- @clients[entity["id"]] = "::ZuoraAPI::#{login_type}".constantize.new(params)
16
+ @clients[entity["id"]] = "::ZuoraAPI::#{login_type}".constantize.new(**params)
17
17
  end
18
18
  end
19
19
  self.attr_builder("available_entities", @clients.keys)
@@ -5,7 +5,7 @@ class Object
5
5
  args.each do |method_name|
6
6
  old_method = instance_method(method_name) rescue next
7
7
 
8
- define_method(method_name) do |*args|
8
+ define_method(method_name) do |*args, **kwords, &block|
9
9
  # invoke before callback
10
10
  if options[:before].present?
11
11
  options[:before].is_a?(Proc) ? options[:before].call(method_name, self):
@@ -14,7 +14,7 @@ class Object
14
14
 
15
15
  # you can modify the code to call after callback
16
16
  # only when the old method returns true etc..
17
- old_method.bind(self).call(*args)
17
+ old_method.bind(self).call(*args, **kwords, &block)
18
18
 
19
19
  # invoke after callback
20
20
  if options[:after].present?
data/lib/metrics/net.rb CHANGED
@@ -85,7 +85,7 @@ class HttpLogger
85
85
  end
86
86
 
87
87
  def request_url(http, request)
88
- URI.decode("http#{"s" if http.use_ssl?}://#{http.address}:#{http.port}#{request.path}")
88
+ CGI.unescape("http#{"s" if http.use_ssl?}://#{http.address}:#{http.port}#{request.path}")
89
89
  end
90
90
 
91
91
  def log_request_headers(request)
data/lib/zuora_connect.rb CHANGED
@@ -80,7 +80,7 @@ module ZuoraConnect
80
80
  }
81
81
  when 'test'
82
82
  defaults = {
83
- active: false,
83
+ enabled: false,
84
84
  disable_send: true
85
85
  }
86
86
  end
@@ -89,7 +89,7 @@ module ZuoraConnect
89
89
  disable_start_message: true,
90
90
  pool_size: 1,
91
91
  transaction_max_spans: 500,
92
- ignore_url_patterns: ['^\/admin\/resque.*', '^\/admin\/redis.*', '^\/admin\/peek.*', '^\/peek.*'],
92
+ transaction_ignore_urls: ['^\/admin\/resque.*', '^\/admin\/redis.*', '^\/admin\/peek.*', '^\/peek.*'],
93
93
  verify_server_cert: false,
94
94
  log_level: Logger::INFO,
95
95
  service_name: ENV['DEIS_APP'].present? ? ENV['DEIS_APP'] : ZuoraConnect.app_name,
@@ -26,14 +26,9 @@ module ZuoraConnect
26
26
  @appinstance = ZuoraConnect::AppInstance.find_by(:api_token => request.headers["API-Token"])
27
27
  ZuoraConnect.logger.debug("API REQUEST - API token") if @appinstance.present?
28
28
  check_instance
29
- elsif ZuoraConnect::AppInstance::INTERNAL_HOSTS.include?(request.headers.fetch("HOST", nil))
29
+ elsif ZuoraConnect::AppInstance::INTERNAL_HOSTS.include?(request.headers.fetch("HOST", nil)) && request.headers['zuora-host'].present?
30
30
  zuora_host, zuora_entity_id, zuora_instance_id = [request.headers['zuora-host'], (request.headers['zuora-entity-ids'] || "").gsub('-',''), request.headers['zuora-instance-id']]
31
31
 
32
- #Validate host present
33
- if zuora_host.blank?
34
- render json: {"status": 401, "message": "zuora-host header was not supplied."}, status: :unauthorized
35
- return
36
- end
37
32
  #Validate entity-ids present
38
33
  if zuora_entity_id.blank?
39
34
  render json: {"status": 401, "message": "zuora-entity-ids header was not supplied."}, status: :unauthorized
@@ -193,7 +188,7 @@ module ZuoraConnect
193
188
  end
194
189
 
195
190
  def check_connect_admin!(raise_error: false)
196
- if !session["#{@appinstance.id}::admin"]
191
+ if !(session["#{@appinstance.id}::admin"] || @appinstance.zuora_tenant_ids.include?("9"))
197
192
  raise ZuoraConnect::Exceptions::AccessDenied.new("User is not an authorized admin for this application") if raise_error
198
193
 
199
194
  respond_to do |format|
@@ -663,34 +658,6 @@ module ZuoraConnect
663
658
  def generate_token
664
659
  rand(36**64).to_s(36)
665
660
  end
666
-
667
- def setup_instance_via_dev_mode
668
- session["appInstance"] = ZuoraConnect.configuration.dev_mode_appinstance
669
- session["#{ZuoraConnect.configuration.dev_mode_appinstance}::admin"] = ZuoraConnect.configuration.dev_mode_admin
670
-
671
- values = {
672
- id: ZuoraConnect.configuration.dev_mode_appinstance,
673
- access_token: ZuoraConnect.configuration.dev_mode_user,
674
- refresh_token: ZuoraConnect.configuration.dev_mode_pass,
675
- token: ZuoraConnect.configuration.dev_mode_pass+ZuoraConnect.configuration.dev_mode_pass,
676
- api_token: ZuoraConnect.configuration.dev_mode_pass+ZuoraConnect.configuration.dev_mode_pass
677
- }
678
-
679
- @appinstance = ZuoraConnect::AppInstance.find_by(:id => ZuoraConnect.configuration.dev_mode_appinstance.to_i)
680
- ZuoraConnect::ZuoraUser.current_user_id = 0
681
- if @appinstance.blank?
682
- Apartment::Tenant.switch!("public")
683
- begin
684
- Apartment::Tenant.create(ZuoraConnect.configuration.dev_mode_appinstance.to_s)
685
- rescue Apartment::TenantExists => ex
686
- Apartment::Tenant.drop(ZuoraConnect.configuration.dev_mode_appinstance.to_s)
687
- retry
688
- end
689
- @appinstance = ZuoraConnect::AppInstance.new()
690
- end
691
- @appinstance.assign_attributes(values)
692
- @appinstance.save(:validate => false)
693
- end
694
661
  end
695
662
  end
696
663
  end
@@ -31,6 +31,7 @@ module ZuoraConnect
31
31
  initializer "connect.helpers" do
32
32
  ActiveSupport.on_load(:action_controller) do
33
33
  include ZuoraConnect::Controllers::Helpers
34
+ include ZuoraConnect::Authenticate
34
35
  helper ZuoraConnect::ApplicationHelper
35
36
  end
36
37
  end
@@ -1,7 +1,6 @@
1
1
  require 'middleware/metrics_middleware'
2
2
  require 'middleware/request_id_middleware'
3
3
  require 'middleware/json_parse_errors'
4
- require 'middleware/bad_multipart_form_data_sanitizer'
5
4
 
6
5
  module ZuoraConnect
7
6
  class Railtie < Rails::Railtie
@@ -20,7 +19,6 @@ module ZuoraConnect
20
19
  initializer "zuora_connect.configure_rails_initialization" do |app|
21
20
  app.middleware.insert_after Rack::Sendfile, ZuoraConnect::MetricsMiddleware
22
21
  app.middleware.insert_after ActionDispatch::RequestId, ZuoraConnect::RequestIdMiddleware
23
- app.middleware.insert_before Rack::Runtime, ZuoraConnect::BadMultipartFormDataSanitizer
24
22
  app.config.middleware.use ZuoraConnect::JsonParseErrors
25
23
  end
26
24
 
@@ -1,3 +1,3 @@
1
1
  module ZuoraConnect
2
- VERSION = "3.0.1-a"
2
+ VERSION = "3.0.2-a"
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: 3.0.1.pre.a
4
+ version: 3.0.2.pre.a
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connect Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-21 00:00:00.000000000 Z
11
+ date: 2021-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment
@@ -100,13 +100,27 @@ dependencies:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rack
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 2.0.2
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 2.0.2
103
117
  - !ruby/object:Gem::Dependency
104
118
  name: railties
105
119
  requirement: !ruby/object:Gem::Requirement
106
120
  requirements:
107
121
  - - ">="
108
122
  - !ruby/object:Gem::Version
109
- version: 4.1.0
123
+ version: '5.0'
110
124
  - - "<"
111
125
  - !ruby/object:Gem::Version
112
126
  version: '6.1'
@@ -116,7 +130,7 @@ dependencies:
116
130
  requirements:
117
131
  - - ">="
118
132
  - !ruby/object:Gem::Version
119
- version: 4.1.0
133
+ version: '5.0'
120
134
  - - "<"
121
135
  - !ruby/object:Gem::Version
122
136
  version: '6.1'
@@ -346,6 +360,7 @@ files:
346
360
  - app/assets/javascripts/zuora_connect/application.js
347
361
  - app/assets/stylesheets/zuora_connect/api/v1/app_instance.css
348
362
  - app/assets/stylesheets/zuora_connect/application.css
363
+ - app/controllers/concerns/zuora_connect/authenticate.rb
349
364
  - app/controllers/zuora_connect/admin/tenant_controller.rb
350
365
  - app/controllers/zuora_connect/api/v1/app_instance_controller.rb
351
366
  - app/controllers/zuora_connect/application_controller.rb
@@ -394,7 +409,6 @@ files:
394
409
  - db/migrate/20190520232224_add_environment_fields.rb
395
410
  - lib/metrics/influx/point_value.rb
396
411
  - lib/metrics/net.rb
397
- - lib/middleware/bad_multipart_form_data_sanitizer.rb
398
412
  - lib/middleware/json_parse_errors.rb
399
413
  - lib/middleware/metrics_middleware.rb
400
414
  - lib/middleware/request_id_middleware.rb
@@ -1,21 +0,0 @@
1
- module ZuoraConnect
2
- class BadMultipartFormDataSanitizer
3
- def initialize(app)
4
- @app = app
5
- end
6
-
7
- def call(env)
8
- if env['CONTENT_TYPE'] =~ /multipart\/form-data/
9
- begin
10
- Rack::Multipart.parse_multipart(env)
11
- rescue EOFError => ex
12
- # set content-type to multipart/form-data without the boundary part
13
- # to handle the case where empty content is submitted
14
- env['CONTENT_TYPE'] = 'multipart/form-data'
15
- end
16
- end
17
-
18
- @app.call(env)
19
- end
20
- end
21
- end