use thiserror::Error;
#[derive(Debug, Error)]
pub enum AppError {
#[error("Configuration error: {0}")]
Config(String),
#[error("Auth0 error: {0}")]
Auth0(String),
#[error("Invalid token: {0}")]
InvalidToken(String),
#[error("Unauthorized")]
Unauthorized,
#[error("Invalid role: '{0}'. Valid roles are: admin, super_admin, worker")]
InvalidRole(String),
#[error("HTTP error: {0}")]
Http(#[from] reqwest::Error),
#[error("JWT error: {0}")]
Jwt(#[from] jsonwebtoken::errors::Error),
}