canic_core/access/
guard.rs1use crate::{
2 Error, ThisError,
3 access::AccessError,
4 model::memory::state::{AppMode, AppState},
5};
6
7#[derive(Debug, ThisError)]
12pub enum GuardError {
13 #[error("application is disabled")]
14 AppDisabled,
15
16 #[error("application is in readonly mode")]
17 AppReadonly,
18}
19
20impl From<GuardError> for Error {
21 fn from(err: GuardError) -> Self {
22 AccessError::GuardError(err).into()
23 }
24}
25
26pub fn guard_app_query() -> Result<(), Error> {
32 match AppState::get_mode() {
33 AppMode::Enabled | AppMode::Readonly => Ok(()),
34 AppMode::Disabled => Err(GuardError::AppDisabled.into()),
35 }
36}
37
38pub fn guard_app_update() -> Result<(), Error> {
45 match AppState::get_mode() {
46 AppMode::Enabled => Ok(()),
47 AppMode::Readonly => Err(GuardError::AppReadonly.into()),
48 AppMode::Disabled => Err(GuardError::AppDisabled.into()),
49 }
50}