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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52748f22fb42a7b98e526eb475ed1826028679e2c85396cb6951bf2f007c082d
4
- data.tar.gz: 40f1e3d7ad0cf3d49fd21fe4cb2b5312416bbba7b9d8e23001674d9dbebefff4
3
+ metadata.gz: 84e517ce25e2018d9bcc8d075c9b0e898861c450b3dea1cec2d835e1d6144925
4
+ data.tar.gz: c8d5448a7aa4fbba4df0a7ce2fa1330b5bfb57bffa31473008ec80015d0ed4d5
5
5
  SHA512:
6
- metadata.gz: d714d3c773d7d65df64051133979f5c099baa5c683d46323e63c4855c8e612ffc010cc0f3c8b28bab8dec1de1e1d3c052c94212ed4a889664eb75ec935dbb6ca
7
- data.tar.gz: a1c09f4287fbd1244fa189efc539a115f5c32c34fef9e9ab310b41800600d9913567a63bccc9ac36166cdbf7a479efe7cccd379a371d096b2703fc86734a846f
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, [params])
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, [params])
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)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Casbin
4
- VERSION = '1.0.8'
4
+ VERSION = '1.0.9'
5
5
  end
@@ -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.8
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-16 00:00:00.000000000 Z
12
+ date: 2021-08-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: keisan