param_protected 2.0.0 → 3.0.0
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.
- data/Gemfile +10 -0
- data/Gemfile.lock +93 -0
- data/VERSION +1 -1
- data/lib/param_protected.rb +2 -1
- data/lib/param_protected/controller_modifications.rb +26 -40
- data/lib/param_protected/protector.rb +17 -26
- data/param_protected.gemspec +48 -69
- metadata +41 -62
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
actionmailer (3.1.1)
|
5
|
+
actionpack (= 3.1.1)
|
6
|
+
mail (~> 2.3.0)
|
7
|
+
actionpack (3.1.1)
|
8
|
+
activemodel (= 3.1.1)
|
9
|
+
activesupport (= 3.1.1)
|
10
|
+
builder (~> 3.0.0)
|
11
|
+
erubis (~> 2.7.0)
|
12
|
+
i18n (~> 0.6)
|
13
|
+
rack (~> 1.3.2)
|
14
|
+
rack-cache (~> 1.1)
|
15
|
+
rack-mount (~> 0.8.2)
|
16
|
+
rack-test (~> 0.6.1)
|
17
|
+
sprockets (~> 2.0.2)
|
18
|
+
activemodel (3.1.1)
|
19
|
+
activesupport (= 3.1.1)
|
20
|
+
builder (~> 3.0.0)
|
21
|
+
i18n (~> 0.6)
|
22
|
+
activerecord (3.1.1)
|
23
|
+
activemodel (= 3.1.1)
|
24
|
+
activesupport (= 3.1.1)
|
25
|
+
arel (~> 2.2.1)
|
26
|
+
tzinfo (~> 0.3.29)
|
27
|
+
activeresource (3.1.1)
|
28
|
+
activemodel (= 3.1.1)
|
29
|
+
activesupport (= 3.1.1)
|
30
|
+
activesupport (3.1.1)
|
31
|
+
multi_json (~> 1.0)
|
32
|
+
arel (2.2.1)
|
33
|
+
builder (3.0.0)
|
34
|
+
erubis (2.7.0)
|
35
|
+
git (1.2.5)
|
36
|
+
hike (1.2.1)
|
37
|
+
i18n (0.6.0)
|
38
|
+
jeweler (1.6.4)
|
39
|
+
bundler (~> 1.0)
|
40
|
+
git (>= 1.2.5)
|
41
|
+
rake
|
42
|
+
json (1.6.1)
|
43
|
+
mail (2.3.0)
|
44
|
+
i18n (>= 0.4.0)
|
45
|
+
mime-types (~> 1.16)
|
46
|
+
treetop (~> 1.4.8)
|
47
|
+
mime-types (1.17.2)
|
48
|
+
multi_json (1.0.3)
|
49
|
+
polyglot (0.3.3)
|
50
|
+
rack (1.3.5)
|
51
|
+
rack-cache (1.1)
|
52
|
+
rack (>= 0.4)
|
53
|
+
rack-mount (0.8.3)
|
54
|
+
rack (>= 1.0.0)
|
55
|
+
rack-ssl (1.3.2)
|
56
|
+
rack
|
57
|
+
rack-test (0.6.1)
|
58
|
+
rack (>= 1.0)
|
59
|
+
rails (3.1.1)
|
60
|
+
actionmailer (= 3.1.1)
|
61
|
+
actionpack (= 3.1.1)
|
62
|
+
activerecord (= 3.1.1)
|
63
|
+
activeresource (= 3.1.1)
|
64
|
+
activesupport (= 3.1.1)
|
65
|
+
bundler (~> 1.0)
|
66
|
+
railties (= 3.1.1)
|
67
|
+
railties (3.1.1)
|
68
|
+
actionpack (= 3.1.1)
|
69
|
+
activesupport (= 3.1.1)
|
70
|
+
rack-ssl (~> 1.3.2)
|
71
|
+
rake (>= 0.8.7)
|
72
|
+
rdoc (~> 3.4)
|
73
|
+
thor (~> 0.14.6)
|
74
|
+
rake (0.9.2.2)
|
75
|
+
rdoc (3.11)
|
76
|
+
json (~> 1.4)
|
77
|
+
sprockets (2.0.3)
|
78
|
+
hike (~> 1.2)
|
79
|
+
rack (~> 1.0)
|
80
|
+
tilt (~> 1.1, != 1.3.0)
|
81
|
+
thor (0.14.6)
|
82
|
+
tilt (1.3.3)
|
83
|
+
treetop (1.4.10)
|
84
|
+
polyglot
|
85
|
+
polyglot (>= 0.3.1)
|
86
|
+
tzinfo (0.3.30)
|
87
|
+
|
88
|
+
PLATFORMS
|
89
|
+
ruby
|
90
|
+
|
91
|
+
DEPENDENCIES
|
92
|
+
jeweler
|
93
|
+
rails (~> 3.1.0)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.0
|
data/lib/param_protected.rb
CHANGED
@@ -2,4 +2,5 @@ require "param_protected/constants"
|
|
2
2
|
require "param_protected/protector"
|
3
3
|
require "param_protected/controller_modifications"
|
4
4
|
|
5
|
-
ActionController::Base.
|
5
|
+
ActionController::Base.send(:include, ParamProtected::ControllerModifications)
|
6
|
+
|
@@ -1,57 +1,43 @@
|
|
1
1
|
module ParamProtected
|
2
2
|
module ControllerModifications
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
singleton_class.alias_method_chain :inherited, :protector
|
8
|
-
include InstanceMethods
|
9
|
-
alias_method_chain :params, :protection
|
10
|
-
end
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
alias_method_chain :params, :protection
|
11
7
|
end
|
12
|
-
|
8
|
+
|
13
9
|
module ClassMethods
|
14
|
-
|
10
|
+
def _protector
|
11
|
+
@_protector ||= Protector.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def _protector=(value)
|
15
|
+
@_protector = value
|
16
|
+
end
|
17
|
+
|
15
18
|
def param_protected(params, actions = nil)
|
16
|
-
|
19
|
+
_protector.declare_protection(params, actions, BLACKLIST)
|
17
20
|
end
|
18
|
-
|
21
|
+
|
19
22
|
def param_accessible(params, actions = nil)
|
20
|
-
|
23
|
+
_protector.declare_protection(params, actions, WHITELIST)
|
21
24
|
end
|
22
25
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
26
|
-
if defined? @pp_protector
|
27
|
-
controller.instance_variable_set :@pp_protector, @pp_protector.dup
|
28
|
-
controller.class_eval { attr_reader :pp_protector }
|
29
|
-
end
|
30
|
-
|
26
|
+
def inherited(m)
|
27
|
+
m._protector = _protector.dup
|
28
|
+
super
|
31
29
|
end
|
32
|
-
|
33
30
|
end
|
34
|
-
|
31
|
+
|
35
32
|
module InstanceMethods
|
36
|
-
|
33
|
+
def _protector
|
34
|
+
self.class._protector
|
35
|
+
end
|
36
|
+
|
37
37
|
def params_with_protection
|
38
|
-
|
39
|
-
|
40
|
-
# thus we can't filter and cache it right off the bat. We have to wait for #action_name to be present
|
41
|
-
# to know that we're really in an action and @_params actually contains something. Then we can filter
|
42
|
-
# and cache it.
|
43
|
-
|
44
|
-
if action_name.blank?
|
45
|
-
params_without_protection
|
46
|
-
elsif @params_protected
|
47
|
-
@params_protected
|
48
|
-
else
|
49
|
-
@params_protected = Protector.instance(self.class).protect(self, params_without_protection, action_name)
|
50
|
-
end
|
51
|
-
|
38
|
+
return params_without_protection if action_name.blank?
|
39
|
+
@params_with_protection ||= _protector.protect(self, params_without_protection, action_name)
|
52
40
|
end
|
53
|
-
|
54
41
|
end
|
55
|
-
|
56
42
|
end
|
57
43
|
end
|
@@ -1,14 +1,5 @@
|
|
1
1
|
module ParamProtected
|
2
2
|
class Protector
|
3
|
-
|
4
|
-
def self.instance(controller)
|
5
|
-
unless controller.respond_to?(:pp_protector)
|
6
|
-
controller.class_eval{ @pp_protector = Protector.new }
|
7
|
-
controller.singleton_class.class_eval { attr_reader :pp_protector }
|
8
|
-
end
|
9
|
-
controller.pp_protector
|
10
|
-
end
|
11
|
-
|
12
3
|
def initialize
|
13
4
|
@protections = []
|
14
5
|
end
|
@@ -16,13 +7,13 @@ module ParamProtected
|
|
16
7
|
def initialize_copy(copy)
|
17
8
|
copy.instance_variable_set(:@protections, deep_copy(@protections))
|
18
9
|
end
|
19
|
-
|
10
|
+
|
20
11
|
def declare_protection(params, options, exclusivity)
|
21
12
|
params = normalize_params(params)
|
22
13
|
actions, condition = normalize_options(options)
|
23
14
|
@protections << [params, actions, condition, exclusivity]
|
24
15
|
end
|
25
|
-
|
16
|
+
|
26
17
|
def protect(controller, controller_params, action_name)
|
27
18
|
deep_copy(controller_params).tap do |params|
|
28
19
|
protections_for_action(controller, action_name).each do |exclusivity, protected_params|
|
@@ -30,7 +21,7 @@ module ParamProtected
|
|
30
21
|
end
|
31
22
|
end
|
32
23
|
end
|
33
|
-
|
24
|
+
|
34
25
|
private
|
35
26
|
|
36
27
|
def protections_for_action(controller, action_name)
|
@@ -42,15 +33,15 @@ module ParamProtected
|
|
42
33
|
end
|
43
34
|
end
|
44
35
|
|
45
|
-
# Merge protections for the same params into one so as to allow extension of them
|
36
|
+
# Merge protections for the same params into one so as to allow extension of them
|
46
37
|
# in inheriting controllers.
|
47
|
-
#
|
38
|
+
#
|
48
39
|
# Mutating the first argument is okay since this method is used within inject only.
|
49
|
-
#
|
40
|
+
#
|
50
41
|
# Example:
|
51
42
|
# merge_protections({ :foo => { :qux => nil }, :bar => { :baz => nil, :qux => nil } },
|
52
43
|
# { :foo => { :baz => nil, :qux => { :foo => nil } } })
|
53
|
-
# =>
|
44
|
+
# =>
|
54
45
|
#
|
55
46
|
# { :foo => { :baz => nil, :qux => { :foo => nil } }, :bar => { :baz =>nil, :qux => nil } }
|
56
47
|
def merge_protections(protections, protected_params)
|
@@ -64,10 +55,10 @@ module ParamProtected
|
|
64
55
|
|
65
56
|
protections
|
66
57
|
end
|
67
|
-
|
58
|
+
|
68
59
|
# When specifying params to protect, we allow a combination of arrays and hashes much like how
|
69
60
|
# ActiveRecord::Base#find's :include options works. This method normalizes that into just nested hashes,
|
70
|
-
# stringifying the keys and setting all values to nil. This format is easier/faster to work with when
|
61
|
+
# stringifying the keys and setting all values to nil. This format is easier/faster to work with when
|
71
62
|
# filtering the controller params.
|
72
63
|
# Example...
|
73
64
|
# [:a, {:b => [:c, :d]}]
|
@@ -95,7 +86,7 @@ module ParamProtected
|
|
95
86
|
k.to_s
|
96
87
|
end
|
97
88
|
end
|
98
|
-
|
89
|
+
|
99
90
|
# When specifying which actions param protection apply to, we allow a format like this...
|
100
91
|
# :only => [:action1, :action2]
|
101
92
|
# This method normalizes that to...
|
@@ -118,16 +109,16 @@ module ParamProtected
|
|
118
109
|
actions = actions.collect{ |action| action.try(:to_s) }
|
119
110
|
|
120
111
|
condition = condition.first || :if
|
121
|
-
|
112
|
+
|
122
113
|
if options.has_key?(condition)
|
123
114
|
condition_value = options[condition]
|
124
115
|
else
|
125
116
|
condition_value = true
|
126
117
|
end
|
127
|
-
|
118
|
+
|
128
119
|
[[scope, *actions], [condition, condition_value]]
|
129
120
|
end
|
130
|
-
|
121
|
+
|
131
122
|
# When #dup just isn't enough... :P
|
132
123
|
def deep_copy(object)
|
133
124
|
try_to_clone(object).tap do |new_object|
|
@@ -139,7 +130,7 @@ module ParamProtected
|
|
139
130
|
end
|
140
131
|
end
|
141
132
|
end
|
142
|
-
|
133
|
+
|
143
134
|
# Some objects are not dupable... like TrueClass, FalseClass and NilClass.
|
144
135
|
def try_to_clone(object)
|
145
136
|
object.clone
|
@@ -163,7 +154,7 @@ module ParamProtected
|
|
163
154
|
result
|
164
155
|
end
|
165
156
|
end
|
166
|
-
|
157
|
+
|
167
158
|
def action_matches?(scope, actions, action_name)
|
168
159
|
if action_name.blank?
|
169
160
|
false
|
@@ -175,7 +166,7 @@ module ParamProtected
|
|
175
166
|
raise ArgumentError, "unexpected scope (#{scope}), expected :only or :except"
|
176
167
|
end
|
177
168
|
end
|
178
|
-
|
169
|
+
|
179
170
|
def filter_params(protected_params, params, exclusivity)
|
180
171
|
return unless params.kind_of?(Hash)
|
181
172
|
return if protected_params.nil?
|
@@ -195,7 +186,7 @@ module ParamProtected
|
|
195
186
|
key_matches?(k, key)
|
196
187
|
end.try(:last)
|
197
188
|
end
|
198
|
-
|
189
|
+
|
199
190
|
def key_exists?(protected_params, key)
|
200
191
|
protected_params.any? do |k,v|
|
201
192
|
key_matches?(k, key)
|
data/param_protected.gemspec
CHANGED
@@ -1,98 +1,77 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{param_protected}
|
8
|
-
s.version = "
|
8
|
+
s.version = "3.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{
|
11
|
+
s.authors = [%q{Christopher J. Bottaro}]
|
12
|
+
s.date = %q{2011-11-02}
|
13
13
|
s.description = %q{Provides two class methods on ActiveController::Base that filter the params hash for that controller's actions. You can think of them as the controller analog of attr_protected and attr_accessible.}
|
14
14
|
s.email = %q{cjbottaro@alumni.cs.utexas.edu}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
"CHANGELOG",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"init.rb",
|
28
|
+
"lib/param_protected.rb",
|
29
|
+
"lib/param_protected/constants.rb",
|
30
|
+
"lib/param_protected/controller_modifications.rb",
|
31
|
+
"lib/param_protected/protector.rb",
|
32
|
+
"param_protected.gemspec",
|
33
|
+
"test/accessible_except_test.rb",
|
34
|
+
"test/accessible_only_test.rb",
|
35
|
+
"test/app_root/.gitignore",
|
36
|
+
"test/app_root/Gemfile",
|
37
|
+
"test/app_root/app/controllers/accessible_except_controller.rb",
|
38
|
+
"test/app_root/app/controllers/accessible_only_controller.rb",
|
39
|
+
"test/app_root/app/controllers/application_controller.rb",
|
40
|
+
"test/app_root/app/controllers/conditions_controller.rb",
|
41
|
+
"test/app_root/app/controllers/inherited_users_controller.rb",
|
42
|
+
"test/app_root/app/controllers/merge_controller.rb",
|
43
|
+
"test/app_root/app/controllers/protected_controller.rb",
|
44
|
+
"test/app_root/app/controllers/users_controller.rb",
|
45
|
+
"test/app_root/config.ru",
|
46
|
+
"test/app_root/config/application.rb",
|
47
|
+
"test/app_root/config/boot.rb",
|
48
|
+
"test/app_root/config/environment.rb",
|
49
|
+
"test/app_root/config/routes.rb",
|
50
|
+
"test/app_root/lib/console_with_fixtures.rb",
|
51
|
+
"test/app_root/script/rails",
|
52
|
+
"test/conditions_controller_test.rb",
|
53
|
+
"test/inherited_users_controller_test.rb",
|
54
|
+
"test/merge_controller_test.rb",
|
55
|
+
"test/protected_controller_test.rb",
|
56
|
+
"test/protector_test.rb",
|
57
|
+
"test/test_helper.rb",
|
58
|
+
"test/users_controller_test.rb"
|
57
59
|
]
|
58
60
|
s.homepage = %q{http://github.com/cjbottaro/param_protected}
|
59
|
-
s.
|
60
|
-
s.
|
61
|
-
s.rubygems_version = %q{1.3.7}
|
61
|
+
s.require_paths = [%q{lib}]
|
62
|
+
s.rubygems_version = %q{1.8.7}
|
62
63
|
s.summary = %q{Filter unwanted parameters in your controllers and actions.}
|
63
|
-
s.test_files = [
|
64
|
-
"test/accessible_except_test.rb",
|
65
|
-
"test/accessible_only_test.rb",
|
66
|
-
"test/app_root/app/controllers/accessible_except_controller.rb",
|
67
|
-
"test/app_root/app/controllers/accessible_only_controller.rb",
|
68
|
-
"test/app_root/app/controllers/application_controller.rb",
|
69
|
-
"test/app_root/app/controllers/conditions_controller.rb",
|
70
|
-
"test/app_root/app/controllers/inherited_users_controller.rb",
|
71
|
-
"test/app_root/app/controllers/merge_controller.rb",
|
72
|
-
"test/app_root/app/controllers/protected_controller.rb",
|
73
|
-
"test/app_root/app/controllers/users_controller.rb",
|
74
|
-
"test/app_root/config/application.rb",
|
75
|
-
"test/app_root/config/boot.rb",
|
76
|
-
"test/app_root/config/environment.rb",
|
77
|
-
"test/app_root/config/routes.rb",
|
78
|
-
"test/app_root/lib/console_with_fixtures.rb",
|
79
|
-
"test/conditions_controller_test.rb",
|
80
|
-
"test/inherited_users_controller_test.rb",
|
81
|
-
"test/merge_controller_test.rb",
|
82
|
-
"test/protected_controller_test.rb",
|
83
|
-
"test/protector_test.rb",
|
84
|
-
"test/test_helper.rb",
|
85
|
-
"test/users_controller_test.rb"
|
86
|
-
]
|
87
64
|
|
88
65
|
if s.respond_to? :specification_version then
|
89
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
90
66
|
s.specification_version = 3
|
91
67
|
|
92
68
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
69
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
93
70
|
else
|
71
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
94
72
|
end
|
95
73
|
else
|
74
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
96
75
|
end
|
97
76
|
end
|
98
77
|
|
metadata
CHANGED
@@ -1,34 +1,40 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: param_protected
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
version: 2.0.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Christopher J. Bottaro
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2011-11-02 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jeweler
|
16
|
+
requirement: &70253414744340 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70253414744340
|
25
|
+
description: Provides two class methods on ActiveController::Base that filter the
|
26
|
+
params hash for that controller's actions. You can think of them as the controller
|
27
|
+
analog of attr_protected and attr_accessible.
|
22
28
|
email: cjbottaro@alumni.cs.utexas.edu
|
23
29
|
executables: []
|
24
|
-
|
25
30
|
extensions: []
|
26
|
-
|
27
|
-
extra_rdoc_files:
|
31
|
+
extra_rdoc_files:
|
28
32
|
- LICENSE
|
29
33
|
- README.rdoc
|
30
|
-
files:
|
34
|
+
files:
|
31
35
|
- CHANGELOG
|
36
|
+
- Gemfile
|
37
|
+
- Gemfile.lock
|
32
38
|
- LICENSE
|
33
39
|
- README.rdoc
|
34
40
|
- Rakefile
|
@@ -65,58 +71,31 @@ files:
|
|
65
71
|
- test/protector_test.rb
|
66
72
|
- test/test_helper.rb
|
67
73
|
- test/users_controller_test.rb
|
68
|
-
has_rdoc: true
|
69
74
|
homepage: http://github.com/cjbottaro/param_protected
|
70
75
|
licenses: []
|
71
|
-
|
72
76
|
post_install_message:
|
73
|
-
rdoc_options:
|
74
|
-
|
75
|
-
require_paths:
|
77
|
+
rdoc_options: []
|
78
|
+
require_paths:
|
76
79
|
- lib
|
77
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
81
|
none: false
|
79
|
-
requirements:
|
80
|
-
- -
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
segments:
|
83
87
|
- 0
|
84
|
-
|
85
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
hash: -3789331872057499608
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
90
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
|
91
|
-
- 0
|
92
|
-
version: "0"
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
93
95
|
requirements: []
|
94
|
-
|
95
96
|
rubyforge_project:
|
96
|
-
rubygems_version: 1.
|
97
|
+
rubygems_version: 1.8.7
|
97
98
|
signing_key:
|
98
99
|
specification_version: 3
|
99
100
|
summary: Filter unwanted parameters in your controllers and actions.
|
100
|
-
test_files:
|
101
|
-
- test/accessible_except_test.rb
|
102
|
-
- test/accessible_only_test.rb
|
103
|
-
- test/app_root/app/controllers/accessible_except_controller.rb
|
104
|
-
- test/app_root/app/controllers/accessible_only_controller.rb
|
105
|
-
- test/app_root/app/controllers/application_controller.rb
|
106
|
-
- test/app_root/app/controllers/conditions_controller.rb
|
107
|
-
- test/app_root/app/controllers/inherited_users_controller.rb
|
108
|
-
- test/app_root/app/controllers/merge_controller.rb
|
109
|
-
- test/app_root/app/controllers/protected_controller.rb
|
110
|
-
- test/app_root/app/controllers/users_controller.rb
|
111
|
-
- test/app_root/config/application.rb
|
112
|
-
- test/app_root/config/boot.rb
|
113
|
-
- test/app_root/config/environment.rb
|
114
|
-
- test/app_root/config/routes.rb
|
115
|
-
- test/app_root/lib/console_with_fixtures.rb
|
116
|
-
- test/conditions_controller_test.rb
|
117
|
-
- test/inherited_users_controller_test.rb
|
118
|
-
- test/merge_controller_test.rb
|
119
|
-
- test/protected_controller_test.rb
|
120
|
-
- test/protector_test.rb
|
121
|
-
- test/test_helper.rb
|
122
|
-
- test/users_controller_test.rb
|
101
|
+
test_files: []
|