From 9a10fcb590f46513f6b835975a16863c810a0b0a Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Fri, 20 Feb 2026 12:08:47 +0000 Subject: [PATCH] authclient (#5761) # Description of Changes --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --- frontend/src-tauri/src/commands/auth.rs | 2 ++ frontend/src/desktop/services/authService.ts | 6 ++++-- frontend/src/desktop/services/tauriHttpClient.ts | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/frontend/src-tauri/src/commands/auth.rs b/frontend/src-tauri/src/commands/auth.rs index 65f8f6623..cd47ed9e0 100644 --- a/frontend/src-tauri/src/commands/auth.rs +++ b/frontend/src-tauri/src/commands/auth.rs @@ -336,6 +336,7 @@ pub async fn login( let client = reqwest::Client::builder() .danger_accept_invalid_certs(true) .timeout(std::time::Duration::from_secs(30)) + .user_agent("StirlingPDF-Desktop/1.0 Tauri") .build() .map_err(|e| { log::error!("Failed to create HTTP client: {}", e); @@ -689,6 +690,7 @@ async fn exchange_code_for_token( let client = reqwest::Client::builder() .danger_accept_invalid_certs(true) .timeout(std::time::Duration::from_secs(30)) + .user_agent("StirlingPDF-Desktop/1.0 Tauri") .build() .map_err(|e| { log::error!("Failed to create HTTP client: {}", e); diff --git a/frontend/src/desktop/services/authService.ts b/frontend/src/desktop/services/authService.ts index 121e60d61..c02d67bb6 100644 --- a/frontend/src/desktop/services/authService.ts +++ b/frontend/src/desktop/services/authService.ts @@ -4,6 +4,7 @@ import { open as shellOpen } from '@tauri-apps/plugin-shell'; import { connectionModeService } from '@app/services/connectionModeService'; import { tauriBackendService } from '@app/services/tauriBackendService'; import axios from 'axios'; +import tauriHttpClient from '@app/services/tauriHttpClient'; import { DESKTOP_DEEP_LINK_CALLBACK, STIRLING_SAAS_URL, SUPABASE_KEY } from '@app/constants/connection'; export interface UserInfo { @@ -559,8 +560,9 @@ export class AuthService { return false; } - // Call the server's refresh endpoint - const response = await axios.post( + // Call the server's refresh endpoint using Tauri HTTP client so the desktop + // User-Agent is sent - the backend uses it to issue long-lived desktop tokens. + const response = await tauriHttpClient.post( `${serverUrl}/api/v1/auth/refresh`, {}, { diff --git a/frontend/src/desktop/services/tauriHttpClient.ts b/frontend/src/desktop/services/tauriHttpClient.ts index 6fcec36bb..a887f05f1 100644 --- a/frontend/src/desktop/services/tauriHttpClient.ts +++ b/frontend/src/desktop/services/tauriHttpClient.ts @@ -59,7 +59,9 @@ interface Interceptors { class TauriHttpClient { public defaults: TauriHttpRequestConfig = { baseURL: '', - headers: {}, + headers: { + 'User-Agent': 'StirlingPDF-Desktop/1.0 Tauri', + }, timeout: 120000, responseType: 'json', withCredentials: false, // Desktop doesn't need credentials (backend has allowCredentials=false)