sa_token_plugin_rocket/
state.rs1use std::sync::Arc;
6use sa_token_core::{SaTokenManager, SaTokenListener};
7use sa_token_adapter::storage::SaStorage;
8
9#[derive(Clone)]
11pub struct SaTokenState {
12 pub manager: Arc<SaTokenManager>,
13}
14
15impl SaTokenState {
16 pub fn new(manager: Arc<SaTokenManager>) -> Self {
18 Self { manager }
19 }
20
21 pub fn from_storage_and_config(storage: Arc<dyn SaStorage>, config: sa_token_core::SaTokenConfig) -> Self {
23 Self {
24 manager: Arc::new(SaTokenManager::new(storage, config)),
25 }
26 }
27
28 pub fn builder() -> SaTokenStateBuilder {
30 SaTokenStateBuilder::new()
31 }
32}
33
34#[derive(Default)]
36pub struct SaTokenStateBuilder {
37 config_builder: sa_token_core::config::SaTokenConfigBuilder,
38 listeners: Vec<Arc<dyn SaTokenListener>>,
39}
40
41impl SaTokenStateBuilder {
42 pub fn new() -> Self {
43 Self::default()
44 }
45
46 pub fn storage(mut self, storage: Arc<dyn SaStorage>) -> Self {
48 self.config_builder = self.config_builder.storage(storage);
49 self
50 }
51
52 pub fn token_name(mut self, name: impl Into<String>) -> Self {
54 self.config_builder = self.config_builder.token_name(name);
55 self
56 }
57
58 pub fn timeout(mut self, timeout: i64) -> Self {
60 self.config_builder = self.config_builder.timeout(timeout);
61 self
62 }
63
64 pub fn active_timeout(mut self, timeout: i64) -> Self {
66 self.config_builder = self.config_builder.active_timeout(timeout);
67 self
68 }
69
70 pub fn auto_renew(mut self, enabled: bool) -> Self {
72 self.config_builder = self.config_builder.auto_renew(enabled);
73 self
74 }
75
76 pub fn is_concurrent(mut self, concurrent: bool) -> Self {
78 self.config_builder = self.config_builder.is_concurrent(concurrent);
79 self
80 }
81
82 pub fn is_share(mut self, share: bool) -> Self {
84 self.config_builder = self.config_builder.is_share(share);
85 self
86 }
87
88 pub fn token_style(mut self, style: sa_token_core::config::TokenStyle) -> Self {
90 self.config_builder = self.config_builder.token_style(style);
91 self
92 }
93
94 pub fn token_prefix(mut self, prefix: impl Into<String>) -> Self {
96 self.config_builder = self.config_builder.token_prefix(prefix);
97 self
98 }
99
100 pub fn jwt_secret_key(mut self, key: impl Into<String>) -> Self {
102 self.config_builder = self.config_builder.jwt_secret_key(key);
103 self
104 }
105
106 pub fn listener(mut self, listener: Arc<dyn SaTokenListener>) -> Self {
108 self.listeners.push(listener);
109 self
110 }
111
112 pub fn listeners(mut self, listeners: Vec<Arc<dyn SaTokenListener>>) -> Self {
114 self.listeners.extend(listeners);
115 self
116 }
117
118 pub fn build(self) -> SaTokenState {
120 let manager = self.config_builder.build();
123
124 for listener in self.listeners {
126 manager.event_bus().register(listener);
127 }
128
129 SaTokenState {
132 manager: Arc::new(manager),
133 }
134 }
135}