aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model/mass_assignment_security/permission_set.rb
diff options
context:
space:
mode:
authorJosh Kalderimis <josh.kalderimis@gmail.com>2010-07-08 18:16:36 +0200
committerJosé Valim <jose.valim@gmail.com>2010-07-08 18:28:45 +0200
commit4b66aab00fa0ea6bcc6ec81df19e44de34fd7864 (patch)
treeff870b932c26869d6a27a6a058d37baa6c289e0a /activemodel/lib/active_model/mass_assignment_security/permission_set.rb
parent7c86e8e21ba6a1f88226ddd0cf012a563f234d06 (diff)
downloadrails-4b66aab00fa0ea6bcc6ec81df19e44de34fd7864.tar.gz
rails-4b66aab00fa0ea6bcc6ec81df19e44de34fd7864.tar.bz2
rails-4b66aab00fa0ea6bcc6ec81df19e44de34fd7864.zip
mass_assignment_security moved from AR to AMo, and minor test cleanup
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'activemodel/lib/active_model/mass_assignment_security/permission_set.rb')
-rw-r--r--activemodel/lib/active_model/mass_assignment_security/permission_set.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/activemodel/lib/active_model/mass_assignment_security/permission_set.rb b/activemodel/lib/active_model/mass_assignment_security/permission_set.rb
new file mode 100644
index 0000000000..978da493d7
--- /dev/null
+++ b/activemodel/lib/active_model/mass_assignment_security/permission_set.rb
@@ -0,0 +1,41 @@
+require 'active_model/mass_assignment_security/sanitizer'
+
+module ActiveModel
+ module MassAssignmentSecurity
+
+ class PermissionSet < Set
+ attr_accessor :logger
+
+ def +(values)
+ super(values.map(&:to_s))
+ end
+
+ def include?(key)
+ super(remove_multiparameter_id(key))
+ end
+
+ protected
+
+ def remove_multiparameter_id(key)
+ key.gsub(/\(.+/, '')
+ end
+ end
+
+ class WhiteList < PermissionSet
+ include Sanitizer
+
+ def deny?(key)
+ !include?(key)
+ end
+ end
+
+ class BlackList < PermissionSet
+ include Sanitizer
+
+ def deny?(key)
+ include?(key)
+ end
+ end
+
+ end
+end \ No newline at end of file