From 4244d4158233f6a33be60d77611b046220eac5a3 Mon Sep 17 00:00:00 2001 From: Sychev Andrey Date: Wed, 5 Aug 2026 09:00:37 +0200 Subject: [PATCH] dbeaver/pro#4417 feat: skip navigation when in-tab redirect --- .../src/AuthenticationService.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/webapp/packages/plugin-authentication/src/AuthenticationService.ts b/webapp/packages/plugin-authentication/src/AuthenticationService.ts index a8e59ab428..2a2f4d1c2a 100644 --- a/webapp/packages/plugin-authentication/src/AuthenticationService.ts +++ b/webapp/packages/plugin-authentication/src/AuthenticationService.ts @@ -108,9 +108,9 @@ export class AuthenticationService extends Bootstrap { try { const logoutResult = await this.userInfoResource.logout(providerId, configurationId); - this.handleRedirectLinks(logoutResult.result); + const sameTabRedirect = this.handleRedirectLinks(logoutResult.result); - if (!this.administrationScreenService.isConfigurationMode && !providerId) { + if (!sameTabRedirect && !this.administrationScreenService.isConfigurationMode && !providerId) { this.screenService.navigateToRoot(); } @@ -121,7 +121,8 @@ export class AuthenticationService extends Bootstrap { } // TODO handle all redirect links once we know what to do with multiple popups issue - private handleRedirectLinks(userLogoutInfo: UserLogoutInfo) { + /** @returns true if a full-page redirect in the current tab*/ + private handleRedirectLinks(userLogoutInfo: UserLogoutInfo): boolean { const redirectLinks = userLogoutInfo.redirectLinks; if (redirectLinks.length) { @@ -129,7 +130,7 @@ export class AuthenticationService extends Bootstrap { if (redirectLink.sameTabRedirect) { window.location.replace(redirectLink.url); - return; + return true; } const id = `okta-logout-id-${uuid()}`; @@ -146,6 +147,8 @@ export class AuthenticationService extends Bootstrap { window.focus(); } } + + return false; } private async auth(persistent: boolean, options: IAuthOptions) {