This is an automated email from the ASF dual-hosted git repository.
hsluoyz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/casbin-Casbin.NET.git
The following commit(s) were added to refs/heads/master by this push:
new 70f54fe fix: allow enforcer with only non-default policy effect types
70f54fe is described below
commit 70f54fea484abdc48ba39142d4786f880f2d664c
Author: Yang Luo <[email protected]>
AuthorDate: Mon Nov 2 00:31:16 2026 +0800
fix: allow enforcer with only non-default policy effect types
---
Casbin.UnitTests/ModelTests/ModelTest.cs | 29 +++++++++++++++++++++++++++++
Casbin/Extensions/Model/ModelExtension.cs | 10 +++++++---
2 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/Casbin.UnitTests/ModelTests/ModelTest.cs
b/Casbin.UnitTests/ModelTests/ModelTest.cs
index 67b9a0a..343ae14 100644
--- a/Casbin.UnitTests/ModelTests/ModelTest.cs
+++ b/Casbin.UnitTests/ModelTests/ModelTest.cs
@@ -603,6 +603,35 @@ public partial class ModelTest
Assert.False(e.Enforce(context, new { Age = 70 }, "data2", "read"));
}
+ [Fact]
+ public void TestOnlyNonDefaultTypeModel()
+ {
+ IModel model = DefaultModel.Create();
+ model.AddDef("r", "r2", "sub, obj, act");
+ model.AddDef("p", "p2", "sub, obj, act");
+ model.AddDef("g", "g", "_, _");
+ model.AddDef("e", "e2", "some(where (p.eft == allow))");
+ model.AddDef("m", "m2", "g(r2.sub, p2.sub) && r2.obj == p2.obj &&
r2.act == p2.act");
+
+ Enforcer e = new(model);
+ e.AddNamedPolicy(PermConstants.PolicyType2, "alice", "data1", "read");
+ e.AddNamedPolicy(PermConstants.PolicyType2, "bob", "data2", "write");
+ e.BuildRoleLinks();
+
+ EnforceContext context = e.CreateContext
+ (
+ PermConstants.RequestType2,
+ PermConstants.PolicyType2,
+ PermConstants.PolicyEffectType2,
+ PermConstants.MatcherType2
+ );
+
+ Assert.True(e.Enforce(context, "alice", "data1", "read"));
+ Assert.False(e.Enforce(context, "alice", "data1", "write"));
+ Assert.True(e.Enforce(context, "bob", "data2", "write"));
+ Assert.False(e.Enforce(context, "bob", "data2", "read"));
+ }
+
[Fact]
public void TestAbacComment()
{
diff --git a/Casbin/Extensions/Model/ModelExtension.cs
b/Casbin/Extensions/Model/ModelExtension.cs
index b2ee445..65d43db 100644
--- a/Casbin/Extensions/Model/ModelExtension.cs
+++ b/Casbin/Extensions/Model/ModelExtension.cs
@@ -12,9 +12,13 @@ namespace Casbin.Model
{
public static bool SortPolicy(this IModel model)
{
- string value =
model.Sections.GetValue(PermConstants.Section.PolicyEffectSection,
- PermConstants.DefaultPolicyEffectType);
- switch (value)
+ if
(model.Sections.TryGetAssertion(PermConstants.Section.PolicyEffectSection,
+ PermConstants.DefaultPolicyEffectType, out
PolicyEffectAssertion assertion) is false)
+ {
+ return false;
+ }
+
+ switch (assertion.Value)
{
case PermConstants.PolicyEffect.Priority:
case PermConstants.PolicyEffect.PriorityDenyOverride:
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]