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-pycasbin.git


The following commit(s) were added to refs/heads/master by this push:
     new b7c36d9  fix: skip pattern loop in delete_link when no matching func
b7c36d9 is described below

commit b7c36d90dcd72fafd8cb0388d340f1788faf62d1
Author: Yang Luo <[email protected]>
AuthorDate: Thu Sep 24 22:43:55 2026 +0800

    fix: skip pattern loop in delete_link when no matching func
---
 casbin/rbac/default_role_manager/role_manager.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/casbin/rbac/default_role_manager/role_manager.py 
b/casbin/rbac/default_role_manager/role_manager.py
index 5ea0605..84a91b3 100644
--- a/casbin/rbac/default_role_manager/role_manager.py
+++ b/casbin/rbac/default_role_manager/role_manager.py
@@ -174,11 +174,12 @@ class RoleManager(RM):
         role = self._get_role(name2)
         user.remove_role(role)
 
-        for r in self.all_roles.values():
-            if r.name != user.name and self._matching_fn(user.name, r.name, 
MatchOrder.PATTERN_STR):
-                r.remove_role(role)
-            if r.name != role.name and self._matching_fn(role.name, r.name, 
MatchOrder.PATTERN_STR):
-                role.remove_role(r)
+        if self.matching_func != None:
+            for r in self.all_roles.values():
+                if r.name != user.name and self._matching_fn(user.name, 
r.name, MatchOrder.PATTERN_STR):
+                    r.remove_role(role)
+                if r.name != role.name and self._matching_fn(role.name, 
r.name, MatchOrder.PATTERN_STR):
+                    role.remove_role(r)
 
     def has_link(self, name1, name2, *domain):
         user = self._get_role(name1)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to