Browse Source

add check token timeout

master
Alex Cheung 1 year ago
parent
commit
e4ecfe4923
2 changed files with 70 additions and 13 deletions
  1. +67
    -10
      src/auth/index.js
  2. +3
    -3
      src/routes/index.js

+ 67
- 10
src/auth/index.js View File

@@ -3,12 +3,15 @@ import axios from "axios";
import {isUserLoggedIn} from "../utils/Utils"; import {isUserLoggedIn} from "../utils/Utils";
import jwtApplicationConfig from "auth/jwtApplicationConfig"; import jwtApplicationConfig from "auth/jwtApplicationConfig";
import jwt_decode from "jwt-decode"; import jwt_decode from "jwt-decode";
import {apiPath} from "./utils";


//import axios from "axios"; //import axios from "axios";
export const refreshIntervalName = 'refreshInterval' export const refreshIntervalName = 'refreshInterval'
export const predictProductionQty = 'predictProductionQty' export const predictProductionQty = 'predictProductionQty'
export const predictUsageCount = 'predictUsageCount' export const predictUsageCount = 'predictUsageCount'
export const windowCount = 'windowCount' export const windowCount = 'windowCount'
import {useNavigate} from "react-router-dom";
import {useDispatch} from "react-redux";


// ** Handle User Login // ** Handle User Login
export const handleLogin = data => { export const handleLogin = data => {
@@ -37,16 +40,38 @@ export const handleLogin = data => {
} }
} }


export const isLocalTokenValid = () => {
axios.get(`${apiPath}/test`)
.then((response) => {
if(response.status === 200){
return true;
}
else{
return false;
}
})
.catch(error => {
console.log(error);
return false;
});
return false;
}

export const isTokenValid = () =>{ export const isTokenValid = () =>{
let isExpired = false;
const token = localStorage.getItem('accessToken');
let decodedToken=jwt_decode(token);
let dateNow = new Date();
if(decodedToken.exp < dateNow.getTime())
isExpired = true;
return isExpired;
}
if(localStorage.getItem('accessToken') !== null && localStorage.getItem('accessToken') !== 'null'){
let isExpired = false;
const token = localStorage.getItem('accessToken');
let decodedToken=jwt_decode(token);
let dateNow = new Date();

if(decodedToken.exp < dateNow.getTime())
isExpired = true;
return isExpired;
}
else{
return false;
}
}


// ** Handle User Logout // ** Handle User Logout
export const handleLogoutFunction = () => { export const handleLogoutFunction = () => {
@@ -73,7 +98,11 @@ export const handleLogoutFunction = () => {
} }


// ** Handle axios token // ** Handle axios token
export const setupAxiosInterceptors = () => {
export const SetupAxiosInterceptors = () => {
const navigate = useNavigate()
const dispatch = useDispatch();
//const updateLastRequestTime = useContext(TimerContext);

axios.interceptors.request.use( axios.interceptors.request.use(
config => { config => {
// ** Get token from localStorage // ** Get token from localStorage
@@ -89,4 +118,32 @@ export const setupAxiosInterceptors = () => {
}, },
error => Promise.reject(error) error => Promise.reject(error)
) )

axios.interceptors.response.use(
response => {
//updateLastRequestTime(Date.now());
return response;
},
error => {
// ** const { config, response: { status } } = error
const {response} = error

if (error.response.status === 401) {
dispatch(handleLogoutFunction());
navigate('/login');
}

// ** if (status === 401) {
if (response.status === 401) {
dispatch(handleLogoutFunction());
navigate('/login');
}

if (response && response.status === 401) {
dispatch(handleLogoutFunction());
navigate('/login');
}
return Promise.reject(error)
}
)
} }

+ 3
- 3
src/routes/index.js View File

@@ -14,8 +14,8 @@ import {
} from "utils/Utils"; } from "utils/Utils";
import { Navigate } from "react-router"; import { Navigate } from "react-router";
import { import {
setupAxiosInterceptors,
} from "../auth";
SetupAxiosInterceptors,
} from "auth/index";
import SettingRoutes from './SettingRoutes'; import SettingRoutes from './SettingRoutes';
// import Loadable from 'components/Loadable'; // import Loadable from 'components/Loadable';
// import { lazy } from 'react'; // import { lazy } from 'react';
@@ -26,7 +26,7 @@ export default function ThemeRoutes() {


if (isUserLoggedIn()) { if (isUserLoggedIn()) {
//auto logout if token not valid //auto logout if token not valid
setupAxiosInterceptors();
SetupAxiosInterceptors();
} }
// console.log(); // console.log();
return useRoutes([{ return useRoutes([{


Loading…
Cancel
Save