pastore 0.0.2 → 0.0.4

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
  SHA256:
3
- metadata.gz: 410e528dd9b199e672139ce5bca88f06a25a3c68d0d81955f1ffedf2d57f8d8e
4
- data.tar.gz: 0e9e886326196f6f115b5827906310d75896a08cec53ec34fbb62a0627ee8107
3
+ metadata.gz: 77eb4179686bdc087cb3b82d5187714473d61d178a690ece61d23f4f238fc973
4
+ data.tar.gz: 66432435a048060675f5f61b966a99e917a8a810c8d713736202e334e510d42c
5
5
  SHA512:
6
- metadata.gz: 2e8eae1e20fdc6429b8094f0f17c974f156d8394af38f62b3a8fc22406208a43ab278704d887f26243cbed4f6e53da972bc0ae7d2474bb7c90895fc52d724836
7
- data.tar.gz: 83140c5b356109e2340bdfe1b161d8d77522463861d71da8deb299d2fb2742892f9b4abad5d96c24c777c485de802aaeae87d0dc329bde3f31d91a18dbc1e3ea
6
+ metadata.gz: 929a9b868a8d659728e7ebe2688fdec531ba9b718c195d40aeb2bb3ac313d59bac4c6ab6e3180f58a43af82930a7ae45bc5409ef0bfa439c4d4055d281d203a6
7
+ data.tar.gz: ea444e38cad30fb09fd6cfcf86fab000abcba0f3451ec2834e35bb13b7dca8fd062dc74d56879cf8f0c779e2b4fccb9d674dc34e7e2e36c238d4da6c330bb9cc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pastore (0.0.2)
4
+ pastore (0.0.4)
5
5
  rails (>= 4.0)
6
6
 
7
7
  GEM
@@ -4,15 +4,16 @@ module Pastore
4
4
  module Guards
5
5
  # Implements a structure where to store the settings for the guards.
6
6
  class Settings # rubocop:disable Metrics/ClassLength
7
- attr_accessor :role_detector, :forbidden_cbk
8
- attr_reader :strategy
7
+ attr_writer :role_detector, :forbidden_cbk
9
8
 
10
- def initialize
9
+ def initialize(superklass)
10
+ @super_guards = superklass.pastore_guards if superklass.respond_to?(:pastore_guards)
11
+ @superclass = superklass
11
12
  reset!
12
13
  end
13
14
 
14
15
  def reset!
15
- @strategy = :deny
16
+ @strategy = nil
16
17
  @role_detector = nil
17
18
  @forbidden_cbk = nil
18
19
  @actions = {}
@@ -21,6 +22,14 @@ module Pastore
21
22
  @forced_guards = []
22
23
  end
23
24
 
25
+ def role_detector
26
+ @role_detector || @super_guards&.role_detector
27
+ end
28
+
29
+ def forbidden_cbk
30
+ @forbidden_cbk || @super_guards&.forbidden_cbk
31
+ end
32
+
24
33
  def use_allow_strategy!
25
34
  @strategy = :allow
26
35
  end
@@ -29,6 +38,10 @@ module Pastore
29
38
  @strategy = :deny
30
39
  end
31
40
 
41
+ def strategy
42
+ @strategy || @super_guards&.strategy || :deny
43
+ end
44
+
32
45
  def permit_role(*roles)
33
46
  new_roles = [roles].flatten.compact.uniq.map(&:to_s)
34
47
  conflicts = @buffer.fetch(:denied_roles, []) & new_roles
@@ -101,9 +114,9 @@ module Pastore
101
114
 
102
115
  # Returns the current role for the controller.
103
116
  def current_role(controller)
104
- return nil if @role_detector.blank?
117
+ return nil if role_detector.blank?
105
118
 
106
- controller.instance_exec(&@role_detector)&.to_s
119
+ controller.instance_exec(&role_detector)&.to_s
107
120
  end
108
121
 
109
122
  def access_granted?(controller, action_name) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
@@ -119,7 +132,7 @@ module Pastore
119
132
 
120
133
  return false if action&.dig(:denied_roles)&.include?(role)
121
134
 
122
- @strategy == :allow || (@strategy == :deny && action&.dig(:permitted_roles)&.include?(role)) || false
135
+ strategy == :allow || (strategy == :deny && action&.dig(:permitted_roles)&.include?(role)) || false
123
136
  end
124
137
 
125
138
  private
@@ -28,7 +28,7 @@ module Pastore
28
28
  attr_accessor :_pastore_guards
29
29
 
30
30
  def pastore_guards
31
- self._pastore_guards ||= Pastore::Guards::Settings.new
31
+ self._pastore_guards ||= Pastore::Guards::Settings.new(superclass)
32
32
  end
33
33
 
34
34
  # Sets the logic to use for current role detection.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pastore
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pastore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Groza Sergiu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-01 00:00:00.000000000 Z
11
+ date: 2023-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails