params_cleaner 0.4.2 → 0.4.3
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 +7 -0
- data/lib/params_cleaner/version.rb +1 -1
- data/lib/params_cleaner/whitelist.rb +21 -44
- metadata +11 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9fec59b6d039921eab9c77a26f36fa73227173fe
|
4
|
+
data.tar.gz: 7b8cb6e72c5d6b0fe9d9d63ea7c9b5d840e629fc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 86796d222afe4f2b8abe94f9f15351ed14c4175af060f8040c679e68bce7e59de6a30409bea8b48c3df2a49dbd6c337a379d15e6b0b700ad48ac0173f3da5341
|
7
|
+
data.tar.gz: a93da4692d51e0d0358a642872f153d4152f7c6009e70526a9eabaf71c75d6d82ec48e093fcbb2533ab3a656d98fe2e026945b0d506d683ac89ca67dfaf3595b
|
@@ -4,60 +4,37 @@ module ParamsCleaner
|
|
4
4
|
@whitelist = whitelist
|
5
5
|
end
|
6
6
|
|
7
|
-
def sanitize(
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
_clean_value(key, value, top_level)
|
15
|
-
end
|
7
|
+
def sanitize(item, parent = nil)
|
8
|
+
if item.kind_of?(Hash)
|
9
|
+
_sanitize_hash(item, parent)
|
10
|
+
elsif item.kind_of?(Array)
|
11
|
+
item.map { |item| sanitize(item, parent) }
|
12
|
+
else
|
13
|
+
item
|
16
14
|
end
|
17
|
-
|
18
|
-
cleaned_params_hash = Hash[cleaned_params]
|
19
|
-
HashWithIndifferentAccess.new(cleaned_params_hash)
|
20
15
|
end
|
21
16
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
17
|
+
def _sanitize_hash(hash, parent)
|
18
|
+
valid_keys = _valid_keys_for_parent(parent)
|
19
|
+
valid_pairs = hash.select { |key, value| valid_keys.include?(key.to_sym) }
|
20
|
+
sanitized_pairs = valid_pairs.map { |key, value| [key, sanitize(value, key.to_sym)] }
|
25
21
|
|
26
|
-
|
27
|
-
params_groups = []
|
28
|
-
@whitelist.each do |params_group|
|
29
|
-
unless params_group.is_a?(Hash)
|
30
|
-
params_groups << params_group
|
31
|
-
end
|
32
|
-
end
|
33
|
-
params_groups
|
22
|
+
HashWithIndifferentAccess.new(Hash[sanitized_pairs])
|
34
23
|
end
|
35
24
|
|
36
|
-
def
|
37
|
-
|
38
|
-
if sub_value.is_a?(Hash)
|
39
|
-
_clean_hash(key, sub_value).last
|
40
|
-
else
|
41
|
-
sub_value
|
42
|
-
end
|
43
|
-
end
|
44
|
-
[key, cleaned_values]
|
25
|
+
def _top_level_keys
|
26
|
+
@top_level_keys ||= @whitelist.reject { |item| item.kind_of?(Hash) }
|
45
27
|
end
|
46
28
|
|
47
|
-
def
|
48
|
-
|
49
|
-
|
50
|
-
|
29
|
+
def _valid_keys_for_parent(parent)
|
30
|
+
_whitelist_hash.keys.tap do |keys|
|
31
|
+
keys.concat(_top_level_keys) if parent.nil?
|
32
|
+
keys.concat(_whitelist_hash[parent]) if _whitelist_hash.has_key?(parent)
|
33
|
+
end
|
51
34
|
end
|
52
35
|
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
if _allowed_top_level.include?(key.to_sym)
|
57
|
-
[key, value]
|
58
|
-
else
|
59
|
-
[]
|
60
|
-
end
|
36
|
+
def _whitelist_hash
|
37
|
+
@whitelist_hash ||= @whitelist.last.is_a?(Hash) ? @whitelist.last : {}
|
61
38
|
end
|
62
39
|
end
|
63
40
|
end
|
metadata
CHANGED
@@ -1,32 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: params_cleaner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Drew Olson
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-02-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activesupport
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.0
|
19
|
+
version: '3.0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 3.0
|
26
|
+
version: '3.0'
|
30
27
|
description: Rails mass assignment protection in the controller
|
31
28
|
email:
|
32
29
|
- drew@drewolson.org
|
@@ -39,32 +36,25 @@ files:
|
|
39
36
|
- lib/params_cleaner.rb
|
40
37
|
homepage: https://github.com/drewolson/params_cleaner
|
41
38
|
licenses: []
|
39
|
+
metadata: {}
|
42
40
|
post_install_message:
|
43
41
|
rdoc_options: []
|
44
42
|
require_paths:
|
45
43
|
- lib
|
46
44
|
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
-
none: false
|
48
45
|
requirements:
|
49
|
-
- -
|
46
|
+
- - '>='
|
50
47
|
- !ruby/object:Gem::Version
|
51
48
|
version: '0'
|
52
|
-
segments:
|
53
|
-
- 0
|
54
|
-
hash: 2059744410745176612
|
55
49
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
50
|
requirements:
|
58
|
-
- -
|
51
|
+
- - '>='
|
59
52
|
- !ruby/object:Gem::Version
|
60
53
|
version: '0'
|
61
|
-
segments:
|
62
|
-
- 0
|
63
|
-
hash: 2059744410745176612
|
64
54
|
requirements: []
|
65
55
|
rubyforge_project:
|
66
|
-
rubygems_version:
|
56
|
+
rubygems_version: 2.0.0
|
67
57
|
signing_key:
|
68
|
-
specification_version:
|
58
|
+
specification_version: 4
|
69
59
|
summary: Rails mass assignment protection in the controller
|
70
60
|
test_files: []
|