fix: autologout should not start if you are not logged in

Signed-off-by: Manuel Scurti <manuel.scurti@agilelab.it>
This commit is contained in:
Manuel Scurti
2023-09-06 19:01:42 +02:00
parent 1bfb54bbaa
commit 031101e20d
@@ -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 <></>;
}