Expand description
Unified, category-based error types exposed by this crate.
This module contains error types you mostly need when using this crate:
Error: root enum wrapping all category errorsResult<T>: convenience aliasUserFriendlyError: trait providing multiple message levels- Category enums:
AccountsError,AuthnError,AuthzError,PermissionsError,CodecsError,JwtError,RepositoriesError,DatabaseError,HashingError,SecretError
§Error Message Levels
Each error provides three message levels for different audiences:
- User Message: Clear, actionable message for end users
- Developer Message: Technical details for debugging
- Support Code: Unique reference code for customer support
§When to Use Each Variant
Accounts– Account operations (create/update/delete/query/workflows/validation)Authn– Authentication flows (login/logout/session/MFA/rate-limits)Authz– Authorization issues (permission format, collisions, hierarchy violations)Permissions– Permission validation/collision concernsCodecs– Codec/serialization problems (encode/decode/serialize/deserialize/validate)Jwt– JWT processing (encode/decode/validate/refresh/revoke)Repositories– Repository contract/operation failures by repository typeDatabase– Database driver/engine operation failuresHashing– Hashing/verification problems (hash/verify/generate_salt/update_hash)Secrets– Secret storage and verification (repo + hashing in secret flows)
§Basic Example
use axum_gate::errors::{Error, PermissionsError, Result, UserFriendlyError};
fn do_permission_check(flag: bool) -> Result<()> {
if !flag {
let error = Error::Permissions(
PermissionsError::collision(42, vec!["read:alpha".into(), "read:beta".into()])
);
println!("User sees: {}", error.user_message());
println!("Developer sees: {}", error.developer_message());
return Err(error);
}
Ok(())
}§Error Handling
use axum_gate::errors::{Error, UserFriendlyError};
fn handle_error(err: &Error) -> (String, String, String) {
(
err.user_message(),
err.developer_message(),
err.support_code()
)
}Re-exports§
pub use crate::accounts::errors::AccountOperation;pub use crate::accounts::errors::AccountsError;pub use crate::authn::errors::AuthenticationError;pub use crate::authn::errors::AuthnError;pub use crate::authz::errors::AuthzError;pub use crate::codecs::errors::CodecOperation;pub use crate::codecs::errors::CodecsError;pub use crate::codecs::errors::JwtError;pub use crate::codecs::errors::JwtOperation;pub use crate::hashing::errors::HashingError;pub use crate::hashing::errors::HashingOperation;pub use crate::permissions::errors::PermissionsError;pub use crate::repositories::errors::DatabaseError;pub use crate::repositories::errors::DatabaseOperation;pub use crate::repositories::errors::RepositoriesError;pub use crate::repositories::errors::RepositoryOperation;pub use crate::repositories::errors::RepositoryType;pub use crate::secrets::errors::SecretError;pub use crate::gate::oauth2::errors::OAuth2Error;
Enums§
- Error
- Root error type for the axum-gate library.
- Error
Severity - Error severity levels for proper categorization and handling.
Traits§
- User
Friendly Error - Trait providing user-friendly error messaging at multiple levels.
Type Aliases§
- Result
- Result type alias using our comprehensive Error type.