moderate_parameters 0.2.6 → 0.3.0

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: fa022d8afad78e0d873a348c3c6b904126bb4667a1a121ff3f649f2ac1279f25
4
- data.tar.gz: 4d2f9811d68673a8edfbb96eda872950c34f199d0f6fb0c856ab5dbaecc2f357
3
+ metadata.gz: 33118bf4c165859d1135b0628d3c1177560003900ea7637a4d97bb149f00fbef
4
+ data.tar.gz: cef73308c79623677793428b8704e667eca870e2f4463ffc41efb878d030429d
5
5
  SHA512:
6
- metadata.gz: 27f5bd24d222651ce688faf335d6c387f216fd6bf8a6a225654cf4085e5f03deebe9249cb61f68748854b61434b899031b73a5f203e427bcd28d8338b3d1f995
7
- data.tar.gz: e0a9b7507d86dfba2c61721c8fca95544b0dd571bf2163c28d251ebab73cbc7af890c8bea04717f0c54289eaffc9939fb473e6d29a67b39b3c108f3f058e62ee
6
+ metadata.gz: 12d73a15669d2af4b6b579b1fe0905efb191bc3474bb174fb011b2065d1efbce9c91efcf9f379984139a506c85cdf1b34ca8966df6dbf996d57c8e291487ff31
7
+ data.tar.gz: 68c48b72df1c5a99a7287330c4cfa2275c6cfdc8ccfc5c6af28db5b24e5b4bff232709e24c949a58d645fbb0ef1ea9fe0e751f7ad6e01c8c9348ab578eb3ff58
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- moderate_parameters (0.2.2)
4
+ moderate_parameters (0.3.0)
5
5
  actionpack (>= 4.2, < 6.1)
6
6
  activemodel (>= 4.2, < 6.1)
7
7
  activesupport (>= 4.2, < 6.1)
@@ -10,51 +10,51 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actionpack (6.0.0)
14
- actionview (= 6.0.0)
15
- activesupport (= 6.0.0)
16
- rack (~> 2.0)
13
+ actionpack (6.0.2.1)
14
+ actionview (= 6.0.2.1)
15
+ activesupport (= 6.0.2.1)
16
+ rack (~> 2.0, >= 2.0.8)
17
17
  rack-test (>= 0.6.3)
18
18
  rails-dom-testing (~> 2.0)
19
19
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
20
- actionview (6.0.0)
21
- activesupport (= 6.0.0)
20
+ actionview (6.0.2.1)
21
+ activesupport (= 6.0.2.1)
22
22
  builder (~> 3.1)
23
23
  erubi (~> 1.4)
24
24
  rails-dom-testing (~> 2.0)
25
25
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
26
- activemodel (6.0.0)
27
- activesupport (= 6.0.0)
28
- activesupport (6.0.0)
26
+ activemodel (6.0.2.1)
27
+ activesupport (= 6.0.2.1)
28
+ activesupport (6.0.2.1)
29
29
  concurrent-ruby (~> 1.0, >= 1.0.2)
30
30
  i18n (>= 0.7, < 2)
31
31
  minitest (~> 5.1)
32
32
  tzinfo (~> 1.1)
33
- zeitwerk (~> 2.1, >= 2.1.8)
33
+ zeitwerk (~> 2.2)
34
34
  appraisal (2.2.0)
35
35
  bundler
36
36
  rake
37
37
  thor (>= 0.14.0)
38
- builder (3.2.3)
38
+ builder (3.2.4)
39
39
  coderay (1.1.2)
40
40
  concurrent-ruby (1.1.5)
41
- crass (1.0.5)
41
+ crass (1.0.6)
42
42
  diff-lcs (1.3)
43
43
  erubi (1.9.0)
44
- i18n (1.7.0)
44
+ i18n (1.8.2)
45
45
  concurrent-ruby (~> 1.0)
46
- loofah (2.3.1)
46
+ loofah (2.4.0)
47
47
  crass (~> 1.0.2)
48
48
  nokogiri (>= 1.5.9)
49
49
  method_source (0.9.2)
50
50
  mini_portile2 (2.4.0)
51
- minitest (5.12.2)
52
- nokogiri (1.10.4)
51
+ minitest (5.14.0)
52
+ nokogiri (1.10.7)
53
53
  mini_portile2 (~> 2.4.0)
54
54
  pry (0.12.2)
55
55
  coderay (~> 1.1.0)
56
56
  method_source (~> 0.9.0)
57
- rack (2.0.7)
57
+ rack (2.1.1)
58
58
  rack-test (1.1.0)
59
59
  rack (>= 1.0, < 3)
60
60
  rails-dom-testing (2.0.3)
@@ -62,40 +62,40 @@ GEM
62
62
  nokogiri (>= 1.6)
63
63
  rails-html-sanitizer (1.3.0)
64
64
  loofah (~> 2.3)
65
- railties (6.0.0)
66
- actionpack (= 6.0.0)
67
- activesupport (= 6.0.0)
65
+ railties (6.0.2.1)
66
+ actionpack (= 6.0.2.1)
67
+ activesupport (= 6.0.2.1)
68
68
  method_source
69
69
  rake (>= 0.8.7)
70
70
  thor (>= 0.20.3, < 2.0)
71
71
  rake (10.5.0)
72
- rspec (3.8.0)
73
- rspec-core (~> 3.8.0)
74
- rspec-expectations (~> 3.8.0)
75
- rspec-mocks (~> 3.8.0)
76
- rspec-core (3.8.2)
77
- rspec-support (~> 3.8.0)
78
- rspec-expectations (3.8.4)
72
+ rspec (3.9.0)
73
+ rspec-core (~> 3.9.0)
74
+ rspec-expectations (~> 3.9.0)
75
+ rspec-mocks (~> 3.9.0)
76
+ rspec-core (3.9.1)
77
+ rspec-support (~> 3.9.1)
78
+ rspec-expectations (3.9.0)
79
79
  diff-lcs (>= 1.2.0, < 2.0)
80
- rspec-support (~> 3.8.0)
81
- rspec-mocks (3.8.1)
80
+ rspec-support (~> 3.9.0)
81
+ rspec-mocks (3.9.1)
82
82
  diff-lcs (>= 1.2.0, < 2.0)
83
- rspec-support (~> 3.8.0)
84
- rspec-support (3.8.2)
83
+ rspec-support (~> 3.9.0)
84
+ rspec-support (3.9.2)
85
85
  rspec_junit_formatter (0.4.1)
86
86
  rspec-core (>= 2, < 4, != 2.12.0)
87
- thor (0.20.3)
87
+ thor (1.0.1)
88
88
  thread_safe (0.3.6)
89
- tzinfo (1.2.5)
89
+ tzinfo (1.2.6)
90
90
  thread_safe (~> 0.1)
91
- zeitwerk (2.2.0)
91
+ zeitwerk (2.2.2)
92
92
 
93
93
  PLATFORMS
94
94
  ruby
95
95
 
96
96
  DEPENDENCIES
97
97
  appraisal (= 2.2.0)
98
- bundler (~> 2.0.1)
98
+ bundler (~> 2.0)
99
99
  moderate_parameters!
100
100
  pry (~> 0.12.2)
101
101
  rake (~> 10.0)
@@ -103,4 +103,4 @@ DEPENDENCIES
103
103
  rspec_junit_formatter (= 0.4.1)
104
104
 
105
105
  BUNDLED WITH
106
- 2.0.1
106
+ 2.1.4
@@ -4,4 +4,6 @@ ModerateParameters.configure do |config|
4
4
  # Enables/Disables logging occurrences of
5
5
  # reading/writing from ActionController::Parameters.
6
6
  config.breadcrumbs_enabled = false
7
+ # Sets where to log the ModerateParameters output
8
+ config.logger = ActiveSupport::Logger.new('log/moderate_parameters.log')
7
9
  end
@@ -8,7 +8,11 @@ module ModerateParameters
8
8
  filters.each do |filter|
9
9
  case filter
10
10
  when Symbol, String
11
- permitted_scalar_filter(params, filter)
11
+ if non_scalar?(self[filter])
12
+ non_scalar_value_filter(params, filter, controller_name, action)
13
+ else
14
+ permitted_scalar_filter(params, filter)
15
+ end
12
16
  when Hash
13
17
  cust_hash_filter(params, filter, controller_name, action)
14
18
  end
@@ -20,13 +24,26 @@ module ModerateParameters
20
24
 
21
25
  private
22
26
 
27
+ def write_to_log(options)
28
+ ActiveSupport::Notifications.instrument('moderate_parameters') do |payload|
29
+ payload.merge!(options)
30
+ end
31
+ end
32
+
23
33
  def incoming_params_logging(params, controller_name, action)
24
34
  unpermitted_keys(params).each do |k|
25
- ActiveSupport::Notifications.instrument('moderate_parameters') do |payload|
26
- payload[:controller] = controller_name
27
- payload[:action] = action
28
- payload[:message] = "#{@context || 'Top Level'} is missing: #{k}"
29
- end
35
+ write_to_log(message: "#{@context || 'Top Level'} is missing: #{k}",
36
+ action: action,
37
+ controller: controller_name)
38
+ end
39
+ end
40
+
41
+ def non_scalar_value_filter(params, key, controller_name, action)
42
+ if has_key?(key) && !permitted_scalar?(self[key])
43
+ params[key] = self[key].class.new
44
+ write_to_log(message: "#{@context || 'Top Level'} is missing: #{params[key]} value for #{key}",
45
+ action: action,
46
+ controller: controller_name)
30
47
  end
31
48
  end
32
49
 
@@ -34,6 +51,38 @@ module ModerateParameters
34
51
  value.is_a?(Array) || value.is_a?(Parameters)
35
52
  end
36
53
 
54
+ def permit_any_in_array(array)
55
+ [].tap do |sanitized|
56
+ array.each do |element|
57
+ case element
58
+ when ->(e) { permitted_scalar?(e) }
59
+ sanitized << element
60
+ when Parameters
61
+ sanitized << permit_any_in_parameters(element)
62
+ else
63
+ # Log it
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ def permit_any_in_parameters(params)
70
+ self.class.new.tap do |sanitized|
71
+ params.each do |key, value|
72
+ case value
73
+ when ->(v) { permitted_scalar?(v) }
74
+ sanitized[key] = value
75
+ when Array
76
+ sanitized[key] = permit_any_in_array(value)
77
+ when Parameters
78
+ sanitized[key] = permit_any_in_parameters(value)
79
+ else
80
+ # Log It
81
+ end
82
+ end
83
+ end
84
+ end
85
+
37
86
  EMPTY_HASH ||= {}
38
87
  EMPTY_ARRAY ||= []
39
88
  def cust_hash_filter(params, filter, controller_name, action)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ModerateParameters
4
- VERSION = '0.2.6'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -41,7 +41,7 @@ Gem::Specification.new do |spec|
41
41
  spec.add_dependency 'activesupport', '>= 4.2', '< 6.1'
42
42
  spec.add_dependency 'railties', '>= 4.2', '< 6.1'
43
43
 
44
- spec.add_development_dependency 'bundler', '~> 2.0.1'
44
+ spec.add_development_dependency 'bundler', '~> 2.0'
45
45
  spec.add_development_dependency 'pry', '~> 0.12.2'
46
46
  spec.add_development_dependency 'rake', '~> 10.0'
47
47
  spec.add_development_dependency 'rspec', '~> 3.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moderate_parameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Boe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-19 00:00:00.000000000 Z
11
+ date: 2020-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -96,14 +96,14 @@ dependencies:
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: 2.0.1
99
+ version: '2.0'
100
100
  type: :development
101
101
  prerelease: false
102
102
  version_requirements: !ruby/object:Gem::Requirement
103
103
  requirements:
104
104
  - - "~>"
105
105
  - !ruby/object:Gem::Version
106
- version: 2.0.1
106
+ version: '2.0'
107
107
  - !ruby/object:Gem::Dependency
108
108
  name: pry
109
109
  requirement: !ruby/object:Gem::Requirement