permitters 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|