astrid_capabilities/
error.rs1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum CapabilityError {
8 #[error("capability token expired: {token_id}")]
10 TokenExpired {
11 token_id: String,
13 },
14
15 #[error("capability token revoked: {token_id}")]
17 TokenRevoked {
18 token_id: String,
20 },
21
22 #[error("capability token not found: {token_id}")]
24 TokenNotFound {
25 token_id: String,
27 },
28
29 #[error("single-use token already used: {token_id}")]
31 TokenAlreadyUsed {
32 token_id: String,
34 },
35
36 #[error("insufficient capability: required {required} for {resource}")]
38 InsufficientPermission {
39 required: String,
41 resource: String,
43 },
44
45 #[error("invalid token signature")]
47 InvalidSignature,
48
49 #[error("invalid resource pattern: {pattern} - {reason}")]
51 InvalidPattern {
52 pattern: String,
54 reason: String,
56 },
57
58 #[error("storage error: {0}")]
60 StorageError(String),
61
62 #[error("crypto error: {0}")]
64 CryptoError(#[from] astrid_crypto::CryptoError),
65
66 #[error("serialization error: {0}")]
68 SerializationError(String),
69}
70
71pub type CapabilityResult<T> = Result<T, CapabilityError>;