From 031101e20d617cda91ecc83fdd52287986c61262 Mon Sep 17 00:00:00 2001 From: Manuel Scurti Date: Wed, 6 Sep 2023 19:01:42 +0200 Subject: [PATCH] fix: autologout should not start if you are not logged in Signed-off-by: Manuel Scurti --- .../src/components/AutoLogout/AutoLogout.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/core-components/src/components/AutoLogout/AutoLogout.tsx b/packages/core-components/src/components/AutoLogout/AutoLogout.tsx index abb898a0f2..96ae497208 100644 --- a/packages/core-components/src/components/AutoLogout/AutoLogout.tsx +++ b/packages/core-components/src/components/AutoLogout/AutoLogout.tsx @@ -101,7 +101,7 @@ const ConditionalAutoLogout = ({ const promptBeforeIdleMillis = promptBeforeIdleSeconds * 1000; const promptBeforeIdle = promptBeforeIdleMillis > 0 ? true : false; - const onPrompt = () => { + const onPrompt = async () => { // onPrompt will be called `promptBeforeIdle` milliseconds before `timeout`. // All events are disabled while the prompt is active. // If the user wishes to stay active, call the `activate()` method. @@ -232,6 +232,18 @@ const parseConfig = ( export const AutoLogout = (props: AutoLogoutProps): JSX.Element => { const identityApi = useApi(identityApiRef); const configApi = useApi(configApiRef); + const [isLogged, setIsLogged] = useState(false); + useEffect(() => { + // if the user is not logged in, the autologout feature won't affect the app even if enabled + async function isLoggedIn(identity: IdentityApi) { + if ((await identity.getCredentials()).token) { + setIsLogged(true); + } else { + setIsLogged(false); + } + } + isLoggedIn(identityApi); + }, [identityApi]); const { enabled, @@ -274,13 +286,13 @@ export const AutoLogout = (props: AutoLogoutProps): JSX.Element => { useLogoutDisconnectedUserEffect({ enableEffect: logoutIfDisconnected, - autologoutIsEnabled: enabled, + autologoutIsEnabled: enabled && isLogged, idleTimeoutSeconds: idleTimeoutMinutes * 60, lastSeenOnlineStore, identityApi, }); - if (!enabled) { + if (!enabled || !isLogged) { return <>; }