diff --git a/electron/main.cjs b/electron/main.cjs index cefd8194..2b0765e6 100644 --- a/electron/main.cjs +++ b/electron/main.cjs @@ -72,12 +72,21 @@ function createWindow() { mainWindow.setMenuBarVisibility(false); } - mainWindow.webContents.setUserAgent( - `Termix-Desktop/${appVersion} (${platform}; Electron/${electronVersion})`, + const customUserAgent = `Termix-Desktop/${appVersion} (${platform}; Electron/${electronVersion})`; + mainWindow.webContents.setUserAgent(customUserAgent); + + mainWindow.webContents.session.webRequest.onBeforeSendHeaders( + (details, callback) => { + details.requestHeaders["X-Electron-App"] = "true"; + + details.requestHeaders["User-Agent"] = customUserAgent; + + callback({ requestHeaders: details.requestHeaders }); + }, ); if (isDev) { - mainWindow.loadURL("http:://localhost:5173"); + mainWindow.loadURL("http://localhost:5173"); mainWindow.webContents.openDevTools(); } else { const indexPath = path.join(__dirname, "..", "dist", "index.html"); diff --git a/src/ui/desktop/authentication/Auth.tsx b/src/ui/desktop/authentication/Auth.tsx index 0d3d190e..ddec0713 100644 --- a/src/ui/desktop/authentication/Auth.tsx +++ b/src/ui/desktop/authentication/Auth.tsx @@ -241,6 +241,22 @@ export function Auth({ throw new Error(t("errors.loginFailed")); } + if (isInElectronWebView() && res.token) { + try { + localStorage.setItem("jwt", res.token); + window.parent.postMessage( + { + type: "AUTH_SUCCESS", + token: res.token, + source: "auth_component", + platform: "desktop", + timestamp: Date.now(), + }, + "*", + ); + } catch (e) {} + } + const [meRes] = await Promise.all([getUserInfo()]); setInternalLoggedIn(true); @@ -398,6 +414,22 @@ export function Auth({ localStorage.setItem("jwt", res.token); } + if (isInElectronWebView() && res.token) { + try { + localStorage.setItem("jwt", res.token); + window.parent.postMessage( + { + type: "AUTH_SUCCESS", + token: res.token, + source: "totp_auth_component", + platform: "desktop", + timestamp: Date.now(), + }, + "*", + ); + } catch (e) {} + } + setInternalLoggedIn(true); setLoggedIn(true); setIsAdmin(!!res.is_admin); @@ -485,6 +517,24 @@ export function Auth({ getUserInfo() .then((meRes) => { + if (isInElectronWebView()) { + const token = getCookie("jwt") || localStorage.getItem("jwt"); + if (token) { + try { + window.parent.postMessage( + { + type: "AUTH_SUCCESS", + token: token, + source: "oidc_callback", + platform: "desktop", + timestamp: Date.now(), + }, + "*", + ); + } catch (e) {} + } + } + setInternalLoggedIn(true); setLoggedIn(true); setIsAdmin(!!meRes.is_admin); @@ -577,7 +627,8 @@ export function Auth({ if (showServerConfig === null) { return (