diff options
Diffstat (limited to 'src/services/mod.rs')
| -rw-r--r-- | src/services/mod.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/services/mod.rs b/src/services/mod.rs new file mode 100644 index 0000000..26d74e3 --- /dev/null +++ b/src/services/mod.rs @@ -0,0 +1,49 @@ +use anyhow::Result; +use std::collections::HashMap; + +/// Service trait for client authentication +pub trait ClientAuthenticator: Send + Sync { + fn authenticate( + &self, + params: &HashMap<String, String>, + auth_header: Option<&str>, + ) -> Result<(String, String), String>; // Returns (client_id, client_secret) +} + +/// Service trait for rate limiting +pub trait RateLimiter: Send + Sync { + fn check_rate_limit(&self, identifier: &str, endpoint: &str) -> Result<()>; +} + +/// Service trait for audit logging +pub trait AuditLogger: Send + Sync { + fn log_event( + &self, + event_type: &str, + client_id: Option<&str>, + user_id: Option<&str>, + ip_address: Option<&str>, + success: bool, + details: Option<&str>, + ) -> Result<()>; +} + +/// Service trait for token generation +pub trait TokenGenerator: Send + Sync { + fn generate_access_token( + &self, + user_id: &str, + client_id: &str, + scope: &Option<String>, + token_id: &str, + ) -> Result<String, String>; + + fn generate_refresh_token( + &self, + client_id: &str, + user_id: &str, + scope: &Option<String>, + ) -> Result<String, String>; +} + +pub mod implementations; |
