| 201 | } |
| 202 | |
| 203 | pub(crate) fn ensure_deny_rule(raw: &mut serde_json::Map<String, serde_json::Value>) -> bool { |
| 204 | let permissions = raw |
| 205 | .entry("permissions".to_string()) |
| 206 | .or_insert_with(|| serde_json::json!({})); |
| 207 | |
| 208 | let Some(permissions_obj) = permissions.as_object_mut() else { |
| 209 | return false; |
| 210 | }; |
| 211 | |
| 212 | let deny = permissions_obj |
| 213 | .entry("deny".to_string()) |
| 214 | .or_insert_with(|| serde_json::json!([])); |
| 215 | |
| 216 | let Some(deny_arr) = deny.as_array_mut() else { |
| 217 | return false; |
| 218 | }; |
| 219 | |
| 220 | let rule_value = serde_json::Value::String(METADATA_DENY_RULE.to_string()); |
| 221 | if deny_arr.contains(&rule_value) { |
| 222 | return false; |
| 223 | } |
| 224 | |
| 225 | deny_arr.push(rule_value); |
| 226 | true |
| 227 | } |
| 228 | |
| 229 | pub(crate) fn remove_deny_rule(raw: &mut serde_json::Map<String, serde_json::Value>) { |
| 230 | let Some(permissions) = raw.get_mut("permissions") else { |