Skip to main content

Mountain/IPC/WindAirCommands/
AuthenticateUser.rs

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