oauth2_passkey/session/
errors.rs

1use thiserror::Error;
2
3use crate::storage::{CacheErrorConversion, StorageError};
4use crate::userdb::UserError;
5use crate::utils::UtilError;
6
7/// Errors that can occur during session management operations.
8///
9/// This enum represents all possible error conditions when handling session
10/// creation, validation, and management.
11#[derive(Debug, Error, Clone)]
12pub enum SessionError {
13    /// Generic session-related error
14    #[error("Session error")]
15    SessionError,
16
17    /// Error accessing or modifying stored session data
18    #[error("Storage error: {0}")]
19    Storage(String),
20
21    /// Error in cryptographic operations used for session security
22    #[error("Crypto error: {0}")]
23    Crypto(String),
24
25    /// Error related to cookie handling (setting, parsing)
26    #[error("Cookie error: {0}")]
27    Cookie(String),
28
29    /// Error with page session tokens used for sensitive operations
30    #[error("Page session token error: {0}")]
31    PageSessionToken(String),
32
33    /// Error with CSRF token validation or generation
34    #[error("CSRF token error: {0}")]
35    CsrfToken(String),
36
37    /// Error when a session has expired (timeout or explicit invalidation)
38    #[error("Session expired error")]
39    SessionExpiredError,
40
41    /// Error when input validation fails for session-related data
42    #[error("Validation error: {0}")]
43    Validation(String),
44
45    /// Error from utility operations
46    #[error("Utils error: {0}")]
47    Utils(#[from] UtilError),
48
49    /// Error processing HTTP headers related to sessions
50    #[error("Header error: {0}")]
51    HeaderError(String),
52
53    /// Error from user database operations
54    #[error("User error: {0}")]
55    User(#[from] UserError),
56}
57
58impl CacheErrorConversion<SessionError> for SessionError {
59    fn convert_storage_error(error: StorageError) -> SessionError {
60        SessionError::Storage(error.to_string())
61    }
62}