3 files changed
+39
-28
crates/cli/src/account/login/process.rs
+10
-26
@@ -15,23 +15,25 @@ use {
15
reqwest::{Client, StatusCode},
16
smbcloud_model::{
17
account::{
18
- ErrorCode as AccountErrorCode, ErrorCode::EmailNotFound, ErrorCode::EmailUnverified,
19
- ErrorCode::GithubNotLinked, ErrorCode::PasswordNotSet, GithubInfo, SmbAuthorization,
20
- User,
18
+ ErrorCode::{
19
+ self as AccountErrorCode, EmailNotFound, EmailUnverified, GithubNotLinked,
20
+ PasswordNotSet,
21
+ },
22
+ GithubInfo, SmbAuthorization, User,
23
},
24
forgot::{Param, UserUpdatePassword},
23
- login::{AccountStatus, LoginArgs, LoginParams, UserParam},
25
+ login::{AccountStatus, LoginArgs},
26
signup::{GithubEmail, Provider, SignupGithubParams, SignupUserGithub},
27
},
26
- smbcloud_network::{environment::Environment, network::request_login},
28
+ smbcloud_network::environment::Environment,
29
smbcloud_networking::{
30
constants::{
31
PATH_LINK_GITHUB_ACCOUNT, PATH_RESEND_CONFIRMATION, PATH_RESET_PASSWORD_INSTRUCTIONS,
30
- PATH_USERS_PASSWORD, PATH_USERS_SIGN_IN,
32
+ PATH_USERS_PASSWORD,
33
},
34
smb_base_url_builder,
35
},
34
- smbcloud_networking_account::signup::check_email,
36
+ smbcloud_networking_account::{login::login, signup::check_email},
37
smbcloud_utils::email_validation,
38
spinners::Spinner,
39
};
@@ -333,19 +335,7 @@ async fn do_process_login(env: Environment, args: LoginArgs) -> Result<CommandRe
335
spinners::Spinners::SimpleDotsScrolling,
336
succeed_message("Loading"),
337
);
336
-
337
- let login_params = LoginParams {
338
- user: UserParam {
339
- email: args.username,
340
- password: args.password,
341
- },
342
- };
343
-
344
- let builder = Client::new()
345
- .post(build_smb_login_url(env))
346
- .json(&login_params);
347
-
348
- let account_status = match request_login(builder).await {
338
+ let account_status = match login(env, args.username, args.password).await {
339
Ok(response) => response,
340
Err(_) => return Err(anyhow!(fail_message("Check your internet connection."))),
341
};
@@ -562,12 +552,6 @@ async fn input_reset_password_token(env: Environment) -> Result<CommandResult> {
552
}
553
}
554
565
-fn build_smb_login_url(env: Environment) -> String {
566
- let mut url_builder = smb_base_url_builder(env);
567
- url_builder.add_route(PATH_USERS_SIGN_IN);
568
- url_builder.build()
569
-}
570
-
555
fn build_smb_resend_email_verification_url(env: Environment) -> String {
556
let mut url_builder = smb_base_url_builder(env);
557
url_builder.add_route(PATH_RESEND_CONFIRMATION);
crates/smbcloud-network/src/network.rs
+22
@@ -97,6 +97,28 @@ pub async fn request_login(builder: RequestBuilder) -> Result<AccountStatus, Err
97
});
98
}
99
};
100
+
101
+ let response = match response.status() {
102
+ reqwest::StatusCode::OK
103
+ | reqwest::StatusCode::NOT_FOUND
104
+ | reqwest::StatusCode::UNPROCESSABLE_ENTITY => response,
105
+ status => {
106
+ error!(
107
+ "Response are neither OK, NOT_FOUND, or UNPROCESSABLE_ENTITY: {:?}",
108
+ status
109
+ );
110
+ return parse_error_response(response).await;
111
+ }
112
+ };
113
+
114
+ if LOG_RESPONSE_BODY {
115
+ println!();
116
+ println!("Parse >>>>");
117
+ println!("{:?}", &response.status());
118
+ println!("Parse >>>>");
119
+ println!();
120
+ }
121
+
122
match (response.status(), response.headers().get("Authorization")) {
123
(StatusCode::OK, Some(token)) => {
124
// Login successful, let's get the access token for real.
crates/smbcloud-networking-account/src/login.rs
+7
-2
@@ -2,7 +2,7 @@ use {
2
reqwest::Client,
3
smbcloud_model::{
4
error_codes::ErrorResponse,
5
- login::{AccountStatus, LoginArgs},
5
+ login::{AccountStatus, LoginParams, UserParam},
6
},
7
smbcloud_network::{environment::Environment, network::request_login},
8
smbcloud_networking::{
@@ -16,7 +16,12 @@ pub async fn login(
16
username: String,
17
password: String,
18
) -> Result<AccountStatus, ErrorResponse> {
19
- let login_params = LoginArgs { username, password };
19
+ let login_params = LoginParams {
20
+ user: UserParam {
21
+ email: username,
22
+ password: password,
23
+ },
24
+ };
25
let builder = Client::new()
26
.post(build_smb_login_url(env))
27
.json(&login_params)