Skip to main content

lilo_im_core/
error.rs

1use thiserror::Error;
2
3use crate::types::{Action, Principal};
4
5#[derive(Debug, Clone, PartialEq, Eq, Error)]
6pub enum AuthzError {
7    #[error("unauthorized principal for action")]
8    Unauthorized {
9        principal: Principal,
10        action: Action,
11        reason: String,
12    },
13    #[error("unknown principal")]
14    UnknownPrincipal,
15    #[error("audit sink failed: {message}")]
16    Audit { message: String },
17    #[error("internal authorization error: {message}")]
18    Internal { message: String },
19}
20
21impl AuthzError {
22    #[must_use]
23    pub fn audit(error: AuditError) -> Self {
24        Self::Audit {
25            message: error.to_string(),
26        }
27    }
28}
29
30#[derive(Debug, Clone, PartialEq, Eq, Error)]
31pub enum AuditError {
32    #[error("{message}")]
33    Sink { message: String },
34}
35
36impl AuditError {
37    #[must_use]
38    pub fn sink(message: impl Into<String>) -> Self {
39        Self::Sink {
40            message: message.into(),
41        }
42    }
43}