diff --git a/desktop/pages/account.vue b/desktop/pages/account.vue new file mode 100644 index 00000000..6a072de8 --- /dev/null +++ b/desktop/pages/account.vue @@ -0,0 +1,72 @@ + + + diff --git a/desktop/src-tauri/src/auth.rs b/desktop/src-tauri/src/auth.rs index 8b4383d8..70441403 100644 --- a/desktop/src-tauri/src/auth.rs +++ b/desktop/src-tauri/src/auth.rs @@ -232,3 +232,29 @@ pub fn setup() -> Result<(AppStatus, Option), ()> { Ok((AppStatus::SignedOut, None)) } + +#[tauri::command] +pub fn sign_out(app: AppHandle) -> Result<(), String> { + info!("Signing out user"); + + // Clear auth from database + { + let mut handle = DB.borrow_data_mut().unwrap(); + handle.auth = None; + drop(handle); + DB.save().unwrap(); + } + + // Update app state + { + let app_state = app.state::>(); + let mut app_state_handle = app_state.lock().unwrap(); + app_state_handle.status = AppStatus::SignedOut; + app_state_handle.user = None; + } + + // Emit event for frontend + app.emit("auth/signedout", ()).unwrap(); + + Ok(()) +} diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs index be6101cc..2d411748 100644 --- a/desktop/src-tauri/src/lib.rs +++ b/desktop/src-tauri/src/lib.rs @@ -12,7 +12,7 @@ mod tests; mod autostart; use crate::db::DatabaseImpls; -use auth::{auth_initiate, generate_authorization_header, manual_recieve_handshake, recieve_handshake, retry_connect}; +use auth::{auth_initiate, generate_authorization_header, manual_recieve_handshake, recieve_handshake, retry_connect, sign_out}; use cleanup::{cleanup_and_exit, quit}; use db::{ add_download_dir, delete_download_dir, fetch_download_dir_stats, DatabaseInterface, GameStatus, @@ -221,6 +221,7 @@ pub fn run() { auth_initiate, retry_connect, manual_recieve_handshake, + sign_out, // Remote use_remote, gen_drop_url,