From 45df4d0d9b577fecee798d672695fe24ff57fb1b Mon Sep 17 00:00:00 2001 From: mo khan Date: Tue, 15 Jul 2025 16:37:08 -0600 Subject: feat: migrate from Cedar to SpiceDB authorization system This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema. --- vendor/petgraph/src/operator.rs | 83 ----------------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 vendor/petgraph/src/operator.rs (limited to 'vendor/petgraph/src/operator.rs') diff --git a/vendor/petgraph/src/operator.rs b/vendor/petgraph/src/operator.rs deleted file mode 100644 index baa4f12b..00000000 --- a/vendor/petgraph/src/operator.rs +++ /dev/null @@ -1,83 +0,0 @@ -//! Operators for creating new graphs from existings ones. -use super::graph::{Graph, IndexType}; -use super::EdgeType; -use crate::visit::IntoNodeReferences; - -/// \[Generic\] complement of the graph -/// -/// Computes the graph complement of the input Graph and stores it -/// in the provided empty output Graph. -/// -/// The function does not create self-loops. -/// -/// Computes in **O(|V|^2*log(|V|))** time (average). -/// -/// Returns the complement. -/// -/// # Example -/// ```rust -/// use petgraph::Graph; -/// use petgraph::operator::complement; -/// use petgraph::prelude::*; -/// -/// let mut graph: Graph<(),(),Directed> = Graph::new(); -/// let a = graph.add_node(()); // node with no weight -/// let b = graph.add_node(()); -/// let c = graph.add_node(()); -/// let d = graph.add_node(()); -/// -/// graph.extend_with_edges(&[ -/// (a, b), -/// (b, c), -/// (c, d), -/// ]); -/// // a ----> b ----> c ----> d -/// -/// let mut output: Graph<(), (), Directed> = Graph::new(); -/// -/// complement(&graph, &mut output, ()); -/// -/// let mut expected_res: Graph<(), (), Directed> = Graph::new(); -/// let a = expected_res.add_node(()); -/// let b = expected_res.add_node(()); -/// let c = expected_res.add_node(()); -/// let d = expected_res.add_node(()); -/// expected_res.extend_with_edges(&[ -/// (a, c), -/// (a, d), -/// (b, a), -/// (b, d), -/// (c, a), -/// (c, b), -/// (d, a), -/// (d, b), -/// (d, c), -/// ]); -/// -/// for x in graph.node_indices() { -/// for y in graph.node_indices() { -/// assert_eq!(output.contains_edge(x, y), expected_res.contains_edge(x, y)); -/// } -/// } -/// ``` -pub fn complement( - input: &Graph, - output: &mut Graph, - weight: E, -) where - Ty: EdgeType, - Ix: IndexType, - E: Clone, - N: Clone, -{ - for (_node, weight) in input.node_references() { - output.add_node(weight.clone()); - } - for x in input.node_indices() { - for y in input.node_indices() { - if x != y && !input.contains_edge(x, y) { - output.add_edge(x, y, weight.clone()); - } - } - } -} -- cgit v1.2.3