diff --git a/src/helpers/redirectToProvider.ts b/src/helpers/redirectToProvider.ts index df67d3af9..e7cd65e7e 100644 --- a/src/helpers/redirectToProvider.ts +++ b/src/helpers/redirectToProvider.ts @@ -1,4 +1,5 @@ import {createRandomID} from '@/helpers/randomId' +import {parseURL} from 'ufo' interface Provider { name: string @@ -7,7 +8,15 @@ interface Provider { clientId: string } -export const redirectToProvider = (provider: Provider, redirectUrl: string) => { +export const redirectToProvider = (provider: Provider, redirectUrl: string = '') => { + + // We're not using the redirect url provided by the server to allow redirects when using the electron app. + // The implications are not quite clear yet hence the logic to pass in another redirect url still exists. + if (redirectUrl === '') { + const {host, protocol} = parseURL(window.location.href) + redirectUrl = `${protocol}//${host}/auth/openid/` + } + const state = createRandomID(24) localStorage.setItem('state', state) diff --git a/src/store/modules/config.js b/src/store/modules/config.js index 223e80983..82c2b20c6 100644 --- a/src/store/modules/config.js +++ b/src/store/modules/config.js @@ -83,7 +83,7 @@ export default { ctx.state.auth.openidConnect.providers.length === 1 && window.location.pathname.startsWith('/login') // Kinda hacky, but prevents an endless loop. ) { - redirectToProvider(ctx.state.auth.openidConnect.providers[0], ctx.state.auth.openidConnect.redirectUrl) + redirectToProvider(ctx.state.auth.openidConnect.providers[0]) } }, }, diff --git a/src/views/user/Login.vue b/src/views/user/Login.vue index a720fdb1b..daed587fa 100644 --- a/src/views/user/Login.vue +++ b/src/views/user/Login.vue @@ -207,9 +207,7 @@ export default { }, redirectToProvider(provider) { - const {host, protocol} = parseURL(window.location.href) - const redirectUrl = `${protocol}//${host}/auth/openid/` - redirectToProvider(provider, redirectUrl) + redirectToProvider(provider) }, }, }