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
16	password:String,
17
18	provider:String,
19) -> Result<AuthResponseDTO::Struct, String> {
20	dev_log!(
21		"grpc",
22		"[WindAirCommands] AuthenticateUser called: {} via {}",
23		username,
24		provider
25	);
26
27	let air_address = GetAirAddress::Fn()?;
28
29	let client = GetOrCreateAirClient::Fn(air_address).await?;
30
31	let request_id = uuid::Uuid::new_v4().to_string();
32
33	let token = client
34		.authenticate(request_id, username, password, provider)
35		.await
36		.map_err(|e| format!("Authentication failed: {:?}", e))?;
37
38	let result = AuthResponseDTO::Struct { success:true, token, error:None };
39
40	dev_log!("grpc", "[WindAirCommands] Authentication completed: success={}", result.success);
41
42	Ok(result)
43}