oxidite_auth/
lib.rs

1pub mod hasher;
2pub mod jwt;
3pub mod middleware;
4pub mod rbac;
5
6pub use hasher::{PasswordHasher, hash_password, verify_password};
7pub use jwt::{JwtManager, create_token, verify_token, Claims};
8pub use middleware::AuthMiddleware;
9pub use rbac::{Role, Permission};
10
11pub mod session;
12pub mod session_middleware;
13
14pub use session::{Session, SessionStore, InMemorySessionStore, RedisSessionStore, SessionManager};
15pub use session_middleware::{SessionMiddleware, SessionLayer};
16
17pub mod oauth2;
18pub use oauth2::{OAuth2Client, OAuth2Config, ProviderConfig, OAuth2Provider};
19
20pub mod authorization;
21pub use authorization::{RequireRole, RequirePermission, AuthorizationService};
22
23pub mod api_key;
24pub mod api_key_middleware;
25pub use api_key::ApiKey;
26pub use api_key_middleware::ApiKeyMiddleware;
27
28pub mod security;
29pub use security::{email_verification, password_reset, two_factor};
30
31use thiserror::Error;
32
33#[derive(Error, Debug)]
34pub enum AuthError {
35    #[error("Invalid credentials")]
36    InvalidCredentials,
37    
38    #[error("Token expired")]
39    TokenExpired,
40    
41    #[error("Invalid token")]
42    InvalidToken,
43    
44    #[error("Missing authorization header")]
45    MissingHeader,
46    
47    #[error("Permission denied")]
48    PermissionDenied,
49    
50    #[error("Hash error: {0}")]
51    HashError(String),
52    
53    #[error("JWT error: {0}")]
54    JwtError(#[from] jsonwebtoken::errors::Error),
55}
56
57pub type Result<T> = std::result::Result<T, AuthError>;