use thiserror::Error;
use crate::storage::{CacheErrorConversion, StorageError};
use crate::userdb::UserError;
use crate::utils::UtilError;
#[derive(Debug, Error, Clone)]
pub enum SessionError {
#[error("Session error")]
SessionError,
#[error("Storage error: {0}")]
Storage(String),
#[error("Crypto error: {0}")]
Crypto(String),
#[error("Cookie error: {0}")]
Cookie(String),
#[error("Page session token error: {0}")]
PageSessionToken(String),
#[error("CSRF token error: {0}")]
CsrfToken(String),
#[error("Session expired error")]
SessionExpiredError,
#[error("Session conflict: active session already exists for this user")]
SessionConflictRejected,
#[error("Validation error: {0}")]
Validation(String),
#[error("Utils error: {0}")]
Utils(#[from] UtilError),
#[error("Header error: {0}")]
HeaderError(String),
#[error("User error: {0}")]
User(#[from] UserError),
}
impl CacheErrorConversion<SessionError> for SessionError {
fn convert_storage_error(error: StorageError) -> SessionError {
SessionError::Storage(error.to_string())
}
}