cannie 0.2.0 → 0.2.1
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 +4 -4
- data/README.md +8 -0
- data/lib/cannie/rule.rb +11 -3
- data/lib/cannie/version.rb +1 -1
- data/spec/cannie/rule_spec.rb +22 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c13f08328b1aaa79398982b6005e90cf997d4c0
|
4
|
+
data.tar.gz: 8f3faaa516d773988f4d7a4f381f418f903da6c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75f7491acb62968bdcd8bd82d1ab88d5a7a0a544376ab87b6d4d7875c86f944c3588cf04fcde21a7a2956a9a9dc4e6ec270fc3fb7ee5777f30076c2917db08db
|
7
|
+
data.tar.gz: fff01d347bc693e53c2b2ccba2df544f7b3257512cc8e64b67a6f5d0db7417ebf76ae8d3e925d17300d83b4bd842f3a29b4a2b46ade17eaf68b54d6c95be51e5
|
data/README.md
CHANGED
@@ -63,6 +63,14 @@ or
|
|
63
63
|
|
64
64
|
allow :index, on: :posts, unless: ->{ user.guest? }
|
65
65
|
|
66
|
+
or
|
67
|
+
|
68
|
+
allow :index, on: :posts, if: &:admin?
|
69
|
+
|
70
|
+
or
|
71
|
+
|
72
|
+
allow :index, on: :posts, unless: &:admin?
|
73
|
+
|
66
74
|
These conditions are executed in context of `Permissions` object and its possible to use `user` method to access user that was passed to `Permissions::initialize`.
|
67
75
|
|
68
76
|
### Checking permissions
|
data/lib/cannie/rule.rb
CHANGED
@@ -14,11 +14,19 @@ module Cannie
|
|
14
14
|
attr_reader :_if, :_unless
|
15
15
|
|
16
16
|
def if?(permissions)
|
17
|
-
_if ?
|
17
|
+
_if ? exec_condition(_if, permissions) : true
|
18
18
|
end
|
19
19
|
|
20
20
|
def unless?(permissions)
|
21
|
-
_unless ? !
|
21
|
+
_unless ? !exec_condition(_unless, permissions) : true
|
22
|
+
end
|
23
|
+
|
24
|
+
def exec_condition(condition, context)
|
25
|
+
if condition.is_a?(Symbol)
|
26
|
+
context.instance_eval(&condition)
|
27
|
+
else
|
28
|
+
context.instance_exec(&condition)
|
29
|
+
end
|
22
30
|
end
|
23
31
|
end
|
24
|
-
end
|
32
|
+
end
|
data/lib/cannie/version.rb
CHANGED
data/spec/cannie/rule_spec.rb
CHANGED
@@ -42,7 +42,17 @@ describe Cannie::Rule do
|
|
42
42
|
|
43
43
|
it 'returns false if passed if-condition evaluated in scope of passed argument return false' do
|
44
44
|
rule = described_class.new(:index, 'entries', if: -> { admin? })
|
45
|
-
expect(rule.applies_to?(permissions.new
|
45
|
+
expect(rule.applies_to?(permissions.new)).to be_false
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'evaluates if-condition specified as symbol' do
|
49
|
+
rule = described_class.new(:index, 'entries', if: :admin?)
|
50
|
+
expect(rule.applies_to?(permissions.new(true))).to be_true
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'evaluates if-condition specified as proc' do
|
54
|
+
rule = described_class.new(:index, 'entries', if: proc { admin? })
|
55
|
+
expect(rule.applies_to?(permissions.new(true))).to be_true
|
46
56
|
end
|
47
57
|
|
48
58
|
it 'returns true if passed unless-condition evaluated in scope of passed argument return false' do
|
@@ -55,9 +65,19 @@ describe Cannie::Rule do
|
|
55
65
|
expect(rule.applies_to?(permissions.new(true))).to be_false
|
56
66
|
end
|
57
67
|
|
68
|
+
it 'evaluates unless-condition specified as symbol' do
|
69
|
+
rule = described_class.new(:index, 'entries', unless: :admin?)
|
70
|
+
expect(rule.applies_to?(permissions.new(false))).to be_true
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'evaluates unless-condition specified as proc' do
|
74
|
+
rule = described_class.new(:index, 'entries', unless: proc { admin? })
|
75
|
+
expect(rule.applies_to?(permissions.new(false))).to be_true
|
76
|
+
end
|
77
|
+
|
58
78
|
it 'returns true if all conditions returned true' do
|
59
79
|
rule = described_class.new(:index, 'entries', if: -> { admin? }, unless: -> { guest? })
|
60
80
|
expect(rule.applies_to?(permissions.new(true))).to be_true
|
61
81
|
end
|
62
82
|
end
|
63
|
-
end
|
83
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cannie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hck
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|