diff --git a/frontend/dist-electron/main.js b/frontend/dist-electron/main.js index d62915f..3c52098 100644 --- a/frontend/dist-electron/main.js +++ b/frontend/dist-electron/main.js @@ -519,20 +519,60 @@ electron_1.ipcMain.handle('get-server-users', async () => { initBackend(); retur electron_1.ipcMain.handle('switch-account', async (event, loginName) => await handleSwitchAccount(loginName)); electron_1.ipcMain.handle('open-external', (event, url) => electron_1.shell.openExternal(url)); electron_1.ipcMain.handle('open-steam-app-login', async () => { - console.log('[SteamClient] Triggering desktop login window...'); - // Force Steam to show login window. - // steam://open/login is the protocol for this. + console.log('[SteamClient] Preparing for fresh login...'); + await killSteam(); + if (process.platform === 'win32') { + // Clear auto-login registry + const clearReg = 'reg add "HKCU\\Software\\Valve\\Steam" /v AutoLoginUser /t REG_SZ /d "" /f'; + await new Promise((res) => (0, child_process_1.exec)(clearReg, () => res())); + } + else if (process.platform === 'linux') { + // On Linux we can use the steamClient helper to set an empty user + await steam_client_1.steamClient.setAutoLoginUser("", undefined, ""); + } const command = process.platform === 'win32' ? 'start steam://open/login' : 'xdg-open steam://open/login'; (0, child_process_1.exec)(command); return true; }); electron_1.ipcMain.handle('open-steam-login', async (event, expectedSteamId) => { - const loginSession = electron_1.session.fromPartition('persist:steam-login'); - // Removed: automatic clearStorageData to allow cookie persistence + // Use a unique partition per account to prevent session bleeding + const partitionId = expectedSteamId ? `persist:steam-login-${expectedSteamId}` : 'persist:steam-login-new'; + const loginSession = electron_1.session.fromPartition(partitionId); + // If adding a brand new account, explicitly clear previous trash + if (!expectedSteamId) { + console.log('[Auth] Clearing session for new account login...'); + await loginSession.clearStorageData({ storages: ['cookies', 'localstorage', 'indexdb'] }); + } + // If we have an existing cookie string for this account, pre-inject it + if (expectedSteamId) { + const accounts = store.get('accounts'); + const account = accounts.find(a => a.steamId === expectedSteamId); + if (account?.steamLoginSecure) { + console.log(`[Auth] Pre-injecting existing cookies for ${account.personaName}...`); + const cookiePairs = account.steamLoginSecure.split(';').map(c => c.trim()); + for (const pair of cookiePairs) { + const [name, value] = pair.split('='); + if (name && value) { + try { + await loginSession.cookies.set({ + url: 'https://steamcommunity.com', + domain: 'steamcommunity.com', + name: name, + value: value, + path: '/', + secure: true, + httpOnly: name.includes('Secure') + }); + } + catch (e) { } + } + } + } + } return new Promise((resolve) => { const loginWindow = new electron_1.BrowserWindow({ width: 800, height: 700, parent: mainWindow || undefined, modal: true, title: 'Login to Steam', - webPreferences: { nodeIntegration: false, contextIsolation: true, partition: 'persist:steam-login' } + webPreferences: { nodeIntegration: false, contextIsolation: true, partition: partitionId } }); loginWindow.loadURL('https://steamcommunity.com/login/home/?goto=my/gcpd/730'); const checkCookie = setInterval(async () => { diff --git a/frontend/package-lock.json b/frontend/package-lock.json index da19ae8..992350e 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "ultimate-ban-tracker-desktop", - "version": "1.0.0", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ultimate-ban-tracker-desktop", - "version": "1.0.0", + "version": "1.2.0", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@emotion/react": "^11.14.0", diff --git a/frontend/package.json b/frontend/package.json index 3529cdb..f20a0c0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "ultimate-ban-tracker-desktop", "description": "Professional Steam Account Manager & Ban Tracker", - "version": "1.1.0", + "version": "1.2.0", "author": "Nils Pukropp ", "homepage": "https://narl.io", "license": "SEE LICENSE IN LICENSE",