From e2c326bf1e5e1e93742a36f1a9a72d497329bf36 Mon Sep 17 00:00:00 2001 From: filipriec Date: Mon, 31 Mar 2025 16:16:07 +0200 Subject: [PATCH] login gRPC --- client/src/modes/canvas/common.rs | 4 +++- client/src/tui/functions/common/login.rs | 29 +++++++++++++++++++----- client/src/ui/handlers/ui.rs | 2 ++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/client/src/modes/canvas/common.rs b/client/src/modes/canvas/common.rs index 15dbfe5..92379c4 100644 --- a/client/src/modes/canvas/common.rs +++ b/client/src/modes/canvas/common.rs @@ -4,6 +4,7 @@ use crate::tui::terminal::core::TerminalCore; use crate::state::pages::{form::FormState, auth::AuthState}; use crate::state::state::AppState; use crate::services::grpc_client::GrpcClient; +use crate::services::auth::AuthClient; use crate::tui::functions::common::{ form::{save as form_save, revert}, login::{save as login_save, cancel} @@ -14,6 +15,7 @@ pub async fn handle_core_action( form_state: &mut FormState, auth_state: &mut AuthState, grpc_client: &mut GrpcClient, + auth_client: &mut AuthClient, terminal: &mut TerminalCore, app_state: &mut AppState, current_position: &mut u64, @@ -22,7 +24,7 @@ pub async fn handle_core_action( match action { "save" => { if app_state.ui.show_login { - let message = login_save(auth_state, grpc_client).await?; + let message = login_save(auth_state, auth_client).await?; Ok((false, message)) } else { let message = form_save( diff --git a/client/src/tui/functions/common/login.rs b/client/src/tui/functions/common/login.rs index 54b04ba..72e8f1a 100644 --- a/client/src/tui/functions/common/login.rs +++ b/client/src/tui/functions/common/login.rs @@ -1,18 +1,35 @@ // src/tui/functions/common/login.rs - +use crate::services::auth::AuthClient; use crate::state::pages::auth::AuthState; -use crate::services::grpc_client::GrpcClient; pub async fn save( auth_state: &mut AuthState, - grpc_client: &mut GrpcClient, + auth_client: &mut AuthClient, ) -> Result> { - // Implement your login-specific save logic here - Ok("Login credentials saved - not implemented yet".to_string()) + let identifier = auth_state.username.clone(); + let password = auth_state.password.clone(); + + match auth_client.login(identifier, password).await { + Ok(response) => { + auth_state.auth_token = Some(response.access_token); + auth_state.user_id = Some(response.user_id); + auth_state.role = Some(response.role); + auth_state.error_message = None; + Ok("Login successful!".to_string()) + } + Err(e) => { + let error_message = format!("Login failed: {}", e); + auth_state.error_message = Some(error_message.clone()); + Ok(error_message) + } + } } pub async fn cancel( auth_state: &mut AuthState, ) -> String { - "Login credentials canceled - not implemented yet".to_string() + auth_state.username.clear(); + auth_state.password.clear(); + auth_state.error_message = None; + "Login canceled".to_string() } diff --git a/client/src/ui/handlers/ui.rs b/client/src/ui/handlers/ui.rs index e3e7226..c026687 100644 --- a/client/src/ui/handlers/ui.rs +++ b/client/src/ui/handlers/ui.rs @@ -2,6 +2,7 @@ use crate::tui::terminal::TerminalCore; use crate::services::grpc_client::GrpcClient; +use crate::services::auth::AuthClient; use crate::services::ui_service::UiService; // Add this import use crate::tui::terminal::EventReader; use crate::tui::functions::common::CommandHandler; @@ -17,6 +18,7 @@ pub async fn run_ui() -> Result<(), Box> { let config = Config::load()?; let mut terminal = TerminalCore::new()?; let mut grpc_client = GrpcClient::new().await?; + let mut auth_client = AuthClient::new().await?; let mut command_handler = CommandHandler::new(); let theme = Theme::from_str(&config.colors.theme); let mut auth_state = AuthState::default();