From b2c6c64323ff8700e3796465f1a22028baff5c39 Mon Sep 17 00:00:00 2001
From: Frank Noirot
Date: Fri, 20 Sep 2024 11:18:10 -0400
Subject: [PATCH 1/5] Show user code while logging in
---
interface.d.ts | 5 ++-
src/main.ts | 39 +++++++++++++++---------
src/preload.ts | 9 ++++--
src/routes/SignIn.tsx | 71 ++++++++++++++++++++++++++++++++-----------
4 files changed, 88 insertions(+), 36 deletions(-)
diff --git a/interface.d.ts b/interface.d.ts
index faf9ce2744..881ee28f91 100644
--- a/interface.d.ts
+++ b/interface.d.ts
@@ -10,7 +10,10 @@ export interface IElectronAPI {
save: typeof dialog.showSaveDialog
openExternal: typeof shell.openExternal
showInFolder: typeof shell.showItemInFolder
- login: (host: string) => Promise
+ /** Require to be called first before {@link loginWithDeviceFlow} */
+ startDeviceFlow: (host: string) => Promise
+ /** Registered by first calling {@link startDeviceFlow}, which sets up the device flow handle */
+ loginWithDeviceFlow: () => Promise
platform: typeof process.env.platform
arch: typeof process.env.arch
version: typeof process.env.version
diff --git a/src/main.ts b/src/main.ts
index aa6ab8e44f..d8ea15bd29 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -160,7 +160,7 @@ ipcMain.handle('shell.openExternal', (event, data) => {
return shell.openExternal(data)
})
-ipcMain.handle('login', async (event, host) => {
+ipcMain.handle('startDeviceFlow', async (_, host: string) => {
// Do an OAuth 2.0 Device Authorization Grant dance to get a token.
// We quiet ts because we are not using this in the standard way.
// @ts-ignore
@@ -178,21 +178,30 @@ ipcMain.handle('login', async (event, host) => {
const handle = await client.deviceAuthorization()
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
- shell.openExternal(handle.verification_uri_complete)
-
- // Wait for the user to login.
- try {
- console.log('Polling for token')
- const tokenSet = await handle.poll()
- console.log('Received token set')
- console.log(tokenSet)
- return tokenSet.access_token
- } catch (e) {
- console.log(e)
- }
+ // Register this handle to be used later.
+ ipcMain.handleOnce('loginWithDeviceFlow', async () => {
+ if (!handle) {
+ return Promise.reject(new Error('No handle available. Did you call startDeviceFlow before calling this?'))
+ }
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
+ shell.openExternal(handle.verification_uri_complete)
+
+ // Wait for the user to login.
+ try {
+ console.log('Polling for token')
+ const tokenSet = await handle.poll()
+ console.log('Received token set')
+ console.log(tokenSet)
+ return tokenSet.access_token
+ } catch (e) {
+ console.log(e)
+ }
+
+ return Promise.reject(new Error('No access token received'))
+ })
- return Promise.reject(new Error('No access token received'))
+ // Return the user code so the app can display it.
+ return handle.user_code
})
ipcMain.handle('kittycad', (event, data) => {
diff --git a/src/preload.ts b/src/preload.ts
index b75575e6c9..6968df94d1 100644
--- a/src/preload.ts
+++ b/src/preload.ts
@@ -11,8 +11,10 @@ const save = (args: any) => ipcRenderer.invoke('dialog.showSaveDialog', args)
const openExternal = (url: any) => ipcRenderer.invoke('shell.openExternal', url)
const showInFolder = (path: string) =>
ipcRenderer.invoke('shell.showItemInFolder', path)
-const login = (host: string): Promise =>
- ipcRenderer.invoke('login', host)
+const startDeviceFlow = (host: string): Promise =>
+ ipcRenderer.invoke('startDeviceFlow', host)
+const loginWithDeviceFlow = (): Promise =>
+ ipcRenderer.invoke('loginWithDeviceFlow')
const isMac = os.platform() === 'darwin'
const isWindows = os.platform() === 'win32'
@@ -61,7 +63,8 @@ const getMachineApiIp = async (): Promise =>
ipcRenderer.invoke('find_machine_api')
contextBridge.exposeInMainWorld('electron', {
- login,
+ startDeviceFlow,
+ loginWithDeviceFlow,
// Passing fs directly is not recommended since it gives a lot of power
// to the browser side / potential malicious code. We restrict what is
// exported.
diff --git a/src/routes/SignIn.tsx b/src/routes/SignIn.tsx
index a1d0414b52..bbfe237319 100644
--- a/src/routes/SignIn.tsx
+++ b/src/routes/SignIn.tsx
@@ -5,7 +5,7 @@ import { Themes, getSystemTheme } from '../lib/theme'
import { PATHS } from 'lib/paths'
import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
import { APP_NAME } from 'lib/constants'
-import { CSSProperties, useCallback } from 'react'
+import { CSSProperties, useCallback, useState } from 'react'
import { Logo } from 'components/Logo'
import { CustomIcon } from 'components/CustomIcon'
import { Link } from 'react-router-dom'
@@ -13,12 +13,14 @@ import { APP_VERSION } from './Settings'
import { openExternalBrowserIfDesktop } from 'lib/openWindow'
import { toSync } from 'lib/utils'
import { reportRejection } from 'lib/trap'
+import toast from 'react-hot-toast'
const subtleBorder =
'border border-solid border-chalkboard-30 dark:border-chalkboard-80'
const cardArea = `${subtleBorder} rounded-lg px-6 py-3 text-chalkboard-70 dark:text-chalkboard-30`
const SignIn = () => {
+ const [userCode, setUserCode] = useState('')
const {
auth: { send },
settings: {
@@ -51,12 +53,24 @@ const SignIn = () => {
const signInDesktop = async () => {
// We want to invoke our command to login via device auth.
- try {
- const token: string = await window.electron.login(VITE_KC_API_BASE_URL)
- send({ type: 'Log in', token })
- } catch (error) {
- console.error('Error with login button', error)
+ const userCodeToDisplay = await window.electron
+ .startDeviceFlow(VITE_KC_API_BASE_URL)
+ .catch(reportError)
+ if (!userCodeToDisplay) {
+ console.error('No user code received while trying to log in')
+ toast.error('Error while trying to log in')
+ return
}
+ setUserCode(userCodeToDisplay)
+
+ // Now that we have the user code, we can kick off the final login step.
+ const token = await window.electron.loginWithDeviceFlow().catch(reportError)
+ if (!token) {
+ console.error('No token received while trying to log in')
+ toast.error('Error while trying to log in')
+ return
+ }
+ send({ type: 'Log in', token })
}
return (
@@ -105,17 +119,40 @@ const SignIn = () => {
.
{isDesktop() ? (
-
+
+ {!userCode ? (
+
+ ) : (
+ <>
+
+ You should see the following code in your browser
+
+
+ {userCode.split('').map((char, i) => (
+
+ {char}
+
+ ))}
+
+ >
+ )}
+
) : (
Date: Fri, 20 Sep 2024 11:21:16 -0400
Subject: [PATCH 2/5] fmt
---
src/main.ts | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/main.ts b/src/main.ts
index d8ea15bd29..8331ec98f3 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -181,7 +181,11 @@ ipcMain.handle('startDeviceFlow', async (_, host: string) => {
// Register this handle to be used later.
ipcMain.handleOnce('loginWithDeviceFlow', async () => {
if (!handle) {
- return Promise.reject(new Error('No handle available. Did you call startDeviceFlow before calling this?'))
+ return Promise.reject(
+ new Error(
+ 'No handle available. Did you call startDeviceFlow before calling this?'
+ )
+ )
}
// eslint-disable-next-line @typescript-eslint/no-floating-promises
shell.openExternal(handle.verification_uri_complete)
From 5ba9e4351a04ca0999ba11d4e1f27bb732216cd6 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
Date: Fri, 20 Sep 2024 15:38:31 +0000
Subject: [PATCH 3/5] =?UTF-8?q?A=20snapshot=20a=20day=20keeps=20the=20bugs?=
=?UTF-8?q?=20away!=20=F0=9F=93=B7=F0=9F=90=9B=20(OS:=20windows-latest)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...uld-be-stable-XY-1-Google-Chrome-win32.png | Bin 35452 -> 28735 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XY-1-Google-Chrome-win32.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XY-1-Google-Chrome-win32.png
index cde2a743b2511a4bf84f8e40bc5c18ca8ec17ebc..631c453ead70f4fa2f8628c97a24a43486e06e40 100644
GIT binary patch
literal 28735
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
literal 35452
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