From 3abf20b347c4011805a3376d0be61f89725ea22c Mon Sep 17 00:00:00 2001 From: Eli Bosley Date: Tue, 21 Jan 2025 12:22:27 -0500 Subject: [PATCH] feat: sso button token exchange --- web/components/SsoButton.ce.vue | 24 +++++++++++++++--------- web/pages/index.vue | 2 +- web/pages/login.vue | 14 ++++++++++++++ web/pages/webComponents.vue | 2 +- 4 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 web/pages/login.vue diff --git a/web/components/SsoButton.ce.vue b/web/components/SsoButton.ce.vue index a0e939689..5d72cda02 100644 --- a/web/components/SsoButton.ce.vue +++ b/web/components/SsoButton.ce.vue @@ -3,10 +3,15 @@ import Button from '~/components/Brand/Button.vue'; import { ACCOUNT } from '~/helpers/urls'; export interface Props { - ssoenabled?: boolean; + ssoenabled?: boolean | string; + ssoEnabled?: boolean; } const props = defineProps(); +const isSsoEnabled = computed( + () => props['ssoenabled'] === true || props['ssoenabled'] === 'true' || props.ssoEnabled +); + const enterCallbackTokenIntoField = (token: string) => { const passwordField = document.querySelector('input[name=password]') as HTMLInputElement; const usernameField = document.querySelector('input[name=username]') as HTMLInputElement; @@ -42,11 +47,11 @@ onMounted(async () => { const sessionState = getStateToken(); if (code && state === sessionState) { - const token = await fetch(new URL('token', ACCOUNT), { + const token = await fetch(new URL('/oauth2/token', ACCOUNT), { method: 'POST', body: new URLSearchParams({ code, - clientId: 'CONNECT_SERVER_SSO', + client_id: 'CONNECT_SERVER_SSO', grant_type: 'authorization_code', }), }); @@ -65,20 +70,21 @@ onMounted(async () => { } }); -const externalSSOUrl = computed(() => { +const navigateToExternalSSOUrl = () => { const url = new URL('sso', ACCOUNT); const callbackUrlLogin = new URL('login', window.location.origin); const state = generateStateToken(); - callbackUrlLogin.searchParams.append('state', state); url.searchParams.append('callbackUrl', callbackUrlLogin.toString()); - return url.toString(); -}); + url.searchParams.append('state', state); + + window.location.href = url.toString(); +};