Skip to main content

Mountain/IPC/WindAirCommands/
AuthenticateUser.rs

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