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]