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-rs.git
The following commit(s) were added to refs/heads/master by this push:
new ec23250 fix: skip role link updates for rejected grouping mutations
ec23250 is described below
commit ec23250c21a3e30cf1c7c863bbdf1c9b0e21ca98
Author: Yang Luo <[email protected]>
AuthorDate: Fri Oct 9 22:19:50 2026 +0800
fix: skip role link updates for rejected grouping mutations
---
src/internal_api.rs | 25 ++++++++++++++++++++-----
src/rbac/default_role_manager.rs | 4 ++++
2 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/src/internal_api.rs b/src/internal_api.rs
index b3dde4b..1d1ada5 100644
--- a/src/internal_api.rs
+++ b/src/internal_api.rs
@@ -118,7 +118,10 @@ where
self.emit(Event::ClearCache, EventData::ClearCache);
}
}
- if sec != "g" || !self.has_auto_build_role_links_enabled() {
+ if sec != "g"
+ || !rule_added
+ || !self.has_auto_build_role_links_enabled()
+ {
return Ok(rule_added);
}
#[cfg(not(feature = "incremental"))]
@@ -202,7 +205,10 @@ where
self.emit(Event::ClearCache, EventData::ClearCache);
}
}
- if sec != "g" || !self.has_auto_build_role_links_enabled() {
+ if sec != "g"
+ || !rules_added
+ || !self.has_auto_build_role_links_enabled()
+ {
return Ok(rules_added);
}
#[cfg(not(feature = "incremental"))]
@@ -286,7 +292,10 @@ where
self.emit(Event::ClearCache, EventData::ClearCache);
}
}
- if sec != "g" || !self.has_auto_build_role_links_enabled() {
+ if sec != "g"
+ || !rule_removed
+ || !self.has_auto_build_role_links_enabled()
+ {
return Ok(rule_removed);
}
#[cfg(not(feature = "incremental"))]
@@ -370,7 +379,10 @@ where
self.emit(Event::ClearCache, EventData::ClearCache);
}
}
- if sec != "g" || !self.has_auto_build_role_links_enabled() {
+ if sec != "g"
+ || !rules_removed
+ || !self.has_auto_build_role_links_enabled()
+ {
return Ok(rules_removed);
}
#[cfg(not(feature = "incremental"))]
@@ -439,7 +451,10 @@ where
self.emit(Event::ClearCache, EventData::ClearCache);
}
}
- if sec != "g" || !self.has_auto_build_role_links_enabled() {
+ if sec != "g"
+ || !rules_removed
+ || !self.has_auto_build_role_links_enabled()
+ {
return Ok((rules_removed, rules));
}
#[cfg(not(feature = "incremental"))]
diff --git a/src/rbac/default_role_manager.rs b/src/rbac/default_role_manager.rs
index a81a1fa..23f096f 100644
--- a/src/rbac/default_role_manager.rs
+++ b/src/rbac/default_role_manager.rs
@@ -379,6 +379,10 @@ impl RoleManager for DefaultRoleManager {
name2: &str,
domain: Option<&str>,
) -> Result<()> {
+ if name1 == name2 {
+ return Ok(());
+ }
+
if !self.domain_has_role(name1, domain)
|| !self.domain_has_role(name2, domain)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]