passpartu 0.2.2 → 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
2
  SHA256:
3
- metadata.gz: f1ecfd0cf655d33f41e7b05bab6ed9aefbfe4a7c5b4985695883851339943e0f
4
- data.tar.gz: b5686621ba17bb45f03485ec71c57c46e214cf4ac561a895d3701618827c436d
3
+ metadata.gz: fe52a8ddad07ca66f848d9900545eb6fcab85ef4271079f9e8d46dcf941aa2a9
4
+ data.tar.gz: 593cbcfa174a0fe53589cb4fe483de281d9a3559dd10da778c40953761c97741
5
5
  SHA512:
6
- metadata.gz: 5c267983ac188e8fd2f9d15438fd6f959484a9e098517fd858655084ddc3c76e977ceca118668c457a56ae077a6ed646190906193fda812cf44a36ecbba1a6d8
7
- data.tar.gz: a085a85f403a23ad64f6fb830aede3d40197c87b12dd852ca1d6aa9b3ad180cfb3348205753b1787700bf3fb956f51e567ab6441def1c6ddd3a195071fd865d4
6
+ metadata.gz: fb0ee1f3bc94d4d01c82d9cb8672d825adf38ae81e6e28c6df424ed6df1a240a81b0b2d62d241fc06680d1f462e84dbd5dd1ec87e1225cb2a6e0f6327c32fbdf
7
+ data.tar.gz: ed43ff273b41553969511af597d83f18705ea64122564d5fcc59eb4ad098735feec4a6db0c92d88f5d343769f133419bae196b6fb40723e618616c8b08a7f000
data/README.md CHANGED
@@ -47,7 +47,10 @@ admin:
47
47
  product:
48
48
  create: false
49
49
  edit: true
50
- delete: true
50
+ delete: true
51
+ items:
52
+ crud: true
53
+ delete: false
51
54
  manager:
52
55
  order:
53
56
  create: true
@@ -59,7 +62,10 @@ manager:
59
62
  delete: false
60
63
 
61
64
  ```
62
-
65
+ #### Crud
66
+ It's possible to use `crud` key to set values for `create`, `read`, `update`, `delete` at once.
67
+ `create`, `read`, `update`, `delete` has higher priority than `crud`
68
+ In case `crud: true` and `delete: false` - result `false`
63
69
 
64
70
  ## Configuration
65
71
 
@@ -1,6 +1,8 @@
1
1
  module Passpartu
2
2
  class Verify
3
- attr_reader :role, :keys
3
+ CRUD_KEY = 'crud'.freeze
4
+
5
+ attr_reader :role, :keys, :result
4
6
  def initialize(role, keys)
5
7
  @role = role
6
8
  @keys = keys.map(&:to_s)
@@ -11,7 +13,33 @@ module Passpartu
11
13
  end
12
14
 
13
15
  def call
14
- Passpartu::ValidateResult.call(Passpartu.policy.dig(role.to_s, *keys))
16
+ check
17
+ check_crud if policy_missed?
18
+
19
+ validate_result
20
+ end
21
+
22
+ private
23
+
24
+ def check
25
+ @result = Passpartu.policy.dig(role.to_s, *keys)
26
+ end
27
+
28
+ def check_crud
29
+ change_crud_key
30
+ check
31
+ end
32
+
33
+ def change_crud_key
34
+ @keys[-1] = CRUD_KEY
35
+ end
36
+
37
+ def policy_missed?
38
+ @result.nil?
39
+ end
40
+
41
+ def validate_result
42
+ Passpartu::ValidateResult.call(result)
15
43
  end
16
44
  end
17
45
  end
@@ -1,3 +1,3 @@
1
1
  module Passpartu
2
- VERSION = '0.2.2'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passpartu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OrestF
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-09 00:00:00.000000000 Z
11
+ date: 2019-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  version: '0'
90
90
  requirements: []
91
91
  rubyforge_project:
92
- rubygems_version: 2.7.7
92
+ rubygems_version: 2.7.3
93
93
  signing_key:
94
94
  specification_version: 4
95
95
  summary: Passpartu makes policies great again