canic_core/access/
guard.rs1use crate::{
2 access::AccessError, ops::storage::state::app::AppStateOps,
3 storage::stable::state::app::AppMode,
4};
5use thiserror::Error as ThisError;
6
7#[derive(Debug, ThisError)]
13pub enum GuardAccessError {
14 #[error("application is disabled")]
15 AppDisabled,
16
17 #[error("application is in readonly mode")]
18 AppReadonly,
19}
20
21pub fn guard_app_query() -> Result<(), AccessError> {
27 let mode = AppStateOps::get_mode();
28
29 match mode {
30 AppMode::Enabled | AppMode::Readonly => Ok(()),
31 AppMode::Disabled => Err(GuardAccessError::AppDisabled.into()),
32 }
33}
34
35pub fn guard_app_update() -> Result<(), AccessError> {
42 let mode = AppStateOps::get_mode();
43
44 match mode {
45 AppMode::Enabled => Ok(()),
46 AppMode::Readonly => Err(GuardAccessError::AppReadonly.into()),
47 AppMode::Disabled => Err(GuardAccessError::AppDisabled.into()),
48 }
49}