Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/IPC/WindAirCommands/
AuthenticateUser.rs

1//! `AuthenticateUser` Tauri command - delegate sign-in to
2//! Air's auth service for the named provider (GitHub / GitLab
3//! / Microsoft / etc).
4
5use crate::{
6	IPC::WindAirCommands::{AuthResponseDTO, GetAirAddress, GetOrCreateAirClient},
7	dev_log,
8};
9
10#[tauri::command]
11pub async fn AuthenticateUser(
12	username:String,
13
14	password:String,
15
16	provider:String,
17) -> Result<AuthResponseDTO::Struct, String> {
18	dev_log!(
19		"grpc",
20		"[WindAirCommands] AuthenticateUser called: {} via {}",
21		username,
22		provider
23	);
24
25	let air_address = GetAirAddress::Fn()?;
26
27	let client = GetOrCreateAirClient::Fn(air_address).await?;
28
29	let request_id = uuid::Uuid::new_v4().to_string();
30
31	let token = client
32		.authenticate(request_id, username, password, provider)
33		.await
34		.map_err(|e| format!("Authentication failed: {:?}", e))?;
35
36	let result = AuthResponseDTO::Struct { success:true, token, error:None };
37
38	dev_log!("grpc", "[WindAirCommands] Authentication completed: success={}", result.success);
39
40	Ok(result)
41}