From c321db4cab5388f85988cc868a3b4f6979eadeb2 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 21 Jan 2020 13:55:46 -0500 Subject: [PATCH] fallback to keychain for auth_token if desktop users don't have an auth_token cookie --- electron/index.js | 6 ++++++ ui/index.jsx | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/electron/index.js b/electron/index.js index 8ef3776f7..e57583c7b 100644 --- a/electron/index.js +++ b/electron/index.js @@ -321,6 +321,12 @@ ipcMain.on('version-info-requested', () => { // In a few months, we can remove the keytar dependency and below calls once // enough users have moved over to cookies +ipcMain.on('get-auth-token', event => { + keytar.getPassword('LBRY', 'auth_token').then(token => { + event.sender.send('auth-token-response', token ? token.toString().trim() : null); + }); +}); + ipcMain.on('delete-auth-token', (event, password) => { keytar.deletePassword('LBRY', 'auth_token', password).then(res => { event.sender.send('delete-auth-token-response', res); diff --git a/ui/index.jsx b/ui/index.jsx index c7d8e1310..cca007385 100644 --- a/ui/index.jsx +++ b/ui/index.jsx @@ -117,6 +117,27 @@ Lbryio.setOverride( 'getAuthToken', () => new Promise(resolve => { + // @if TARGET='app' + const desktopAuthTokenToReturn = authToken || getAuthToken(); + + if (desktopAuthTokenToReturn) { + resolve(desktopAuthTokenToReturn); + } + + // Old users who haven't moved to storing the auth_token in a cookie + // Get it => set it => delete from keychain + ipcRenderer.once('auth-token-response', (event, keychainToken) => { + Lbryio.authToken = keychainToken; + setAuthToken(keychainToken); + resolve(keychainToken); + + ipcRenderer.send('delete-auth-token'); + }); + + ipcRenderer.send('get-auth-token'); + // @endif + + // @if TARGET='web' const authTokenToReturn = authToken || getAuthToken(); if (authTokenToReturn !== null) { @@ -124,6 +145,7 @@ Lbryio.setOverride( } resolve(authTokenToReturn); + // @endif }) );