| 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 { |
| 231 | return; |
| 232 | }; |
| 233 | let Some(permissions_obj) = permissions.as_object_mut() else { |
| 234 | return; |
| 235 | }; |
| 236 | let Some(deny) = permissions_obj.get_mut("deny") else { |
| 237 | return; |
| 238 | }; |
| 239 | let Some(deny_arr) = deny.as_array_mut() else { |
| 240 | return; |
| 241 | }; |
| 242 | |
| 243 | let rule_value = serde_json::Value::String(METADATA_DENY_RULE.to_string()); |
| 244 | deny_arr.retain(|v| v != &rule_value); |
| 245 | |
| 246 | if deny_arr.is_empty() { |
| 247 | permissions_obj.remove("deny"); |
| 248 | } |
| 249 | if permissions_obj.is_empty() { |
| 250 | raw.remove("permissions"); |
| 251 | } |
| 252 | } |