38 lines
904 B
Rust
38 lines
904 B
Rust
//! 与前端 localStorage 会话镜像:通过 `sync_auth_session` 命令更新。
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
use std::sync::Mutex;
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct AuthUser {
|
|
pub id: i64,
|
|
pub username: String,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Default)]
|
|
struct Inner {
|
|
token: String,
|
|
user: Option<AuthUser>,
|
|
}
|
|
|
|
#[derive(Debug, Default)]
|
|
pub struct AuthSession {
|
|
inner: Mutex<Inner>,
|
|
}
|
|
|
|
impl AuthSession {
|
|
pub fn set(&self, token: String, user: Option<AuthUser>) {
|
|
let mut g = self.inner.lock().expect("auth session mutex poisoned");
|
|
g.token = token;
|
|
g.user = user;
|
|
}
|
|
|
|
pub fn token(&self) -> String {
|
|
self.inner.lock().expect("auth session mutex poisoned").token.clone()
|
|
}
|
|
|
|
pub fn user(&self) -> Option<AuthUser> {
|
|
self.inner.lock().expect("auth session mutex poisoned").user.clone()
|
|
}
|
|
}
|