fraiseql_server/auth/
error.rs1use 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>;