1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//! Session backend implementations
//!
//! This module provides different backend implementations for session storage:
//!
//! - **Cache Backend** (always available): Stores sessions in memory or cache systems
//! - **Database Backend** (feature: `database`): Stores sessions in a database
//! - **File Backend** (feature: `file`): Stores sessions as files on disk
//! - **Cookie Backend** (feature: `cookie`): Stores encrypted sessions in cookies
//! - **JWT Backend** (feature: `jwt`): Stores sessions as JSON Web Tokens
//!
//! ## Feature Flags
//!
//! - `database`: Enable database-backed sessions (requires reinhardt-orm)
//! - `file`: Enable file-backed sessions
//! - `cookie`: Enable cookie-backed sessions
//! - `jwt`: Enable JWT-backed sessions
//!
//! ## Example
//!
//! ```rust
//! use reinhardt_auth::sessions::backends::{InMemorySessionBackend, SessionBackend};
//! use serde_json::json;
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! // Create an in-memory session backend
//! let backend = InMemorySessionBackend::new();
//!
//! // Store session data
//! let session_key = "session_abc123";
//! let session_data = json!({
//! "user_id": 42,
//! "username": "alice",
//! "is_authenticated": true,
//! });
//!
//! backend.save(session_key, &session_data, None).await?;
//!
//! // Retrieve session data
//! let retrieved: Option<serde_json::Value> = backend.load(session_key).await?;
//! assert_eq!(retrieved, Some(session_data));
//!
//! // Delete session
//! backend.delete(session_key).await?;
//!
//! // Verify deletion
//! let deleted: Option<serde_json::Value> = backend.load(session_key).await?;
//! assert_eq!(deleted, None);
//! # Ok(())
//! # }
//! ```
// Re-export commonly used backends
pub use ;
pub use DatabaseSessionBackend;
pub use FileSessionBackend;
pub use CookieSessionBackend;
pub use ;