Add get_fields_to_validate_for_member()

This commit is contained in:
Sosthene 2024-11-29 09:08:19 +01:00
parent eda2dd687d
commit 541ad36d13

View File

@ -140,6 +140,30 @@ impl ProcessState {
self.encrypted_pcd == Value::Null || self.encrypted_pcd == Value::Null ||
self.pcd_commitment == Value::Null self.pcd_commitment == Value::Null
} }
pub fn get_fields_to_validate_for_member(&self, member: &Member) -> anyhow::Result<Vec<String>> {
let decrypted = self.decrypt_pcd()?;
let roles = decrypted.extract_roles()?;
let mut res: HashSet<String> = HashSet::new();
// Are we in that role?
for (_, role_def) in roles {
if !role_def.members.contains(member) {
continue;
} else {
// what are the fields we can modify?
for rule in role_def.validation_rules {
if rule.allows_modification() {
res.extend(rule.fields.iter().map(|f| f.clone()));
}
}
}
}
Ok(res.into_iter().collect())
}
} }
/// A process is basically a succession of states /// A process is basically a succession of states