Skip to content

Commit

Permalink
Add authenticate command
Browse files Browse the repository at this point in the history
Checks if there is a profile to be loaded, if the ssh agent is running
and if there is a Radicle identity stored in the ssh-agent.
  • Loading branch information
sebastinez committed Aug 26, 2024
1 parent 1222278 commit 21841b4
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
27 changes: 27 additions & 0 deletions src-tauri/src/auth.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
use anyhow::anyhow;
use radicle::crypto::ssh;

use crate::{error::Error, AppState};

#[tauri::command]
pub fn authenticate(ctx: tauri::State<AppState>) -> Result<(), Error> {
let profile = &ctx.profile;

if !profile.keystore.is_encrypted()? {
return Ok(());
}
match ssh::agent::Agent::connect() {
Ok(mut agent) => {
if agent.request_identities()?.contains(&profile.public_key) {
return Ok(());
} else {
Err(Error::WithHint {
err: anyhow!("Not able to find your keys in the ssh agent"),
hint: "Make sure to run <code>rad auth</code> in your terminal to add your keys to the ssh-agent.",
})?
}
}
Err(e) if e.is_not_running() => Err(Error::WithHint { err: anyhow!("SSH Agent is not running"), hint: "For now we require the user to have an ssh agent running, since we don't have passphrase inputs yet." })?,
Err(e) => Err(e)?,
}
}
1 change: 1 addition & 0 deletions src-tauri/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ pub fn run() {
})
.plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_window_state::Builder::default().build())
.invoke_handler(tauri::generate_handler![authenticate])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

0 comments on commit 21841b4

Please sign in to comment.