1use thiserror::Error;
6
7pub type SaTokenResult<T> = Result<T, SaTokenError>;
8
9#[derive(Debug, Error)]
10pub enum SaTokenError {
11 #[error("Token not found or expired")]
13 TokenNotFound,
14
15 #[error("Token is invalid: {0}")]
16 InvalidToken(String),
17
18 #[error("Token has expired")]
19 TokenExpired,
20
21 #[error("User not logged in")]
23 NotLogin,
24
25 #[error("Permission denied: missing permission '{0}'")]
27 PermissionDenied(String),
28
29 #[error("Role denied: missing role '{0}'")]
30 RoleDenied(String),
31
32 #[error("Account is banned until {0}")]
34 AccountBanned(String),
35
36 #[error("Account is kicked out")]
37 AccountKickedOut,
38
39 #[error("Session not found")]
41 SessionNotFound,
42
43 #[error("Nonce has been used, possible replay attack detected")]
45 NonceAlreadyUsed,
46
47 #[error("Invalid nonce format")]
48 InvalidNonceFormat,
49
50 #[error("Nonce timestamp is invalid or expired")]
51 InvalidNonceTimestamp,
52
53 #[error("Refresh token not found or expired")]
55 RefreshTokenNotFound,
56
57 #[error("Invalid refresh token data")]
58 RefreshTokenInvalidData,
59
60 #[error("Missing login_id in refresh token")]
61 RefreshTokenMissingLoginId,
62
63 #[error("Invalid expire time format in refresh token")]
64 RefreshTokenInvalidExpireTime,
65
66 #[error("Token is empty")]
68 TokenEmpty,
69
70 #[error("Token is too short")]
71 TokenTooShort,
72
73 #[error("Login ID is not a valid number")]
74 LoginIdNotNumber,
75
76 #[error("OAuth2 client not found")]
78 OAuth2ClientNotFound,
79
80 #[error("Invalid client credentials")]
81 OAuth2InvalidCredentials,
82
83 #[error("Client ID mismatch")]
84 OAuth2ClientIdMismatch,
85
86 #[error("Redirect URI mismatch")]
87 OAuth2RedirectUriMismatch,
88
89 #[error("Authorization code not found or expired")]
90 OAuth2CodeNotFound,
91
92 #[error("Access token not found or expired")]
93 OAuth2AccessTokenNotFound,
94
95 #[error("Refresh token not found or expired")]
96 OAuth2RefreshTokenNotFound,
97
98 #[error("Invalid refresh token data")]
99 OAuth2InvalidRefreshToken,
100
101 #[error("Invalid scope data")]
102 OAuth2InvalidScope,
103
104 #[error("Storage error: {0}")]
106 StorageError(String),
107
108 #[error("Configuration error: {0}")]
109 ConfigError(String),
110
111 #[error("Serialization error: {0}")]
112 SerializationError(#[from] serde_json::Error),
113
114 #[error("Internal error: {0}")]
115 InternalError(String),
116}