From 8e08fbadd981c040d12ec0ead0dc1dbf0f2eee4f Mon Sep 17 00:00:00 2001 From: Andrei Dekterev Date: Fri, 7 Apr 2023 16:31:40 +0700 Subject: [PATCH] fix(#black-screen): remove tokens --- src/features/App/index.tsx | 13 ++----------- src/helpers/callApi/logoutIfUnauthorized.tsx | 11 ++++++++++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/features/App/index.tsx b/src/features/App/index.tsx index af66da71..6bc6d7a0 100644 --- a/src/features/App/index.tsx +++ b/src/features/App/index.tsx @@ -1,8 +1,4 @@ -import { - Suspense, - useEffect, - useState, -} from 'react' +import { Suspense } from 'react' import { Router } from 'react-router-dom' import { QueryClient, QueryClientProvider } from 'react-query' import { ReactQueryDevtools } from 'react-query/devtools' @@ -31,16 +27,11 @@ import { useAuthStore } from '../AuthStore' setClientTitleAndDescription(client.title, client.description) const Main = () => { - const [isToken, setIsToken] = useState(false) const { userInfo } = useAuthStore() const queryClient = new QueryClient() - useEffect(() => { - if (userInfo) readToken() && setIsToken(true) - }, [userInfo]) - // имеется действующий токен - return isToken ? ( + return userInfo && readToken() ? ( diff --git a/src/helpers/callApi/logoutIfUnauthorized.tsx b/src/helpers/callApi/logoutIfUnauthorized.tsx index 18e71881..9a7c5e98 100644 --- a/src/helpers/callApi/logoutIfUnauthorized.tsx +++ b/src/helpers/callApi/logoutIfUnauthorized.tsx @@ -1,13 +1,22 @@ +import { removeToken } from '../token' +import { removeCookie } from '../cookie' + export const logoutIfUnauthorized = async (response: Response) => { /* отключили из-за доступа без авторизации */ + const body = await response.json() + if (response.status === 401 || response.status === 403) { window.dispatchEvent(new Event('FORBIDDEN_REQUEST')) + + if (body.message.includes('Signature has expired')) { + removeToken() + removeCookie('access_token') + } } const error = new Error(response.statusText) // eslint-disable-next-line no-console console.error(error) - const body = await response.json() return Promise.reject(body) }