bodyguards 0.2.0 → 0.3.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
- SHA1:
3
- metadata.gz: 3435f97cff2dade7fd12cfd19c254747a75a475a
4
- data.tar.gz: cef098984701d88120fa1ba17efaf6838e45c227
2
+ SHA256:
3
+ metadata.gz: b50fd84336e53677fd40fab8da3f7c7eed5d8570ca8da57220beea0103bb7f84
4
+ data.tar.gz: d06775aea9302d7f589a8674a87e46e0d40939173128b6f03e6cee67b4f0546c
5
5
  SHA512:
6
- metadata.gz: 43c68f70e3b435372529adde9c1c99b2bd6e63156b5ede35bbba0a24edd7c22996cf08cc538439fbc54fe2091c4deaf01d367480ee1fde585c502db4596a1e89
7
- data.tar.gz: 114eacac746123b81dc0a7b41f423d992c1083a11bb9d6f3d2a1371f0bd524f4412ebb32e210500e3a24ef1816db2b252e45828059913962cb4a1c082bf9532c
6
+ metadata.gz: e71e68fb76cb0ada41182611547b7f8a6618b8d99e36b08e06adf82fb35aee66a3f15c6305c24de7f3c987fed36ea6a23a61697d440aaf2cbeaeeb7b81901aea
7
+ data.tar.gz: 181032022db47a29af3c392bf767a987d3996708ede7913befa4ec1a0c5b384ed4f2079cac019e27780e8c8ae1dfb8c4b0e8e4000eadfa131a194e93c8656a45
@@ -1,13 +1,22 @@
1
+ require 'active_support/core_ext/class/attribute'
2
+ require 'active_support/core_ext/string/inflections'
1
3
  require_relative 'rule_set'
2
4
  require_relative 'rule'
5
+ require_relative 'default_permission_evaluation_context'
3
6
 
4
7
  module Bodyguards
5
8
  class Base
9
+ class_attribute :permission_evaluation_context_class_name, instance_writer: false, instance_reader: false, default: 'Bodyguards::DefaultPermissionEvaluationContext'
10
+
6
11
  class << self
7
12
  def rule_set
8
13
  @rule_set ||= RuleSet.new
9
14
  end
10
15
 
16
+ def permission_evaluation_context(*args)
17
+ permission_evaluation_context_class_name.constantize.new(*args)
18
+ end
19
+
11
20
  def permit_to(feature_name, &block)
12
21
  rule_set.add_rule_for(feature_name, Rule.new(evaluator: block))
13
22
  end
@@ -16,16 +25,16 @@ module Bodyguards
16
25
  rule_set.add_global_rule(Rule.new(evaluator: block))
17
26
  end
18
27
 
19
- def permission_to?(feature_name, subject)
20
- rule_set.evaluate(feature_name, subject)
28
+ def permission_to?(feature_name, *args)
29
+ rule_set.evaluate(feature_name, permission_evaluation_context(*args))
21
30
  end
22
31
 
23
- def rejection_to?(feature_name, subject)
24
- !permission_to?(feature_name, subject)
32
+ def rejection_to?(feature_name, *args)
33
+ !permission_to?(feature_name, permission_evaluation_context(*args))
25
34
  end
26
35
 
27
- def any_permission?(subject)
28
- rule_set.evaluate_all(subject)
36
+ def any_permission?(*args)
37
+ rule_set.evaluate_all(permission_evaluation_context(*args))
29
38
  end
30
39
  end
31
40
  end
@@ -0,0 +1,13 @@
1
+ require 'active_support/core_ext/module/delegation'
2
+
3
+ module Bodyguards
4
+ class DefaultPermissionEvaluationContext
5
+ attr_reader :subject
6
+
7
+ delegate_missing_to :subject
8
+
9
+ def initialize(subject)
10
+ @subject = subject
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module Bodyguards
2
+ VERSION = '0.3.0'
3
+ end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bodyguards
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Bilharz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-17 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2019-02-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3'
13
41
  description: Write bodyguard classes for permission management with a minimal DSL
14
42
  email: sbilharz@heilmannsoftware.de
15
43
  executables: []
@@ -18,9 +46,11 @@ extra_rdoc_files: []
18
46
  files:
19
47
  - lib/bodyguards.rb
20
48
  - lib/bodyguards/base.rb
49
+ - lib/bodyguards/default_permission_evaluation_context.rb
21
50
  - lib/bodyguards/rule.rb
22
51
  - lib/bodyguards/rule_set.rb
23
- homepage:
52
+ - lib/bodyguards/version.rb
53
+ homepage: https://github.com/sbilharz/bodyguards
24
54
  licenses:
25
55
  - MIT
26
56
  metadata: {}
@@ -32,15 +62,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
32
62
  requirements:
33
63
  - - ">="
34
64
  - !ruby/object:Gem::Version
35
- version: '0'
65
+ version: '2.4'
36
66
  required_rubygems_version: !ruby/object:Gem::Requirement
37
67
  requirements:
38
68
  - - ">="
39
69
  - !ruby/object:Gem::Version
40
70
  version: '0'
41
71
  requirements: []
42
- rubyforge_project:
43
- rubygems_version: 2.4.8
72
+ rubygems_version: 3.0.1
44
73
  signing_key:
45
74
  specification_version: 4
46
75
  summary: Flexible permission management