diff --git a/server/src/content/template.rs b/server/src/content/template.rs index 9e248b60a..1efb8620a 100644 --- a/server/src/content/template.rs +++ b/server/src/content/template.rs @@ -430,6 +430,7 @@ impl TriangleDef { )); } + let role_set: std::collections::BTreeSet<&RoleId> = self.roles.iter().collect(); for (i, constraint) in self.relationship_constraints.iter().enumerate() { if constraint.required_trust.min > constraint.required_trust.max { return Err(format!( @@ -437,6 +438,12 @@ impl TriangleDef { i, constraint.required_trust.min, constraint.required_trust.max )); } + if !role_set.contains(&constraint.with_role) { + return Err(format!( + "relationship_constraints[{}]: with_role '{}' not in triangle roles", + i, constraint.with_role.0 + )); + } } Ok(())