Skip to main content

wae_authentication/password/
error.rs

1//! 密码哈希错误类型
2
3use std::fmt;
4use wae_crypto::CryptoError;
5use wae_types::WaeError;
6
7/// 密码哈希错误
8#[derive(Debug)]
9pub enum PasswordHashError {
10    /// 无效配置
11    InvalidConfig,
12    /// 哈希生成失败
13    HashFailed,
14    /// 验证失败
15    VerifyFailed,
16    /// 无效哈希格式
17    InvalidHashFormat,
18}
19
20impl fmt::Display for PasswordHashError {
21    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22        match self {
23            PasswordHashError::InvalidConfig => write!(f, "无效的密码哈希配置"),
24            PasswordHashError::HashFailed => write!(f, "密码哈希生成失败"),
25            PasswordHashError::VerifyFailed => write!(f, "密码验证失败"),
26            PasswordHashError::InvalidHashFormat => write!(f, "无效的哈希格式"),
27        }
28    }
29}
30
31impl std::error::Error for PasswordHashError {}
32
33impl From<PasswordHashError> for WaeError {
34    fn from(err: PasswordHashError) -> Self {
35        match err {
36            PasswordHashError::InvalidConfig => WaeError::config_invalid("password_hash", "invalid configuration"),
37            PasswordHashError::HashFailed => WaeError::internal("password hash failed"),
38            PasswordHashError::VerifyFailed => WaeError::invalid_credentials(),
39            PasswordHashError::InvalidHashFormat => WaeError::invalid_format("hash", "valid hash format"),
40        }
41    }
42}
43
44impl From<CryptoError> for PasswordHashError {
45    fn from(err: CryptoError) -> Self {
46        match err {
47            CryptoError::PasswordHashError => PasswordHashError::HashFailed,
48            CryptoError::PasswordVerifyError => PasswordHashError::VerifyFailed,
49            _ => PasswordHashError::HashFailed,
50        }
51    }
52}
53
54/// 密码哈希结果类型
55pub type PasswordHashResult<T> = Result<T, PasswordHashError>;