pub use crate::AuthFramework;
pub use crate::auth::{AuthStats, UserInfo};
pub use crate::config::app_config::{AppConfig, ConfigBuilder};
pub use crate::config::{
AuditConfig, AuthConfig, CookieSameSite, JwtAlgorithm, PasswordHashAlgorithm, RateLimitConfig,
SecurityConfig, StorageConfig,
};
pub use crate::errors::{
AuthError, DeviceFlowError, MfaError, OAuthProviderError, PermissionError, Result,
StorageError, TokenError,
};
pub use crate::methods::{
ApiKeyMethod, AuthMethod, AuthMethodEnum, JwtMethod, MethodResult, OAuth2Method, PasswordMethod,
};
#[cfg(feature = "saml")]
pub use crate::methods::saml;
pub use crate::authentication::credentials::Credential;
pub use crate::providers::{OAuthProvider, OAuthProviderConfig, UserProfile};
pub use crate::tokens::{AuthToken, TokenMetadata};
pub use crate::permissions::{Permission, PermissionChecker, Role};
#[cfg(feature = "enhanced-rbac")]
pub use crate::authorization::{
AccessCondition, AuthorizationEngine, Permission as AuthzPermission, Role as AuthzRole,
};
pub use crate::storage::{AuthStorage, MemoryStorage, SessionData};
pub use crate::security::secure_session::{
DeviceFingerprint, SecureSession, SecureSessionConfig, SecureSessionManager, SecurityFlags,
SessionState as SecureSessionState,
};
pub use crate::session::manager::{
DeviceInfo, Session, SessionConfig, SessionManager as LegacySessionManager, SessionState,
};
#[cfg(feature = "axum-integration")]
pub use crate::integrations::axum::{
AuthMiddleware, AuthenticatedUser, RequireAuth, RequirePermission,
};
#[cfg(feature = "actix-integration")]
pub use crate::integrations::actix_web::AuthMiddleware as ActixAuthMiddleware;
#[cfg(feature = "warp-integration")]
pub use crate::integrations::warp::{with_auth, with_permission};
pub use crate::monitoring::{
HealthCheckResult, HealthStatus, MonitoringManager, PerformanceMetrics, SecurityEvent,
SecurityEventSeverity, SecurityEventType,
};
pub use crate::audit::{AuditEvent, AuditEventType, AuditLogger, EventOutcome, RiskLevel};
pub use crate::security::secure_jwt::{SecureJwtClaims, SecureJwtConfig, SecureJwtValidator};
pub use crate::security::secure_utils::{SecureComparison, SecureRandomGen};
pub use crate::security::{
SecurityAuditReport, SecurityAuditStatus, SecurityIssue, SecuritySeverity,
};
pub use crate::utils::rate_limit::RateLimiter;
#[cfg(any(test, feature = "testing"))]
pub use crate::testing::{MockAuthMethod, MockStorage};
#[cfg(feature = "cli")]
pub use crate::cli;
#[cfg(feature = "api-server")]
pub use crate::api::{ApiError, ApiResponse, ApiServer, ApiState};
pub use crate::server::oidc::{
IdTokenClaims, Jwk, JwkSet, OidcConfig, OidcDiscoveryDocument, OidcProvider,
UserInfo as OidcUserInfo,
};
pub use crate::oauth2_server::{
AuthorizationRequest, GrantType, OAuth2Config, OAuth2Server, ResponseType, TokenRequest,
TokenResponse,
};
pub use crate::builders::*;
pub mod time {
use std::time::Duration;
pub fn hours(h: u64) -> Duration {
Duration::from_secs(h * 3600)
}
pub fn minutes(m: u64) -> Duration {
Duration::from_secs(m * 60)
}
pub fn days(d: u64) -> Duration {
Duration::from_secs(d * 86400)
}
pub fn weeks(w: u64) -> Duration {
Duration::from_secs(w * 604800)
}
pub fn seconds(s: u64) -> Duration {
Duration::from_secs(s)
}
}
pub mod rate {
use std::time::Duration;
pub struct RequestCount(pub u32);
pub fn requests(count: u32) -> RequestCount {
RequestCount(count)
}
impl RequestCount {
pub fn per_second(self) -> (u32, Duration) {
(self.0, Duration::from_secs(1))
}
pub fn per_minute(self) -> (u32, Duration) {
(self.0, Duration::from_secs(60))
}
pub fn per_hour(self) -> (u32, Duration) {
(self.0, Duration::from_secs(3600))
}
pub fn per_day(self) -> (u32, Duration) {
(self.0, Duration::from_secs(86400))
}
pub fn per(self, duration: Duration) -> (u32, Duration) {
(self.0, duration)
}
}
}
pub use rate::{RequestCount, requests};
pub use time::{days, hours, minutes, seconds, weeks};
pub type AuthFrameworkResult<T> = Result<T, AuthError>;
pub type AsyncAuthHandler =
std::pin::Pin<Box<dyn std::future::Future<Output = AuthFrameworkResult<()>> + Send>>;
pub use crate::security::SecurityPreset; #[derive(Debug, Clone)]
pub enum PerformancePreset {
HighThroughput,
LowLatency,
LowMemory,
Balanced,
}
#[derive(Debug, Clone)]
pub enum UseCasePreset {
WebApp,
ApiService,
Microservices,
MobileBackend,
Enterprise,
}