passpartu 0.2.2 → 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
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