From d384465f2e091ea3601a4bafffbb3ed21dd6ec5e Mon Sep 17 00:00:00 2001 From: MDietermann Date: Wed, 12 Aug 2026 16:59:55 +0200 Subject: [PATCH] feat: add login Tauri command --- src-tauri/src/commands/mod.rs | 1 + src-tauri/src/commands/user.rs | 42 ++++++++++++++++++++++++++++++++++ src-tauri/src/lib.rs | 3 +++ 3 files changed, 46 insertions(+) create mode 100644 src-tauri/src/commands/mod.rs create mode 100644 src-tauri/src/commands/user.rs diff --git a/src-tauri/src/commands/mod.rs b/src-tauri/src/commands/mod.rs new file mode 100644 index 0000000..22d12a3 --- /dev/null +++ b/src-tauri/src/commands/mod.rs @@ -0,0 +1 @@ +pub mod user; diff --git a/src-tauri/src/commands/user.rs b/src-tauri/src/commands/user.rs new file mode 100644 index 0000000..4640c61 --- /dev/null +++ b/src-tauri/src/commands/user.rs @@ -0,0 +1,42 @@ +use crate::models::{AuthTokenResponse, User}; +use crate::state::{AppState, BASE_URL}; + +#[tauri::command] +pub async fn login(state: tauri::State<'_, AppState>, email: String) -> Result { + let users: Vec = state + .client + .get(format!("{}/users", BASE_URL)) + .send() + .await + .map_err(|e| e.to_string())? + .json() + .await + .map_err(|e| e.to_string())?; + + let user = users + .into_iter() + .find(|u| u.email == email) + .ok_or_else(|| "User not found".to_string())?; + + let body = serde_json::json!({ + "user_id": user.id, + "kind": "refresh_token", + "expires_at": "2027-01-01T00:00:00Z" + }); + + let token_resp: AuthTokenResponse = state + .client + .post(format!("{}/auth-tokens", BASE_URL)) + .json(&body) + .send() + .await + .map_err(|e| e.to_string())? + .json() + .await + .map_err(|e| e.to_string())?; + + *state.token.lock().unwrap() = Some(token_resp.token); + *state.user_id.lock().unwrap() = Some(user.id.clone()); + + Ok(user) +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 9efa19b..dc63d34 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,11 +1,14 @@ +mod commands; mod models; mod state; use state::AppState; +#[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() .manage(AppState::new()) + .invoke_handler(tauri::generate_handler![commands::user::login]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }