Bugfix: Refresh Token Renovation (#1511)

bugfix: fix the refresh token renovation
This commit is contained in:
Cristhian Zanforlin Lousa 2024-03-09 11:03:19 -03:00 committed by GitHub
commit 0a3401640d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 13 additions and 14 deletions

View file

@ -98,7 +98,7 @@ async def refresh_token(request: Request, response: Response, settings_service=D
response.set_cookie(
"refresh_token_lf",
tokens["refresh_token"],
httponly=auth_settings.REFRESH_TOKEN_HTTPONLY,
httponly=auth_settings.REFRESH_HTTPONLY,
samesite=auth_settings.REFRESH_SAME_SITE,
secure=auth_settings.REFRESH_SECURE,
expires=auth_settings.REFRESH_TOKEN_EXPIRE_MINUTES * 60,

View file

@ -1,7 +1,6 @@
import axios, { AxiosError, AxiosInstance } from "axios";
import { useContext, useEffect } from "react";
import { Cookies } from "react-cookie";
import { useNavigate } from "react-router-dom";
import { renewAccessToken } from ".";
import { BuildStatus } from "../../constants/enums";
import { AuthContext } from "../../contexts/authContext";
@ -17,26 +16,25 @@ function ApiInterceptor() {
const setErrorData = useAlertStore((state) => state.setErrorData);
let { accessToken, login, logout, authenticationErrorCount, autoLogin } =
useContext(AuthContext);
const navigate = useNavigate();
const cookies = new Cookies();
useEffect(() => {
const interceptor = api.interceptors.response.use(
(response) => response,
async (error: AxiosError) => {
if (error.response?.status === 401) {
const accessToken = cookies.get("access_token_lf");
if (accessToken && !autoLogin) {
if (error.response?.status === 403 || error.response?.status === 401) {
if (!autoLogin) {
checkErrorCount();
await tryToRenewAccessToken(error);
}
const acceptedRequest = await tryToRenewAccessToken(error);
if (!accessToken && error?.config?.url?.includes("login")) {
return Promise.reject(error);
}
const accessToken = cookies.get("access_token_lf");
return logout();
if (!accessToken && error?.config?.url?.includes("login")) {
return Promise.reject(error);
}
return acceptedRequest;
}
}
await clearBuildVerticesState(error);
return Promise.reject(error);
@ -116,6 +114,7 @@ function ApiInterceptor() {
return response;
}
} catch (error) {
clearBuildVerticesState(error);
logout();
}
}

View file

@ -147,7 +147,7 @@ export default function StorePage(): JSX.Element {
}
})
.catch((err) => {
if (err.response.status === 403 || err.response.status === 401) {
if (err.response?.status === 403 || err.response?.status === 401) {
setValidApiKey(false);
} else {
setSearchData([]);