iop_coeus_node/policy/
registration.rs

1use super::*;
2
3pub trait RegistrationValidator {
4    fn validate(&self, parent_domain: &Domain, register: &DoRegister) -> Result<()>;
5}
6
7impl RegistrationValidator for RegistrationPolicy {
8    fn validate(&self, parent_domain: &Domain, register: &DoRegister) -> Result<()> {
9        match self {
10            Self::Owner => {
11                let child_owner = &register.owner;
12                let parent_owner = parent_domain.owner();
13                ensure!(
14                    child_owner == parent_owner,
15                    "Only {} can register a child of {}",
16                    parent_owner,
17                    parent_domain.name()
18                );
19            }
20            Self::Any => {}
21        };
22        Ok(())
23    }
24}