bodyguards 0.2.0 → 0.3.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
- 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