@smbcloud / cli / commits / 2c12e95

reuse login function from nerworking account

Seto committed Sep 26, 2025 at 17:00 UTC 2c12e955512c264f2438482c401f4ebbfa234d53
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)