From f5223c781e05e244aa1d8a08a4fe66d97ab75613 Mon Sep 17 00:00:00 2001 From: yxrxy Date: Wed, 25 Feb 2026 13:32:34 +0800 Subject: [PATCH] fix: update policy attach to use right endpoint --- crates/s3/src/admin.rs | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/crates/s3/src/admin.rs b/crates/s3/src/admin.rs index f0680a2..7a7fd21 100644 --- a/crates/s3/src/admin.rs +++ b/crates/s3/src/admin.rs @@ -335,14 +335,6 @@ struct ServiceAccountInfo { expiration: Option, } -/// Request body for set policy -#[derive(Debug, Serialize)] -#[serde(rename_all = "camelCase")] -struct SetPolicyApiRequest { - policy_name: String, - entity_name: String, -} - /// Request body for setting bucket quota #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] @@ -498,19 +490,15 @@ impl AdminApi for AdminClient { entity_name: &str, ) -> Result<()> { let policy_name = policy_names.join(","); - let entity_type_str = match entity_type { - PolicyEntity::User => "user", - PolicyEntity::Group => "group", - }; + let is_group = entity_type == PolicyEntity::Group; - let body = serde_json::to_vec(&SetPolicyApiRequest { - policy_name, - entity_name: entity_name.to_string(), - }) - .map_err(Error::Json)?; + let query = [ + ("policyName", policy_name.as_str()), + ("userOrGroup", entity_name), + ("isGroup", if is_group { "true" } else { "false" }), + ]; - let query = [("entityType", entity_type_str)]; - self.request_no_response(Method::PUT, "/set-policy", Some(&query), Some(&body)) + self.request_no_response(Method::PUT, "/set-user-or-group-policy", Some(&query), None) .await }