upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/bin/ngit/sub_commands/login.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-11-21 16:53:17 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2024-11-21 16:53:17 +0000
commitf79014235e85554e3661b3f2a02b8fa88bc192ff (patch)
treefceec3ff2df212148a3420af7cef81a3f818463e /src/bin/ngit/sub_commands/login.rs
parent91b0eac4daf92b7b740267ef203a1a8ba591974b (diff)
feat(login): overhaul login experience
* simplify login menu, making it more accessable to newcomers and easier to select remote signer options * enable `ngit login` to work from anywhere (not just a git repo) * assume fresh login details saved to global git config but fallback to local repository * maintain local repository login via `ngit login --local` * maintain login via CLI arguments eg `ngit send --nsec nsec123` * nudge users to remember nsec when pasting in ncryptsec for a better UX, whilst maintaining the option to be prompted for password everytime * create placeholder menu items for help menu and create account
Diffstat (limited to 'src/bin/ngit/sub_commands/login.rs')
-rw-r--r--src/bin/ngit/sub_commands/login.rs34
1 files changed, 10 insertions, 24 deletions
diff --git a/src/bin/ngit/sub_commands/login.rs b/src/bin/ngit/sub_commands/login.rs
index df7efa5..ae5efb1 100644
--- a/src/bin/ngit/sub_commands/login.rs
+++ b/src/bin/ngit/sub_commands/login.rs
@@ -5,45 +5,31 @@ use crate::{
5 cli::Cli, 5 cli::Cli,
6 client::{Client, Connect}, 6 client::{Client, Connect},
7 git::Repo, 7 git::Repo,
8 login, 8 login::fresh::fresh_login_or_signup,
9}; 9};
10 10
11#[derive(clap::Args)] 11#[derive(clap::Args)]
12pub struct SubCommandArgs { 12pub struct SubCommandArgs {
13 /// login to the local git repository only
14 #[arg(long, action)]
15 local: bool,
16
13 /// don't fetch user metadata and relay list from relays 17 /// don't fetch user metadata and relay list from relays
14 #[arg(long, action)] 18 #[arg(long, action)]
15 offline: bool, 19 offline: bool,
16} 20}
17 21
18pub async fn launch(args: &Cli, command_args: &SubCommandArgs) -> Result<()> { 22pub async fn launch(_args: &Cli, command_args: &SubCommandArgs) -> Result<()> {
19 let git_repo = Repo::discover().context("cannot find a git repository")?; 23 let git_repo = Repo::discover().context("cannot find a git repository")?;
24 // TODO show existing login on record, prompt to logout
25 // TODO use cli arguments to login
20 if command_args.offline { 26 if command_args.offline {
21 login::launch( 27 fresh_login_or_signup(&Some(&git_repo), None, command_args.local).await?;
22 &git_repo,
23 &args.bunker_uri,
24 &args.bunker_app_key,
25 &args.nsec,
26 &args.password,
27 None,
28 true,
29 false,
30 )
31 .await?;
32 Ok(()) 28 Ok(())
33 } else { 29 } else {
34 let client = Client::default(); 30 let client = Client::default();
31 fresh_login_or_signup(&Some(&git_repo), Some(&client), command_args.local).await?;
35 32
36 login::launch(
37 &git_repo,
38 &args.bunker_uri,
39 &args.bunker_app_key,
40 &args.nsec,
41 &args.password,
42 Some(&client),
43 true,
44 false,
45 )
46 .await?;
47 client.disconnect().await?; 33 client.disconnect().await?;
48 Ok(()) 34 Ok(())
49 } 35 }