Skip to main content

fraiseql_server/auth/
error.rs

1// Authentication error types
2use thiserror::Error;
3
4#[derive(Debug, Error, Clone)]
5pub enum AuthError {
6    #[error("Invalid token: {reason}")]
7    InvalidToken { reason: String },
8
9    #[error("Token expired")]
10    TokenExpired,
11
12    #[error("Invalid signature")]
13    InvalidSignature,
14
15    #[error("Missing required claim: {claim}")]
16    MissingClaim { claim: String },
17
18    #[error("Invalid claim: {claim} - {reason}")]
19    InvalidClaimValue { claim: String, reason: String },
20
21    #[error("OAuth error: {message}")]
22    OAuthError { message: String },
23
24    #[error("Session error: {message}")]
25    SessionError { message: String },
26
27    #[error("Database error: {message}")]
28    DatabaseError { message: String },
29
30    #[error("Configuration error: {message}")]
31    ConfigError { message: String },
32
33    #[error("OIDC metadata error: {message}")]
34    OidcMetadataError { message: String },
35
36    #[error("PKCE error: {message}")]
37    PkceError { message: String },
38
39    #[error("State validation failed")]
40    InvalidState,
41
42    #[error("Token not found")]
43    TokenNotFound,
44
45    #[error("Session revoked")]
46    SessionRevoked,
47
48    #[error("Forbidden: {message}")]
49    Forbidden { message: String },
50
51    #[error("Internal error: {message}")]
52    Internal { message: String },
53
54    #[error("System time error: {message}")]
55    SystemTimeError { message: String },
56
57    #[error("Rate limited: retry after {retry_after_secs} seconds")]
58    RateLimited { retry_after_secs: u64 },
59}
60
61pub type Result<T> = std::result::Result<T, AuthError>;