Merge pull request 'hide keys without any permissions from admin api' (#1123) from 1686a/hide-empty-keys into main-v2

Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/1123
This commit is contained in:
Alex
2025-08-03 11:18:51 +00:00
3 changed files with 26 additions and 25 deletions
-1
View File
@@ -23,7 +23,6 @@ use garage_util::time::now_msec;
use garage_api_common::generic_server::*;
use garage_api_common::helpers::*;
use crate::api::AdminApiRequest::GetCurrentAdminTokenInfo;
use crate::api::*;
use crate::error::*;
use crate::router_v0;
+13 -12
View File
@@ -697,20 +697,21 @@ async fn bucket_info_results(
}),
keys: relevant_keys
.into_values()
.map(|key| {
.filter_map(|key| {
let p = key.state.as_option().unwrap();
GetBucketInfoKey {
let permissions = p
.authorized_buckets
.get(&bucket.id)
.filter(|p| p.is_any())
.map(|p| ApiBucketKeyPerm {
read: p.allow_read,
write: p.allow_write,
owner: p.allow_owner,
})?;
Some(GetBucketInfoKey {
access_key_id: key.key_id,
name: p.name.get().to_string(),
permissions: p
.authorized_buckets
.get(&bucket.id)
.map(|p| ApiBucketKeyPerm {
read: p.allow_read,
write: p.allow_write,
owner: p.allow_owner,
})
.unwrap_or_default(),
permissions,
bucket_local_aliases: p
.local_aliases
.items()
@@ -718,7 +719,7 @@ async fn bucket_info_results(
.filter(|(_, _, b)| *b == Some(bucket.id))
.map(|(n, _, _)| n.to_string())
.collect::<Vec<_>>(),
}
})
})
.collect::<Vec<_>>(),
objects: *counters.get(OBJECTS).unwrap_or(&0),
+13 -12
View File
@@ -230,9 +230,18 @@ async fn key_info_results(
},
buckets: relevant_buckets
.into_values()
.map(|bucket| {
.filter_map(|bucket| {
let state = bucket.state.as_option().unwrap();
KeyInfoBucketResponse {
let permissions = key_state
.authorized_buckets
.get(&bucket.id)
.filter(|p| p.is_any())
.map(|p| ApiBucketKeyPerm {
read: p.allow_read,
write: p.allow_write,
owner: p.allow_owner,
})?;
Some(KeyInfoBucketResponse {
id: hex::encode(bucket.id),
global_aliases: state
.aliases
@@ -248,16 +257,8 @@ async fn key_info_results(
.filter(|((k, _), _, a)| *a && *k == key.key_id)
.map(|((_, n), _, _)| n.to_string())
.collect::<Vec<_>>(),
permissions: key_state
.authorized_buckets
.get(&bucket.id)
.map(|p| ApiBucketKeyPerm {
read: p.allow_read,
write: p.allow_write,
owner: p.allow_owner,
})
.unwrap_or_default(),
}
permissions,
})
})
.collect::<Vec<_>>(),
};