sa_token_plugin_rocket/
lib.rs1pub mod middleware;
8pub mod extractor;
9pub mod adapter;
10
11pub use middleware::SaTokenFairing;
12pub use extractor::{SaTokenGuard, OptionalSaTokenGuard, LoginIdGuard};
13pub use adapter::{RocketRequestAdapter, RocketResponseAdapter};
14
15use std::sync::Arc;
16use sa_token_core::{SaTokenManager, SaTokenConfig};
17use sa_token_adapter::storage::SaStorage;
18
19#[derive(Clone)]
21pub struct SaTokenState {
22 pub manager: Arc<SaTokenManager>,
23}
24
25impl SaTokenState {
26 pub fn builder() -> SaTokenStateBuilder {
28 SaTokenStateBuilder::new()
29 }
30}
31
32pub struct SaTokenStateBuilder {
34 storage: Option<Arc<dyn SaStorage>>,
35 token_name: Option<String>,
36 timeout: Option<i64>,
37 active_timeout: Option<i64>,
38}
39
40impl SaTokenStateBuilder {
41 pub fn new() -> Self {
42 Self {
43 storage: None,
44 token_name: None,
45 timeout: None,
46 active_timeout: None,
47 }
48 }
49
50 pub fn storage(mut self, storage: Arc<dyn SaStorage>) -> Self {
51 self.storage = Some(storage);
52 self
53 }
54
55 pub fn token_name(mut self, name: impl Into<String>) -> Self {
56 self.token_name = Some(name.into());
57 self
58 }
59
60 pub fn timeout(mut self, timeout: i64) -> Self {
61 self.timeout = Some(timeout);
62 self
63 }
64
65 pub fn active_timeout(mut self, timeout: i64) -> Self {
66 self.active_timeout = Some(timeout);
67 self
68 }
69
70 pub fn build(self) -> SaTokenState {
71 let storage = self.storage
72 .expect("Storage is required");
73
74 let mut config = SaTokenConfig::default();
75 if let Some(name) = self.token_name {
76 config.token_name = name;
77 }
78 if let Some(timeout) = self.timeout {
79 config.timeout = timeout;
80 }
81 if let Some(active_timeout) = self.active_timeout {
82 config.active_timeout = active_timeout;
83 }
84
85 let manager = SaTokenManager::new(storage, config);
86
87 sa_token_core::StpUtil::init_manager(manager.clone());
89
90 SaTokenState {
91 manager: Arc::new(manager),
92 }
93 }
94}
95
96impl Default for SaTokenStateBuilder {
97 fn default() -> Self {
98 Self::new()
99 }
100}