mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-20 11:32:19 +00:00
Co-authored-by: GatewayJ <8352692332qq.com>
This commit is contained in:
+16
-12
@@ -1386,11 +1386,9 @@ where
|
||||
|
||||
let user_group_memberships = self.cache.user_group_memberships.load();
|
||||
members.iter().for_each(|member| {
|
||||
if let Some(m) = user_group_memberships.get(member) {
|
||||
let mut m = m.clone();
|
||||
m.insert(group.to_string());
|
||||
Cache::add_or_update(&self.cache.user_group_memberships, member, &m, OffsetDateTime::now_utc());
|
||||
}
|
||||
let mut m = user_group_memberships.get(member).cloned().unwrap_or_default();
|
||||
m.insert(group.to_string());
|
||||
Cache::add_or_update(&self.cache.user_group_memberships, member, &m, OffsetDateTime::now_utc());
|
||||
});
|
||||
|
||||
Ok(OffsetDateTime::now_utc())
|
||||
@@ -1518,13 +1516,19 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
let gi = self
|
||||
.cache
|
||||
.groups
|
||||
.load()
|
||||
.get(group)
|
||||
.cloned()
|
||||
.ok_or(Error::NoSuchGroup(group.to_string()))?;
|
||||
let gi = if members.is_empty() {
|
||||
// Reload from backend so we see latest members (e.g. after user was deleted elsewhere)
|
||||
let mut m = HashMap::new();
|
||||
self.api.load_group(group, &mut m).await?;
|
||||
m.get(group).cloned().ok_or(Error::NoSuchGroup(group.to_string()))?
|
||||
} else {
|
||||
self.cache
|
||||
.groups
|
||||
.load()
|
||||
.get(group)
|
||||
.cloned()
|
||||
.ok_or(Error::NoSuchGroup(group.to_string()))?
|
||||
};
|
||||
|
||||
if members.is_empty() && !gi.members.is_empty() {
|
||||
return Err(Error::GroupNotEmpty);
|
||||
|
||||
@@ -597,7 +597,7 @@ impl Store for ObjectStore {
|
||||
async fn delete_group_info(&self, name: &str) -> Result<()> {
|
||||
self.delete_iam_config(get_group_info_path(name)).await.map_err(|err| {
|
||||
if is_err_config_not_found(&err) {
|
||||
Error::NoSuchPolicy
|
||||
Error::NoSuchGroup(name.to_string())
|
||||
} else {
|
||||
err
|
||||
}
|
||||
@@ -607,7 +607,7 @@ impl Store for ObjectStore {
|
||||
async fn load_group(&self, name: &str, m: &mut HashMap<String, GroupInfo>) -> Result<()> {
|
||||
let u: GroupInfo = self.load_iam_config(get_group_info_path(name)).await.map_err(|err| {
|
||||
if is_err_config_not_found(&err) {
|
||||
Error::NoSuchPolicy
|
||||
Error::NoSuchGroup(name.to_string())
|
||||
} else {
|
||||
err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user