canic_core/access/
mod.rs

1/// Access-layer errors returned by user-defined auth, guard, and rule hooks.
2///
3/// These errors are framework-agnostic and are converted into InternalError
4/// immediately at the framework boundary.
5pub mod auth;
6pub mod env;
7pub mod guard;
8pub mod metrics;
9pub mod rule;
10
11use thiserror::Error as ThisError;
12
13///
14/// AccessError
15///
16
17#[derive(Debug, ThisError)]
18pub enum AccessError {
19    #[error(transparent)]
20    Auth(#[from] auth::AuthAccessError),
21
22    #[error(transparent)]
23    Env(#[from] env::EnvAccessError),
24
25    #[error(transparent)]
26    Guard(#[from] guard::GuardAccessError),
27
28    #[error(transparent)]
29    Rule(#[from] rule::RuleAccessError),
30
31    #[error("access denied: {0}")]
32    Denied(String),
33}
34
35/// Use this to return a custom access failure from endpoint-specific rules.
36#[must_use]
37pub fn deny(reason: impl Into<String>) -> AccessError {
38    AccessError::Denied(reason.into())
39}