forbidium 1.0.1 → 1.1.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.
- checksums.yaml +4 -4
- data/README.md +14 -0
- data/lib/forbidium/action_controller/parameters.rb +40 -0
- data/lib/forbidium/core_ext/hash.rb +1 -1
- data/lib/forbidium/forbidium.rb +10 -5
- data/lib/forbidium/hash.rb +32 -0
- data/lib/forbidium/railtie.rb +3 -1
- data/lib/forbidium/version.rb +1 -1
- data/lib/forbidium.rb +2 -0
- metadata +5 -5
- data/lib/forbidium/allow.rb +0 -18
- data/lib/forbidium/forbid.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9044ce986e2a490f08eb553163ae652e7100d6e3
|
4
|
+
data.tar.gz: 4ace021f869f46424ef2d215b6581de7897b4c05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ec7e6d6f08e3e019e4318addb6a66162051dd3275bd6007d580d977f4c41940aa71664de4d0506412a581b40ad3310cb29dc01f135487ab2512cd7723e223b6
|
7
|
+
data.tar.gz: 6eead3f3ca067cca134c626d2d6571f8027bef6eebf50c662b4fa8529136df6cdcf1fe328c6476f0ecd8128acc353c832ca8133bbde260a0679816ea6bfcaae0
|
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
# Forbidium
|
2
|
+
[](https://badge.fury.io/rb/forbidium)
|
3
|
+
[](https://codeclimate.com/github/msimonborg/forbidium)
|
4
|
+
[](https://travis-ci.org/msimonborg/forbidium)
|
5
|
+
[](https://coveralls.io/github/msimonborg/forbidium?branch=master)
|
2
6
|
|
3
7
|
Filter hashes by setting allowed or forbidden values for specific keys.
|
4
8
|
|
@@ -19,6 +23,8 @@ Or install it yourself as:
|
|
19
23
|
$ gem install forbidium
|
20
24
|
|
21
25
|
## Usage
|
26
|
+
The gem will add four methods to `Hash`: `#allow`, `#allow!`, `#forbid`, and `#forbid!`
|
27
|
+
|
22
28
|
```ruby
|
23
29
|
hash = { one: 'one', two: 'two' }
|
24
30
|
|
@@ -37,6 +43,14 @@ hash.forbid!(two: 'two') # => {}
|
|
37
43
|
hash # => {}
|
38
44
|
```
|
39
45
|
|
46
|
+
When added to the `Gemfile` in a Rails project, `ActionController::Parameters` will also receive these methods so you can use them with your `strong_parameters`:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
def user_params
|
50
|
+
params.require(:user).permit(:email, :password, :role).forbid(role: ['sys_admin', 'owner'])
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
40
54
|
## Platform support
|
41
55
|
|
42
56
|
Tested against:
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Forbidium
|
4
|
+
module ActionController # :nodoc:
|
5
|
+
module Parameters # :nodoc:
|
6
|
+
# Adds the #forbid and #forbid! methods
|
7
|
+
module Forbid # :nodoc:
|
8
|
+
include Forbidium::Forbid
|
9
|
+
|
10
|
+
def forbid!(filters = {})
|
11
|
+
filters.each do |key, val|
|
12
|
+
delete(key) if Array(val).include?(self[key])
|
13
|
+
if key.is_a? Symbol
|
14
|
+
delete(key.to_s) if Array(val).include?(self[key.to_s])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
self
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Adds the #allow and #allow! methods
|
22
|
+
module Allow # :nodoc:
|
23
|
+
include Forbidium::Allow
|
24
|
+
|
25
|
+
def allow!(filters = {})
|
26
|
+
filters.each do |key, val|
|
27
|
+
delete(key) unless Array(val).include?(self[key])
|
28
|
+
if key.is_a? Symbol
|
29
|
+
delete(key.to_s) unless Array(val).include?(self[key.to_s])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
self
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
include Allow
|
37
|
+
include Forbid
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/forbidium/forbidium.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'forbidium/allow'
|
4
|
-
require 'forbidium/forbid'
|
5
|
-
|
6
3
|
# Filter hashes by setting allowed or forbidden values for specific keys.
|
7
4
|
#
|
8
5
|
# hash = { one: 'one', two: 'two' }
|
@@ -21,7 +18,15 @@ require 'forbidium/forbid'
|
|
21
18
|
#
|
22
19
|
# hash # => {}
|
23
20
|
module Forbidium
|
24
|
-
|
25
|
-
|
21
|
+
module Allow # :nodoc:
|
22
|
+
def allow(filters = {})
|
23
|
+
dup.allow!(filters)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module Forbid # :nodoc:
|
28
|
+
def forbid(filters = {})
|
29
|
+
dup.forbid!(filters)
|
30
|
+
end
|
26
31
|
end
|
27
32
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Forbidium
|
4
|
+
module Hash # :nodoc:
|
5
|
+
# Adds the #forbid and #forbid! methods
|
6
|
+
module Forbid # :nodoc:
|
7
|
+
include Forbidium::Forbid
|
8
|
+
|
9
|
+
def forbid!(filters = {})
|
10
|
+
filters.each do |key, val|
|
11
|
+
delete(key) if Array(val).include?(self[key])
|
12
|
+
end
|
13
|
+
self
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Adds the #allow and #allow! methods
|
18
|
+
module Allow # :nodoc:
|
19
|
+
include Forbidium::Allow
|
20
|
+
|
21
|
+
def allow!(filters = {})
|
22
|
+
filters.each do |key, val|
|
23
|
+
delete(key) unless Array(val).include?(self[key])
|
24
|
+
end
|
25
|
+
self
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
include Forbid
|
30
|
+
include Allow
|
31
|
+
end
|
32
|
+
end
|
data/lib/forbidium/railtie.rb
CHANGED
@@ -7,7 +7,9 @@ module Forbidium
|
|
7
7
|
class Railtie < ::Rails::Railtie
|
8
8
|
initializer :forbidium do
|
9
9
|
ActiveSupport.on_load :action_controller do
|
10
|
-
ActionController::Parameters.send
|
10
|
+
::ActionController::Parameters.send(
|
11
|
+
:include, Forbidium::ActionController::Parameters
|
12
|
+
)
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/forbidium/version.rb
CHANGED
data/lib/forbidium.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forbidium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- M. Simon Borg
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -48,10 +48,10 @@ files:
|
|
48
48
|
- LICENSE.txt
|
49
49
|
- README.md
|
50
50
|
- lib/forbidium.rb
|
51
|
-
- lib/forbidium/
|
51
|
+
- lib/forbidium/action_controller/parameters.rb
|
52
52
|
- lib/forbidium/core_ext/hash.rb
|
53
|
-
- lib/forbidium/forbid.rb
|
54
53
|
- lib/forbidium/forbidium.rb
|
54
|
+
- lib/forbidium/hash.rb
|
55
55
|
- lib/forbidium/railtie.rb
|
56
56
|
- lib/forbidium/version.rb
|
57
57
|
homepage: https://github.com/msimonborg/forbidium
|
@@ -66,7 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 2.
|
69
|
+
version: 2.2.0
|
70
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - ">="
|
data/lib/forbidium/allow.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Forbidium
|
4
|
-
# Adds the #allow and #allow! methods
|
5
|
-
module Allow
|
6
|
-
def allow(filters = {})
|
7
|
-
dup.allow!(filters)
|
8
|
-
end
|
9
|
-
|
10
|
-
def allow!(filters = {})
|
11
|
-
filters.each do |key, val|
|
12
|
-
delete(key) unless Array(val).include?(self[key])
|
13
|
-
delete(key.to_s) unless Array(val).include?(self[key.to_s])
|
14
|
-
end
|
15
|
-
self
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/forbidium/forbid.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Forbidium
|
4
|
-
# Adds the #forbid and #forbid! methods
|
5
|
-
module Forbid
|
6
|
-
def forbid(filters = {})
|
7
|
-
dup.forbid!(filters)
|
8
|
-
end
|
9
|
-
|
10
|
-
def forbid!(filters = {})
|
11
|
-
filters.each do |key, val|
|
12
|
-
delete(key) if Array(val).include?(self[key])
|
13
|
-
delete(key.to_s) if Array(val).include?(self[key.to_s])
|
14
|
-
end
|
15
|
-
self
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|