From 095ccf114d9f331c450443eb4bf2952154bf0992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20Koral?= <45078678+oguzhankoral@users.noreply.github.com> Date: Mon, 27 Oct 2025 15:31:56 +0300 Subject: [PATCH] feat: auth in dui (#71) * feat: auth in dui * feat: enable auth with registered app * feat: handle exceptions --- components/accounts/SignInFlow.vue | 21 +++- components/home/NoAccountsPanel.vue | 8 +- lib/authn/useAuthManager.ts | 22 +++++ lib/bindings/definitions/IAccountBinding.ts | 6 ++ pages/authn/callback.vue | 101 ++++++++++++++++++++ 5 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 lib/authn/useAuthManager.ts create mode 100644 pages/authn/callback.vue diff --git a/components/accounts/SignInFlow.vue b/components/accounts/SignInFlow.vue index f400420..3c158da 100644 --- a/components/accounts/SignInFlow.vue +++ b/components/accounts/SignInFlow.vue @@ -13,7 +13,8 @@ @clear="showCustomServerInput = false" /> - Sign In + Log in + Sign in + ($accountBinding as unknown as BaseBridge).availableMethodNames.includes(name) +) + const accountCheckerIntervalFn = useIntervalFn( async () => { const previousAccountCount = accountStore.accounts.length @@ -79,6 +87,17 @@ const accountCheckerIntervalFn = useIntervalFn( { immediate: false } ) +const { generateChallenge } = useAuthManager() + +const logIn = () => { + const challenge = generateChallenge() + const serverUrl = customServerUrl.value + ? new URL(customServerUrl.value).origin + : 'https://app.speckle.systems' + const authUrl = `${serverUrl}/authn/verify/sdui/${challenge}` + window.location.href = authUrl +} + const startAccountAddFlow = () => { isAddingAccount.value = true accountCheckerIntervalFn.resume() diff --git a/components/home/NoAccountsPanel.vue b/components/home/NoAccountsPanel.vue index 89ce3d1..9e70abf 100644 --- a/components/home/NoAccountsPanel.vue +++ b/components/home/NoAccountsPanel.vue @@ -5,7 +5,7 @@ > Welcome to Speckle -
+
@@ -37,10 +37,16 @@