diff --git a/backend/sync_server/Cargo.toml b/backend/sync_server/Cargo.toml index c9b142f..eb49f4b 100644 --- a/backend/sync_server/Cargo.toml +++ b/backend/sync_server/Cargo.toml @@ -21,3 +21,4 @@ sqlx = { version = "0.8.2", features = ["sqlite", "runtime-tokio", "uuid", "chro chrono = { version = "0.4.38", features = ["serde"] } aide = { version = "0.13.4", features = ["axum", "axum-ws", "scalar"] } schemars = { version = "0.8.21", features = ["chrono", "uuid1"] } +rand = "0.8.5" diff --git a/backend/sync_server/src/config/user_config.rs b/backend/sync_server/src/config/user_config.rs index 5980b74..af7d298 100644 --- a/backend/sync_server/src/config/user_config.rs +++ b/backend/sync_server/src/config/user_config.rs @@ -1,13 +1,36 @@ +use rand::distributions::Alphanumeric; +use rand::{thread_rng, Rng}; use serde::{Deserialize, Serialize}; - -#[derive(Debug, Deserialize, Serialize, Clone, Default)] +#[derive(Debug, Deserialize, Serialize, Clone)] pub struct UserConfig { - #[serde(default = "Vec::new")] - pub users: Vec, + #[serde(default = "default_users")] + pub user_tokens: Vec, } - #[derive(Debug, Deserialize, Serialize, Clone)] pub struct User { pub name: String, pub token: String, } + +impl Default for UserConfig { + fn default() -> Self { + UserConfig { + user_tokens: default_users(), + } + } +} + +fn default_users() -> Vec { + vec![User { + name: "admin".to_string(), + token: get_random_token(), + }] +} + +pub fn get_random_token() -> String { + thread_rng() + .sample_iter(&Alphanumeric) + .take(64) + .map(char::from) + .collect() +}