Skip to content

Commit 17bbc00

Browse files
committed
fix is logged in checking
1 parent 09195b9 commit 17bbc00

File tree

8 files changed

+55
-33
lines changed

8 files changed

+55
-33
lines changed

crates/cli/src/account/login/process.rs

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
use {
2-
crate::account::signup::signup_with_email,
3-
crate::account::{
4-
lib::{authorize_github, is_logged_in, save_token},
5-
signup::{do_signup, SignupMethod},
2+
crate::{
3+
account::{
4+
lib::{authorize_github, save_token},
5+
signup::{do_signup, signup_with_email, SignupMethod},
6+
},
7+
cli::CommandResult,
8+
token::is_logged_in::is_logged_in as is_logged_in_async,
9+
ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
610
},
7-
crate::cli::CommandResult,
8-
crate::ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
911
anyhow::{anyhow, Result},
1012
console::style,
1113
dialoguer::{console::Term, theme::ColorfulTheme, Confirm, Input, Password, Select},
@@ -30,9 +32,17 @@ use {
3032
spinners::Spinner,
3133
};
3234

33-
pub async fn process_login(env: Environment) -> Result<CommandResult> {
34-
// Check if token file exists
35-
if is_logged_in(env) {
35+
pub async fn process_login(env: Environment, is_logged_in: Option<bool>) -> Result<CommandResult> {
36+
let should_continue = match is_logged_in {
37+
Some(is_logged_id) => !is_logged_id,
38+
None => {
39+
// Check if logged in
40+
let logged_in = is_logged_in_async(env).await?;
41+
!logged_in
42+
}
43+
};
44+
45+
if !should_continue {
3646
return Ok(CommandResult {
3747
spinner: Spinner::new(
3848
spinners::Spinners::SimpleDotsScrolling,

crates/cli/src/account/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use smbcloud_network::environment::Environment;
1515
pub async fn process_account(env: Environment, commands: Commands) -> Result<CommandResult> {
1616
match commands {
1717
Commands::Signup {} => process_signup(env).await,
18-
Commands::Login {} => process_login(env).await,
18+
Commands::Login {} => process_login(env, None).await,
1919
Commands::Logout {} => process_logout(env).await,
2020
Commands::Forgot {} => process_forgot(env).await,
2121
}

crates/cli/src/deploy/process_deploy.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use {
22
crate::{
3-
account::{lib::is_logged_in, login::process_login},
3+
account::login::process_login,
44
cli::CommandResult,
55
deploy::{
66
config::{check_config, check_project},
77
detect_runner::detect_runner,
88
git::remote_deployment_setup,
99
remote_messages::{build_next_app, start_server},
1010
},
11-
token::get_smb_token::get_smb_token,
11+
token::{get_smb_token::get_smb_token, is_logged_in::is_logged_in},
1212
ui::{fail_message, succeed_message, succeed_symbol},
1313
},
1414
anyhow::{anyhow, Result},
@@ -28,8 +28,10 @@ use {
2828

2929
pub async fn process_deploy(env: Environment) -> Result<CommandResult> {
3030
// Check credentials.
31-
if !is_logged_in(env) {
32-
let _ = process_login(env).await;
31+
let is_logged_in = is_logged_in(env).await?;
32+
33+
if !is_logged_in {
34+
let _ = process_login(env, Some(is_logged_in)).await?;
3335
}
3436

3537
// Get current token

crates/cli/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ async fn run() -> Result<CommandResult> {
132132
Some(Commands::Init {}) => process_project_init(cli.environment).await,
133133
Some(Commands::Deploy {}) => process_deploy(cli.environment).await,
134134
Some(Commands::Account { command }) => process_account(cli.environment, command).await,
135-
Some(Commands::Login {}) => process_login(cli.environment).await,
135+
Some(Commands::Login {}) => process_login(cli.environment, None).await,
136136
Some(Commands::Logout {}) => process_logout(cli.environment).await,
137137
Some(Commands::Project { command }) => process_project(cli.environment, command).await,
138138
None => process_deploy(cli.environment).await,

crates/cli/src/project/crud_create.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use crate::token::get_smb_token::get_smb_token;
1+
use crate::token::{get_smb_token::get_smb_token, is_logged_in::is_logged_in};
22
use crate::{
3-
account::{lib::is_logged_in, login::process_login},
3+
account::login::process_login,
44
cli::CommandResult,
55
ui::{fail_message, succeed_message, succeed_symbol},
66
};
@@ -14,8 +14,9 @@ use smbcloud_networking_project::crud_project_create::create_project;
1414
use spinners::Spinner;
1515

1616
pub async fn process_project_init(env: Environment) -> Result<CommandResult> {
17-
if !is_logged_in(env) {
18-
let _ = process_login(env).await;
17+
let is_logged_in = is_logged_in(env).await?;
18+
if !is_logged_in {
19+
let _ = process_login(env, Some(is_logged_in)).await;
1920
}
2021

2122
let project_name = match Input::<String>::with_theme(&ColorfulTheme::default())

crates/cli/src/project/crud_update.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::token::get_smb_token::get_smb_token;
1+
use crate::token::{get_smb_token::get_smb_token, is_logged_in::is_logged_in};
22
use anyhow::{anyhow, Result};
33
use dialoguer::{theme::ColorfulTheme, Input};
44
use smbcloud_network::environment::Environment;
@@ -8,7 +8,7 @@ use smbcloud_networking_project::{
88
use spinners::Spinner;
99

1010
use crate::{
11-
account::{lib::is_logged_in, login::process_login},
11+
account::login::process_login,
1212
cli::CommandResult,
1313
ui::{description, succeed_message, succeed_symbol},
1414
};
@@ -18,8 +18,9 @@ pub async fn process_project_update_description(
1818
project_id: String,
1919
) -> Result<CommandResult> {
2020
// Check credentials.
21-
if !is_logged_in(env) {
22-
let _ = process_login(env).await;
21+
let is_logged_in = is_logged_in(env).await?;
22+
if !is_logged_in {
23+
let _ = process_login(env, Some(is_logged_in)).await;
2324
}
2425

2526
let access_token = get_smb_token(env)?;
Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
1-
pub async fn is_logged_in(env: Environment) -> bool {
2-
// Check if token file exists
3-
if !smb_token_file_path(env).is_some() {
4-
return false;
5-
}
1+
use {
2+
crate::token::get_smb_token::get_smb_token, smbcloud_model::error_codes::ErrorResponse,
3+
smbcloud_network::environment::Environment, smbcloud_networking_account::me::me,
4+
tracing::debug,
5+
};
6+
7+
pub async fn is_logged_in(env: Environment) -> Result<bool, ErrorResponse> {
68
// Check if token is valid
7-
let access_token = get_smb_token(env)?;
8-
match me(env, access_token).await {
9-
Ok(_) => true,
10-
Err(_) => false,
9+
let access_token = match get_smb_token(env) {
10+
Ok(token) => token,
11+
Err(_) => return Ok(false),
12+
};
13+
match me(env, &access_token).await {
14+
Ok(user) => {
15+
debug!("Authorized as: {:?}", user.id);
16+
Ok(true)
17+
}
18+
Err(_) => Ok(false),
1119
}
1220
}

crates/cli/src/token/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
//pub(crate) mod is_logged_in;
21
pub(crate) mod get_smb_token;
2+
pub(crate) mod is_logged_in;
33
pub(crate) mod smb_token_file_path;

0 commit comments

Comments
 (0)