bodyguards 0.1.0 → 0.2.0

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