Module errors

Module errors 

Source
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 errors
  • Result<T>: convenience alias
  • UserFriendlyError: 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 concerns
  • Codecs – Codec/serialization problems (encode/decode/serialize/deserialize/validate)
  • Jwt – JWT processing (encode/decode/validate/refresh/revoke)
  • Repositories – Repository contract/operation failures by repository type
  • Database – Database driver/engine operation failures
  • Hashing – 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.
ErrorSeverity
Error severity levels for proper categorization and handling.

Traits§

UserFriendlyError
Trait providing user-friendly error messaging at multiple levels.

Type Aliases§

Result
Result type alias using our comprehensive Error type.