permitters 0.0.2 → 0.0.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 +6 -14
- data/Rakefile +6 -2
- data/lib/action_controller/permitter.rb +21 -11
- data/lib/permitters/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MWQxZWU1YjIzNWYyOGY5OWQ5ODE5ZmRkNTllNzA2NmRkMDQwZTdhNzVkNTMy
|
10
|
-
MzMzMDNkZWEyNWU2YzdlYjM3NjRlMzFmZDE0MDE5Mjg5NzdjOTQwOWIyMTU5
|
11
|
-
MjE0MTc2YTJlYjVmZDdiMGZjYWFkZWNjMTU2N2UyM2E3ZGZmNTU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NmNjMDMwYWJiODE1NjI2NGI4YTgwZDg3MDM1YmQ1ODYzOTc1OTU4NGFlMTFi
|
14
|
-
NDAwMDQ3M2I4MDA0MDM2ODZmNjBiYTM3MWMzN2I5Y2UwNjJjZDY1OGZlODE3
|
15
|
-
YTJlY2RjOTQyNDdkNGQ3Mjc5OTgzNzNhZDRlM2ExZjk0Y2U1Y2I=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f351ee08b99b4cf2f20067b636ec23b480e36219
|
4
|
+
data.tar.gz: fda272a871a9ed928c5e299792b6991242c46906
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f02e98b29e0b14095d7a58d36640775bc4ac8c7376b1a883a906705c3938fcb80940d8148b0475d8e509c91bc17fe16edf5e9066e82c9c65f74a2828915e9cfd
|
7
|
+
data.tar.gz: 78c0568d329074e5745ed2936f1c647e2f80ccac7d1a983fa1a5d3dc785e9bce0b7fdd9f16f8973f8c147ff07815b136203735a965381354506a44b40ebb7d0a
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@ require 'bundler/gem_tasks'
|
|
3
3
|
require 'appraisal'
|
4
4
|
|
5
5
|
require 'rspec/core/rake_task'
|
6
|
-
RSpec::Core::RakeTask.new(:
|
6
|
+
RSpec::Core::RakeTask.new(:spec_for_appraisal)
|
7
7
|
|
8
8
|
# Override the default task
|
9
9
|
task :default => [] # Just in case it hasn't already been set
|
@@ -12,8 +12,12 @@ task :default => :appraise
|
|
12
12
|
|
13
13
|
task :appraise do |t|
|
14
14
|
if ENV['BUNDLE_GEMFILE'] =~ /gemfiles/
|
15
|
-
Rake::Task[:
|
15
|
+
Rake::Task[:spec_for_appraisal].invoke
|
16
16
|
else
|
17
17
|
exec 'rake appraisal:install && rake appraisal'
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
task :spec do |t|
|
22
|
+
warn "To run the specs please use `rake` (or for faster tests, `rake appraise`)"
|
23
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module ActionController
|
2
2
|
class PermitterAttribute < Struct.new(:name, :options); end
|
3
|
+
class PermitterError < StandardError #:nodoc:
|
4
|
+
end
|
3
5
|
class Permitter
|
4
6
|
|
5
7
|
# Application-wide configuration
|
@@ -12,17 +14,10 @@ module ActionController
|
|
12
14
|
# To change this value, use the `resource` class method.
|
13
15
|
def inherited(subclass)
|
14
16
|
subclass.class_eval do
|
15
|
-
class_attribute :permitted_attributes
|
16
|
-
|
17
|
+
class_attribute :permitted_attributes, :resource_name_override
|
18
|
+
private_class_method :resource_name_override, :resource_name_override=
|
17
19
|
|
18
20
|
self.permitted_attributes = []
|
19
|
-
name = self.name
|
20
|
-
|
21
|
-
# in Rails 3.2+ could do:
|
22
|
-
# name.demodulize.chomp('Permitter').underscore.to_sym
|
23
|
-
# Rails < 3.2
|
24
|
-
last_index = name.rindex('::')
|
25
|
-
self.resource_name = (last_index ? name[(last_index+2)..-1] : name).chomp('Permitter').underscore.to_sym
|
26
21
|
end
|
27
22
|
end
|
28
23
|
|
@@ -41,7 +36,17 @@ module ActionController
|
|
41
36
|
end
|
42
37
|
|
43
38
|
def resource(name)
|
44
|
-
self.
|
39
|
+
self.resource_name_override = name
|
40
|
+
end
|
41
|
+
|
42
|
+
def resource_name
|
43
|
+
name = self.name
|
44
|
+
|
45
|
+
# in Rails 3.2+ could do:
|
46
|
+
# name.demodulize.chomp('Permitter').underscore.to_sym
|
47
|
+
# Rails < 3.2
|
48
|
+
last_index = name.rindex('::')
|
49
|
+
resource_name_override || (last_index ? name[(last_index+2)..-1] : name).chomp('Permitter').underscore.to_sym
|
45
50
|
end
|
46
51
|
end
|
47
52
|
|
@@ -64,7 +69,9 @@ module ActionController
|
|
64
69
|
permitted_attributes.select {|a| a.options[:authorize]}.each do |attribute|
|
65
70
|
scope_name = attribute.options[:scope]
|
66
71
|
values = scope_name ? Array.wrap(@filtered_params[scope_name]).collect {|hash| hash[attribute.name]}.compact : Array.wrap(@filtered_params[attribute.name])
|
67
|
-
|
72
|
+
klass_name = attribute.options[:as].try(:to_s) || attribute.name.to_s.split(/(.+)_ids?/)[1]
|
73
|
+
raise PermitterError.new("Cannot permit #{attribute.name.inspect} unless you specify the the attribute name (e.g. :something_id or :something_ids), or a class name via the :as option (e.g. :as => Something)") unless klass_name
|
74
|
+
klass = klass_name.classify.constantize
|
68
75
|
|
69
76
|
values.each do |record_id|
|
70
77
|
record = klass.find record_id
|
@@ -81,6 +88,9 @@ module ActionController
|
|
81
88
|
authorizer ? authorizer.__send__(:authorize!, *args, &block) : nil
|
82
89
|
end
|
83
90
|
|
91
|
+
def resource_name
|
92
|
+
self.class.resource_name
|
93
|
+
end
|
84
94
|
|
85
95
|
private
|
86
96
|
|
data/lib/permitters/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: permitters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Hawkins
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-11 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Permitters are an object-oriented way of defining what request parameters
|
15
15
|
are permitted. using Strong Parameters. It is to Strong Parameters what ActiveModel::Serializers
|
@@ -38,17 +38,17 @@ require_paths:
|
|
38
38
|
- lib
|
39
39
|
required_ruby_version: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - '>='
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '0'
|
44
44
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
requirements: []
|
50
50
|
rubyforge_project:
|
51
|
-
rubygems_version: 2.
|
51
|
+
rubygems_version: 2.1.11
|
52
52
|
signing_key:
|
53
53
|
specification_version: 4
|
54
54
|
summary: Object-oriented parameter authorization with Strong Parameters
|