//! IdentityError — all errors from the el-identity system. use thiserror::Error; #[derive(Debug, Error, Clone)] pub enum IdentityError { #[error("user not found: {0}")] UserNotFound(String), #[error("session not found or expired")] SessionNotFound, #[error("session expired")] SessionExpired, #[error("OAuth error: {0}")] OAuthError(String), #[error("OAuth provider not configured: {0}")] ProviderNotConfigured(String), #[error("token exchange failed: {status} {body}")] TokenExchangeFailed { status: u16, body: String }, #[error("token refresh failed: {0}")] TokenRefreshFailed(String), #[error("PKCE verification failed")] PkceVerificationFailed, #[error("graph error: {0}")] GraphError(String), #[error("serialization error: {0}")] SerializationError(String), #[error("authentication required")] Unauthenticated, #[error("forbidden: requires role '{0}'")] Forbidden(String), #[error("forbidden: requires scope '{0}'")] ScopeForbidden(String), #[error("invalid credentials")] InvalidCredentials, #[error("role not found: {0}")] RoleNotFound(String), #[error("node not found: {0}")] NodeNotFound(String), } pub type IdentityResult = Result;