allowed_params 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ae4f72c04eb3f9dbf641a052240110f67b33b9f
4
- data.tar.gz: bfacbca807f0e699013f2e6c7f4c14449b452e9b
3
+ metadata.gz: d84fd4bf309d1033e2c8192fb33240efbe49481c
4
+ data.tar.gz: ca19af6df7e37a423d1ad648b3078d296a249882
5
5
  SHA512:
6
- metadata.gz: 666107c6262d625cc80850ba02b4e576a874de704f05a275922cd70a94f326c3daea2a3d2593e55477f661af027ed9a1d552b18c1c6189c0f6d62ba038952c93
7
- data.tar.gz: 24e9038ee98ecb5a6a5955b1e7768808682a1667d379ad1f53ebe823c121d0152a614a5313047c2df3c124457a08ce52af63aa62c253271493a852dba4a19ed7
6
+ metadata.gz: a8574c49f9a50508728969a4f75a4e968a239c0a22faebcae4375542885fd7a24dc736c29d1c3c1e3870641ce1d78fa629c573950bea909bb63f9627ee6161f6
7
+ data.tar.gz: 09ee405c1a72ca1474e63572d8d6f999e8fbb288105e3263eb4b6b45f03187fd1488e01ef8341af1cd111dc99eec8134e12b515cd49ca4e763236ef408024ac7
data/README.md CHANGED
@@ -1,25 +1,53 @@
1
1
  # AllowedParams
2
2
 
3
+ ## Installation
4
+
5
+ This project uses [semantic versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+ Add it to your Gemfile:
8
+
9
+ ```ruby
10
+ gem 'allowed_params'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ ```sh
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself with:
20
+
21
+ ```sh
22
+ $ gem install allowed_params
23
+ ```
24
+
25
+
26
+ ## Usage
27
+
3
28
  This gem provides filtering and validations of params
29
+
30
+ ## Params validation with whitelist
4
31
 
5
32
  ```ruby
6
33
 
7
- class DogsController < ApplicationController
34
+ class EmployersController < ApplicationController
8
35
  include AllowedParams::Helper
9
36
 
10
- params do
11
- allow :name, presence: true
12
- allow :age
37
+ params whitelist: true do
38
+ validate :id, presence: true
39
+ validate :name, presence: true
40
+ validate :position, inclusion: { in: %w(manager developer) }
13
41
  end
14
42
  def update
15
43
  # do the job
16
- end
44
+ end
17
45
  end
18
46
 
19
47
  ```
20
-
21
- This will validate `params[:name]` and raise `AllowedParams::ValidationError` in case of invalid value.
22
- `age` param is allowed and not validated. All other params is not allowed.
48
+
49
+ This will validate listed params and raise `AllowedParams::ValidationError` in case of invalid value.
50
+ All other params are not allowed, and `AllowedParams::NotAllowedError` will be raised if present.
23
51
 
24
52
  To allow params on all controllers:
25
53
 
@@ -27,7 +55,26 @@ To allow params on all controllers:
27
55
 
28
56
  AllowedParams.config.allowed_params = [:format]
29
57
 
58
+ ```
59
+
60
+ ## Just validation
61
+
62
+ ```ruby
63
+ class CatsController < ApplicationController
64
+ include AllowedParams::Helper
65
+
66
+ params do
67
+ validates :name, presence: true
68
+ validates :kind, inclusion: { in: %w(fluffy bald) }
69
+ end
70
+ def update
71
+ # do the job
72
+ end
73
+ end
74
+
30
75
  ```
31
76
 
32
- This project rocks and uses MIT-LICENSE.
77
+ This will validate `params[:name], params[:kind]` and raise `AllowedParams::ValidationError` in case of invalid value.
78
+ All other params will just go through without any checks.
33
79
 
80
+ This project rocks and uses MIT-LICENSE.
@@ -8,29 +8,33 @@ module AllowedParams
8
8
  extend ActiveSupport::Concern
9
9
 
10
10
  module ClassMethods
11
- def params(&block)
11
+ def params(opts={}, &block)
12
12
  builder = ::AllowedParams::ValidatorBuilder.new(self)
13
13
  builder.instance_eval(&block) if block_given?
14
14
  @request_params_validator = builder.validator
15
+ @whitelist = opts.fetch(:whitelist, false)
15
16
  end
16
17
 
17
18
  def method_added(method)
18
19
  if instance_variable_get(:@request_params_validator).present?
19
20
  request_params_validator = @request_params_validator
20
21
  @request_params_validator = nil
22
+ whitelist = @whitelist
23
+ @whitelist = nil
21
24
 
22
25
  before_filter only: [method] do
23
26
  request_params = request_params_validator.new(params)
24
27
  if request_params.invalid?
25
28
  raise ValidationError, request_params.errors.full_messages.first
26
29
  end
27
- if request_params.not_allowed.present?
28
- raise NotAllowedError, request_params.not_allowed.join(', ')
30
+ if whitelist && request_params.not_white_listed.present?
31
+ raise NotAllowedError, request_params.not_white_listed.join(', ')
29
32
  end
30
33
  end
31
34
  end
35
+
32
36
  super
33
37
  end
34
38
  end
35
39
  end
36
- end
40
+ end
@@ -10,7 +10,7 @@ module AllowedParams
10
10
  @params = {}
11
11
  end
12
12
 
13
- def allow(name, options = {})
13
+ def validate(name, options = {})
14
14
  @params[name] = options
15
15
  end
16
16
 
@@ -40,9 +40,10 @@ module AllowedParams
40
40
  end
41
41
  end
42
42
 
43
- def not_allowed
43
+ def not_white_listed
44
44
  @params.keys.map(&:to_s) - members.map(&:to_s)
45
45
  end
46
+
46
47
  end
47
48
  end
48
49
  end
@@ -1,3 +1,3 @@
1
1
  module AllowedParams
2
- VERSION = "0.0.2"
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,74 +1,62 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: allowed_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tema Bolshakov
8
+ - Dmitry Rybakov
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-06-18 00:00:00.000000000 Z
12
+ date: 2014-06-20 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - ">="
18
+ - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '3'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '3'
27
- - !ruby/object:Gem::Dependency
28
- name: sqlite3
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
20
+ version: '4.0'
34
21
  type: :development
35
22
  prerelease: false
36
23
  version_requirements: !ruby/object:Gem::Requirement
37
24
  requirements:
38
- - - ">="
25
+ - - "~>"
39
26
  - !ruby/object:Gem::Version
40
- version: '0'
27
+ version: '4.0'
41
28
  - !ruby/object:Gem::Dependency
42
- name: rspec
29
+ name: sqlite3
43
30
  requirement: !ruby/object:Gem::Requirement
44
31
  requirements:
45
- - - ">="
32
+ - - "~>"
46
33
  - !ruby/object:Gem::Version
47
34
  version: '0'
48
35
  type: :development
49
36
  prerelease: false
50
37
  version_requirements: !ruby/object:Gem::Requirement
51
38
  requirements:
52
- - - ">="
39
+ - - "~>"
53
40
  - !ruby/object:Gem::Version
54
41
  version: '0'
55
42
  - !ruby/object:Gem::Dependency
56
43
  name: rspec-rails
57
44
  requirement: !ruby/object:Gem::Requirement
58
45
  requirements:
59
- - - ">="
46
+ - - "~>"
60
47
  - !ruby/object:Gem::Version
61
- version: '0'
48
+ version: '3'
62
49
  type: :development
63
50
  prerelease: false
64
51
  version_requirements: !ruby/object:Gem::Requirement
65
52
  requirements:
66
- - - ">="
53
+ - - "~>"
67
54
  - !ruby/object:Gem::Version
68
- version: '0'
55
+ version: '3'
69
56
  description: Allow to filter and validate params on rails controllers
70
57
  email:
71
58
  - abolshakov@spbtv.com
59
+ - drybakov@spbtv.com
72
60
  executables: []
73
61
  extensions: []
74
62
  extra_rdoc_files: []
@@ -81,7 +69,7 @@ files:
81
69
  - lib/allowed_params/model.rb
82
70
  - lib/allowed_params/validator_builder.rb
83
71
  - lib/allowed_params/version.rb
84
- homepage:
72
+ homepage: https://github.com/SPBTV/allowed_params
85
73
  licenses:
86
74
  - MIT
87
75
  metadata: {}