fix(authAdminGuard): remove unnecessary promise return in logout function call

fix(authGuard): remove unnecessary promise return in logout function call
fix(headerComponent): remove unnecessary promise return in logout function call
fix(authContext): add navigation to login page after logout
fix(api): remove unnecessary promise return in logout function call and add navigation to login page after logout
This commit is contained in:
anovazzi1 2024-01-08 16:51:56 -03:00
commit b80cad7d9d
5 changed files with 15 additions and 29 deletions

View file

@ -7,14 +7,10 @@ export const ProtectedAdminRoute = ({ children }) => {
useContext(AuthContext); useContext(AuthContext);
if (!isAuthenticated) { if (!isAuthenticated) {
logout().then(() => { logout();
return <Navigate to="/login" replace />; } else if ((userData && !isAdmin) || autoLogin) {
});
}
if ((userData && !isAdmin) || autoLogin) {
return <Navigate to="/" replace />; return <Navigate to="/" replace />;
} else {
return children;
} }
return children;
}; };

View file

@ -1,14 +1,11 @@
import { useContext } from "react"; import { useContext } from "react";
import { Navigate } from "react-router-dom";
import { AuthContext } from "../../contexts/authContext"; import { AuthContext } from "../../contexts/authContext";
export const ProtectedRoute = ({ children }) => { export const ProtectedRoute = ({ children }) => {
const { isAuthenticated, logout } = useContext(AuthContext); const { isAuthenticated, logout } = useContext(AuthContext);
if (!isAuthenticated) { if (!isAuthenticated) {
logout().then(() => { logout();
return <Navigate to="/login" replace />; } else {
}); return children;
} }
return children;
}; };

View file

@ -193,9 +193,7 @@ export default function Header(): JSX.Element {
<DropdownMenuItem <DropdownMenuItem
className="cursor-pointer" className="cursor-pointer"
onClick={() => { onClick={() => {
logout().then(() => { logout();
navigate("/login");
});
}} }}
> >
Sign Out Sign Out

View file

@ -1,4 +1,5 @@
import { createContext, useEffect, useState } from "react"; import { createContext, useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
import Cookies from "universal-cookie"; import Cookies from "universal-cookie";
import { import {
autoLogin as autoLoginApi, autoLogin as autoLoginApi,
@ -29,6 +30,7 @@ const initialValue: AuthContextType = {
export const AuthContext = createContext<AuthContextType>(initialValue); export const AuthContext = createContext<AuthContextType>(initialValue);
export function AuthProvider({ children }): React.ReactElement { export function AuthProvider({ children }): React.ReactElement {
const navigate = useNavigate();
const cookies = new Cookies(); const cookies = new Cookies();
const [accessToken, setAccessToken] = useState<string | null>( const [accessToken, setAccessToken] = useState<string | null>(
cookies.get("access_token_lf") ?? null cookies.get("access_token_lf") ?? null
@ -109,6 +111,7 @@ export function AuthProvider({ children }): React.ReactElement {
setUserData(null); setUserData(null);
setAccessToken(null); setAccessToken(null);
setIsAuthenticated(false); setIsAuthenticated(false);
navigate("/login");
} catch (error) { } catch (error) {
console.error(error); console.error(error);
throw error; throw error;

View file

@ -28,9 +28,7 @@ function ApiInterceptor() {
authenticationErrorCount = authenticationErrorCount + 1; authenticationErrorCount = authenticationErrorCount + 1;
if (authenticationErrorCount > 3) { if (authenticationErrorCount > 3) {
authenticationErrorCount = 0; authenticationErrorCount = 0;
logout().then(() => { logout();
navigate("/login");
});
} }
try { try {
const res = await renewAccessToken(); const res = await renewAccessToken();
@ -47,14 +45,10 @@ function ApiInterceptor() {
} }
} catch (error) { } catch (error) {
if (axios.isAxiosError(error) && error.response?.status === 401) { if (axios.isAxiosError(error) && error.response?.status === 401) {
logout().then(() => { logout();
navigate("/login");
});
} else { } else {
console.error(error); console.error(error);
logout().then(() => { logout();
navigate("/login");
});
} }
} }
} }
@ -62,9 +56,7 @@ function ApiInterceptor() {
if (!accessToken && error?.config?.url?.includes("login")) { if (!accessToken && error?.config?.url?.includes("login")) {
return Promise.reject(error); return Promise.reject(error);
} else { } else {
logout().then(() => { logout();
navigate("/login");
});
} }
} else { } else {
// if (URL_EXCLUDED_FROM_ERROR_RETRIES.includes(error.config?.url)) { // if (URL_EXCLUDED_FROM_ERROR_RETRIES.includes(error.config?.url)) {