mirror of
https://github.com/go-vikunja/vikunja.git
synced 2026-05-08 21:08:04 -05:00
Add a complete OAuth 2.0 PKCE flow for the Electron desktop app: - Implement PKCE code generation and token exchange in Electron - Register custom protocol handler (vikunja-desktop://) for deep links - Handle deep link race conditions (buffered URLs, process.argv fallback) - Prevent duplicate IPC listener accumulation on re-mount - Preserve sub-paths in OAuth authorize URL for non-root deployments - Add token refresh support using Electron's net module
16 lines
623 B
JavaScript
16 lines
623 B
JavaScript
const {contextBridge, ipcRenderer} = require('electron')
|
|
|
|
contextBridge.exposeInMainWorld('vikunjaDesktop', {
|
|
startOAuthLogin: (apiUrl) => ipcRenderer.invoke('oauth:start-login', apiUrl),
|
|
onOAuthTokens: (callback) => {
|
|
ipcRenderer.removeAllListeners('oauth:tokens')
|
|
ipcRenderer.on('oauth:tokens', (_event, tokens) => callback(tokens))
|
|
},
|
|
onOAuthError: (callback) => {
|
|
ipcRenderer.removeAllListeners('oauth:error')
|
|
ipcRenderer.on('oauth:error', (_event, error) => callback(error))
|
|
},
|
|
refreshToken: (apiUrl, refreshToken) => ipcRenderer.invoke('oauth:refresh-token', apiUrl, refreshToken),
|
|
isDesktop: true,
|
|
})
|