casbin-ruby 1.0.8 → 1.0.9
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/lib/casbin-ruby/management_enforcer.rb +2 -2
- data/lib/casbin-ruby/model/policy.rb +7 -0
- data/lib/casbin-ruby/version.rb +1 -1
- data/spec/casbin/enforcer_spec.rb +28 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84e517ce25e2018d9bcc8d075c9b0e898861c450b3dea1cec2d835e1d6144925
|
4
|
+
data.tar.gz: c8d5448a7aa4fbba4df0a7ce2fa1330b5bfb57bffa31473008ec80015d0ed4d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f5b72a96bf42091dceb1118d5fd33491e51af3afe808a5b6782efd51bc1b7df192bdacb5509c4748190507e79efb564b20ad49c352ed8bf5cf8ec21b9a25405
|
7
|
+
data.tar.gz: 77fa89b6b8379c5e6b774ebc2c029491e61495c008088a15634f29089d072a702840ab5c65d5e2a6ae5c16cdaa6842dea8fb13167b4e28a4d54355d0f2a1b524
|
@@ -182,7 +182,7 @@ module Casbin
|
|
182
182
|
if params.size == 1 && params[0].is_a?(Array)
|
183
183
|
parent_remove_policy('p', ptype, params[0])
|
184
184
|
else
|
185
|
-
parent_remove_policy('p', ptype,
|
185
|
+
parent_remove_policy('p', ptype, params)
|
186
186
|
end
|
187
187
|
end
|
188
188
|
|
@@ -235,7 +235,7 @@ module Casbin
|
|
235
235
|
rule_added = if params.size == 1 && params[0].is_a?(Array)
|
236
236
|
parent_add_policy('g', ptype, params[0])
|
237
237
|
else
|
238
|
-
parent_add_policy('g', ptype,
|
238
|
+
parent_add_policy('g', ptype, params)
|
239
239
|
end
|
240
240
|
|
241
241
|
auto_build_role_links ? build_role_links : rule_added
|
@@ -112,6 +112,13 @@ module Casbin
|
|
112
112
|
true
|
113
113
|
end
|
114
114
|
|
115
|
+
# gets rules based on field filters from a policy.
|
116
|
+
def get_filtered_policy(sec, ptype, field_index, *field_values)
|
117
|
+
model[sec][ptype].policy.select do |rule|
|
118
|
+
field_values.select { |value| rule[field_index] == value }.any?
|
119
|
+
end.compact
|
120
|
+
end
|
121
|
+
|
115
122
|
# removes policy rules based on field filters from the model.
|
116
123
|
def remove_filtered_policy(sec, ptype, field_index, *field_values)
|
117
124
|
return false unless model.key?(sec)
|
data/lib/casbin-ruby/version.rb
CHANGED
@@ -29,6 +29,11 @@ describe Casbin::Enforcer do
|
|
29
29
|
expect(enf.model).not_to be_nil
|
30
30
|
end
|
31
31
|
|
32
|
+
it '#get_filtered_policy' do
|
33
|
+
expect(enf.enforce('alice', 'data1', 'read')).to be_truthy
|
34
|
+
expect(enf.get_filtered_policy(0, 'alice')).to match_array([%w[alice data1 read]])
|
35
|
+
end
|
36
|
+
|
32
37
|
it '#remove_filtered_policy' do
|
33
38
|
expect(enf.enforce('alice', 'data1', 'read')).to be_truthy
|
34
39
|
enf.remove_filtered_policy(1, 'data1')
|
@@ -48,6 +53,17 @@ describe Casbin::Enforcer do
|
|
48
53
|
expect(enf.enforce('alice', 'data4', 'read')).to be_truthy
|
49
54
|
expect(enf.enforce('alice', 'data5', 'read')).to be_truthy
|
50
55
|
end
|
56
|
+
|
57
|
+
it '#remove_policy' do
|
58
|
+
enf.add_policy('alice', 'data3', 'read')
|
59
|
+
expect(enf.enforce('alice', 'data3', 'read')).to be_truthy
|
60
|
+
enf.remove_policy('alice', 'data3', 'read')
|
61
|
+
expect(enf.enforce('alice', 'data3', 'read')).to be_falsey
|
62
|
+
enf.add_policy('alice', 'data3', 'read')
|
63
|
+
expect(enf.enforce('alice', 'data3', 'read')).to be_truthy
|
64
|
+
enf.remove_policy(%w[alice data3 read])
|
65
|
+
expect(enf.enforce('alice', 'data3', 'read')).to be_falsey
|
66
|
+
end
|
51
67
|
end
|
52
68
|
|
53
69
|
describe 'basic without spaces' do
|
@@ -160,6 +176,18 @@ describe Casbin::Enforcer do
|
|
160
176
|
expect(enf.enforce('alice', 'data2', 'write')).to be_truthy
|
161
177
|
expect(enf.enforce('bogus', 'data2', 'write')).to be_falsey
|
162
178
|
end
|
179
|
+
|
180
|
+
it '#add_grouping_policy' do
|
181
|
+
expect(enf.enforce('alice', 'data3', 'read')).to be_falsey
|
182
|
+
enf.add_policy('base', 'data3', 'read')
|
183
|
+
enf.add_policy(%w[alice data4 read])
|
184
|
+
enf.add_grouping_policy('alice', 'base')
|
185
|
+
enf.add_grouping_policy(%w[bob base])
|
186
|
+
expect(enf.enforce('alice', 'data3', 'read')).to be_truthy
|
187
|
+
expect(enf.enforce('bob', 'data3', 'read')).to be_truthy
|
188
|
+
expect(enf.enforce('alice', 'data4', 'read')).to be_truthy
|
189
|
+
expect(enf.enforce('bob', 'data4', 'read')).to be_falsey
|
190
|
+
end
|
163
191
|
end
|
164
192
|
|
165
193
|
describe 'rbac empty policy' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: casbin-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Kutyavin
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-08-
|
12
|
+
date: 2021-08-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: keisan
|