From 6d88197ac3dc60930b20f5fa89266dbcb6c3be8a Mon Sep 17 00:00:00 2001 From: Andrei Dekterev Date: Fri, 10 Feb 2023 16:32:57 +0700 Subject: [PATCH] fix(#274): fix logout for auth users --- src/features/AuthStore/hooks/useAuth.tsx | 12 ++++++++---- src/helpers/callApi/logoutIfUnauthorized.tsx | 7 ++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/features/AuthStore/hooks/useAuth.tsx b/src/features/AuthStore/hooks/useAuth.tsx index 6f4db4b5..1eaf0a6b 100644 --- a/src/features/AuthStore/hooks/useAuth.tsx +++ b/src/features/AuthStore/hooks/useAuth.tsx @@ -89,8 +89,9 @@ export const useAuth = () => { if (!readToken()) { const token = await getTemporaryToken() token && await fetchUserInfo() + return Promise.resolve() } - return Promise.resolve() + return Promise.reject() } storeUser(loadedUser) @@ -204,21 +205,24 @@ export const useAuth = () => { }, [reChekNewDevice, userManager]) useEffect(() => { - if (!needCheckNewDeviсe) return undefined + if (!needCheckNewDeviсe && !user) return undefined const startCheckDevice = setInterval(checkNewDevice, 20000) isNewDeviceLogin && clearInterval(startCheckDevice) return () => clearInterval(startCheckDevice) - }, [checkNewDevice, + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [ + checkNewDevice, isNewDeviceLogin, setIsNewDeviceLogin, ]) useEffect(() => { - // попытаемся обновить токен используя refresh_token const tryRenewToken = () => { userManager.signinSilent() .catch(() => user && logout()) } + // попытаемся обновить токен используя refresh_token // если запросы вернули 401 | 403 window.addEventListener('FORBIDDEN_REQUEST', tryRenewToken) diff --git a/src/helpers/callApi/logoutIfUnauthorized.tsx b/src/helpers/callApi/logoutIfUnauthorized.tsx index 18e71881..feffe52b 100644 --- a/src/helpers/callApi/logoutIfUnauthorized.tsx +++ b/src/helpers/callApi/logoutIfUnauthorized.tsx @@ -1,8 +1,9 @@ export const logoutIfUnauthorized = async (response: Response) => { /* отключили из-за доступа без авторизации */ - if (response.status === 401 || response.status === 403) { - window.dispatchEvent(new Event('FORBIDDEN_REQUEST')) - } + // if (response.status === 401 || response.status === 403) { + // removeToken() + // window.dispatchEvent(new Event('FORBIDDEN_REQUEST')) + // } const error = new Error(response.statusText) // eslint-disable-next-line no-console