bodyguards 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a091f3892a3511e1997658e72997902af460a495
4
- data.tar.gz: 262b53e1d15a290296757ba60ec6662b7ecca6df
3
+ metadata.gz: 3435f97cff2dade7fd12cfd19c254747a75a475a
4
+ data.tar.gz: cef098984701d88120fa1ba17efaf6838e45c227
5
5
  SHA512:
6
- metadata.gz: 094d34d2f6e6e0836abbb9484388f4d8ea176490c6ae2d076b2ba49c08625bf89f7229c3042b1f1a02b6650384de5f4f396d7bc1b7e2268e862e2aba17cd3c0f
7
- data.tar.gz: 1f388baaf2e4f778740b0acec38972bb00676282eb937d54fc3a909f509f627ff99460a4d825cf564ae1a17aad054fc9bcf0b1818b4d69587c69363221c2109e
6
+ metadata.gz: 43c68f70e3b435372529adde9c1c99b2bd6e63156b5ede35bbba0a24edd7c22996cf08cc538439fbc54fe2091c4deaf01d367480ee1fde585c502db4596a1e89
7
+ data.tar.gz: 114eacac746123b81dc0a7b41f423d992c1083a11bb9d6f3d2a1371f0bd524f4412ebb32e210500e3a24ef1816db2b252e45828059913962cb4a1c082bf9532c
@@ -12,6 +12,10 @@ module Bodyguards
12
12
  rule_set.add_rule_for(feature_name, Rule.new(evaluator: block))
13
13
  end
14
14
 
15
+ def permit_all(&block)
16
+ rule_set.add_global_rule(Rule.new(evaluator: block))
17
+ end
18
+
15
19
  def permission_to?(feature_name, subject)
16
20
  rule_set.evaluate(feature_name, subject)
17
21
  end
@@ -1,6 +1,7 @@
1
1
  module Bodyguards
2
2
  class RuleSet
3
3
  def initialize
4
+ @global_rules = []
4
5
  @rules = {}
5
6
  end
6
7
 
@@ -8,16 +9,22 @@ module Bodyguards
8
9
  rules[feature_name.to_sym] = rule
9
10
  end
10
11
 
12
+ def add_global_rule(rule)
13
+ @global_rules << rule
14
+ end
15
+
11
16
  def evaluate(feature_name, subject)
17
+ return true if global_rules.any? { |rule| rule.evaluate(subject) }
12
18
  rules.fetch(feature_name.to_sym).evaluate(subject)
13
19
  end
14
20
 
15
21
  def evaluate_all(subject)
22
+ return true if global_rules.any? { |rule| rule.evaluate(subject) }
16
23
  rules.values.any? { |rule| rule.evaluate(subject) }
17
24
  end
18
25
 
19
26
  private
20
27
 
21
- attr_reader :rules
28
+ attr_reader :global_rules, :rules
22
29
  end
23
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bodyguards
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Bilharz