From f5c31bd209a62e3484afded4dacc6d094b54b335 Mon Sep 17 00:00:00 2001 From: viehlieb Date: Thu, 8 Dec 2022 15:19:57 +0100 Subject: [PATCH 1/2] redirect to oidc provider if configured correctly --- src/helpers/redirectToProvider.ts | 3 +++ src/stores/auth.ts | 12 +++++++++++- src/types/IProvider.ts | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/helpers/redirectToProvider.ts b/src/helpers/redirectToProvider.ts index d5ca9f35a..c2eb4b63c 100644 --- a/src/helpers/redirectToProvider.ts +++ b/src/helpers/redirectToProvider.ts @@ -17,3 +17,6 @@ export const redirectToProvider = (provider: IProvider, redirectUrl = '') => { window.location.href = `${provider.authUrl}?client_id=${provider.clientId}&redirect_uri=${redirectUrl}${provider.key}&response_type=code&scope=openid email profile&state=${state}` } +export const redirectToProviderOnLogout = (provider: IProvider) => { + if (provider.logoutUrl.length > 0) window.location.href = `${provider.logoutUrl}` +} diff --git a/src/stores/auth.ts b/src/stores/auth.ts index 4bec95883..cb0aa1926 100644 --- a/src/stores/auth.ts +++ b/src/stores/auth.ts @@ -9,7 +9,7 @@ import UserSettingsService from '@/services/userSettings' import {getToken, refreshToken, removeToken, saveToken} from '@/helpers/auth' import {setModuleLoading} from '@/stores/helper' import {success} from '@/message' -import {redirectToProvider} from '@/helpers/redirectToProvider' +import {redirectToProvider, redirectToProviderOnLogout} from '@/helpers/redirectToProvider' import {AUTH_TYPES, type IUser} from '@/modelTypes/IUser' import type {IUserSettings} from '@/modelTypes/IUserSettings' import router from '@/router' @@ -356,6 +356,16 @@ export const useAuthStore = defineStore('auth', () => { window.localStorage.clear() // Clear all settings and history we might have saved in local storage. await router.push({name: 'user.login'}) await checkAuth() + + // if configured, redirect to OIDC Provider on logout + const {auth} = useConfigStore() + if ( + auth.local.enabled === false && + auth.openidConnect.enabled && + auth.openidConnect.providers?.length === 1) + { + redirectToProviderOnLogout(auth.openidConnect.providers[0]) + } } return { diff --git a/src/types/IProvider.ts b/src/types/IProvider.ts index b70c1af1c..420728926 100644 --- a/src/types/IProvider.ts +++ b/src/types/IProvider.ts @@ -3,4 +3,5 @@ export interface IProvider { key: string; authUrl: string; clientId: string; + logoutUrl: string; } -- 2.40.1 From 5269cd1f8f251f2e9b4220bbfdadfbd1e2f430e1 Mon Sep 17 00:00:00 2001 From: viehlieb Date: Fri, 23 Dec 2022 14:53:04 +0100 Subject: [PATCH 2/2] make if more explicit --- src/helpers/redirectToProvider.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/helpers/redirectToProvider.ts b/src/helpers/redirectToProvider.ts index c2eb4b63c..c1124df93 100644 --- a/src/helpers/redirectToProvider.ts +++ b/src/helpers/redirectToProvider.ts @@ -18,5 +18,7 @@ export const redirectToProvider = (provider: IProvider, redirectUrl = '') => { window.location.href = `${provider.authUrl}?client_id=${provider.clientId}&redirect_uri=${redirectUrl}${provider.key}&response_type=code&scope=openid email profile&state=${state}` } export const redirectToProviderOnLogout = (provider: IProvider) => { - if (provider.logoutUrl.length > 0) window.location.href = `${provider.logoutUrl}` + if (provider.logoutUrl.length > 0){ + window.location.href = `${provider.logoutUrl}` + } } -- 2.40.1