Skip to main content

wae_authentication/csrf/
error.rs

1//! CSRF 错误类型
2
3use std::fmt;
4use wae_types::WaeError;
5
6/// CSRF 错误
7#[derive(Debug)]
8pub enum CsrfError {
9    /// 无效令牌
10    InvalidToken,
11    /// 令牌已过期
12    TokenExpired,
13    /// 令牌生成失败
14    TokenGenerationFailed,
15}
16
17impl fmt::Display for CsrfError {
18    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19        match self {
20            CsrfError::InvalidToken => write!(f, "无效的 CSRF 令牌"),
21            CsrfError::TokenExpired => write!(f, "CSRF 令牌已过期"),
22            CsrfError::TokenGenerationFailed => write!(f, "CSRF 令牌生成失败"),
23        }
24    }
25}
26
27impl std::error::Error for CsrfError {}
28
29impl From<CsrfError> for WaeError {
30    fn from(err: CsrfError) -> Self {
31        match err {
32            CsrfError::InvalidToken => WaeError::invalid_params("csrf_token", "invalid token"),
33            CsrfError::TokenExpired => WaeError::invalid_params("csrf_token", "token expired"),
34            CsrfError::TokenGenerationFailed => WaeError::internal("csrf token generation failed"),
35        }
36    }
37}
38
39/// CSRF 结果类型
40pub type CsrfResult<T> = Result<T, CsrfError>;