casbin-ruby 1.0.8 → 1.0.9

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: 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