canic_core/access/
policy.rs

1use crate::{Error, ThisError, access::AccessError, ops::storage::env::EnvOps};
2
3///
4/// PolicyError
5///
6
7#[derive(Debug, ThisError)]
8pub enum PolicyError {
9    #[error("this endpoint is only available on the prime subnet")]
10    NotPrimeSubnet,
11}
12
13impl From<PolicyError> for Error {
14    fn from(err: PolicyError) -> Self {
15        AccessError::PolicyError(err).into()
16    }
17}
18
19///
20/// Policies
21///
22
23#[allow(clippy::unused_async)]
24pub async fn is_prime_subnet() -> Result<(), Error> {
25    if EnvOps::is_prime_subnet() {
26        Ok(())
27    } else {
28        Err(PolicyError::NotPrimeSubnet.into())
29    }
30}