diff --git a/openmetadata-ui/src/main/resources/ui/src/authentication/auth-provider/AuthProvider.tsx b/openmetadata-ui/src/main/resources/ui/src/authentication/auth-provider/AuthProvider.tsx
index 352ee955d81..ef1406fe23e 100644
--- a/openmetadata-ui/src/main/resources/ui/src/authentication/auth-provider/AuthProvider.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/authentication/auth-provider/AuthProvider.tsx
@@ -127,6 +127,7 @@ export const AuthProvider = ({
appState.updateUserDetails({} as User);
appState.updateUserPermissions({} as UserPermissions);
localStorage.removeItem(oidcTokenKey);
+ setIsUserAuthenticated(false);
setLoadingIndicator(false);
if (forceLogout) {
onLogoutHandler();
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/login/index.test.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/login/index.test.tsx
index a5a79b96491..bb24324d5a2 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/login/index.test.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/login/index.test.tsx
@@ -54,6 +54,7 @@ describe('Test SigninPage Component', () => {
isAuthDisabled: false,
authConfig: { provider: 'google' },
onLoginHandler: jest.fn(),
+ onLogoutHandler: jest.fn(),
});
const { container } = render(, {
wrapper: MemoryRouter,
@@ -81,6 +82,7 @@ describe('Test SigninPage Component', () => {
isAuthDisabled: false,
authConfig: { provider },
onLoginHandler: jest.fn(),
+ onLogoutHandler: jest.fn(),
});
const { container } = render(, {
wrapper: MemoryRouter,
@@ -99,6 +101,7 @@ describe('Test SigninPage Component', () => {
isAuthDisabled: false,
authConfig: { provider: 'custom-oidc', providerName: 'Custom OIDC' },
onLoginHandler: jest.fn(),
+ onLogoutHandler: jest.fn(),
});
const { container } = render(, {
wrapper: MemoryRouter,
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/login/index.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/login/index.tsx
index eacbdad43b8..e9b62461800 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/login/index.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/login/index.tsx
@@ -13,11 +13,12 @@
import { isEmpty } from 'lodash';
import { observer } from 'mobx-react';
-import React from 'react';
+import React, { useEffect, useMemo } from 'react';
import { useHistory } from 'react-router-dom';
import appState from '../../AppState';
import loginBG from '../../assets/img/login-bg.png';
import { useAuthContext } from '../../authentication/auth-provider/AuthProvider';
+import Loader from '../../components/Loader/Loader';
import LoginButton from '../../components/LoginButton/LoginButton';
import { ROUTES } from '../../constants/constants';
import { AuthTypes } from '../../enums/signin.enum';
@@ -26,7 +27,11 @@ import LoginCarousel from './LoginCarousel';
const SigninPage = () => {
const history = useHistory();
- const { isAuthDisabled, authConfig, onLoginHandler } = useAuthContext();
+ const { isAuthDisabled, authConfig, onLoginHandler, onLogoutHandler } =
+ useAuthContext();
+ const isAlreadyLoggedIn = useMemo(() => {
+ return isAuthDisabled || !isEmpty(appState.userDetails);
+ }, [isAuthDisabled, appState.userDetails]);
const handleSignIn = () => {
onLoginHandler && onLoginHandler();
@@ -82,10 +87,20 @@ const SigninPage = () => {
);
};
+ // If user is neither logged in or nor security is disabled
+ // invoke logout handler to clean-up any slug storage
+ useEffect(() => {
+ if (!isAlreadyLoggedIn) {
+ onLogoutHandler();
+ }
+ }, []);
+
// If the user is already logged in or if security is disabled
// redirect the user to the home page.
- if (isAuthDisabled || !isEmpty(appState.userDetails)) {
+ if (isAlreadyLoggedIn) {
history.push(ROUTES.HOME);
+
+ return ;
}
return (