forbidium 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/forbidium.svg)](https://badge.fury.io/rb/forbidium)
|
3
|
+
[![Code Climate](https://codeclimate.com/github/msimonborg/forbidium/badges/gpa.svg)](https://codeclimate.com/github/msimonborg/forbidium)
|
4
|
+
[![Build Status](https://travis-ci.org/msimonborg/forbidium.svg?branch=master)](https://travis-ci.org/msimonborg/forbidium)
|
5
|
+
[![Coverage Status](https://coveralls.io/repos/github/msimonborg/forbidium/badge.svg?branch=master)](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
|