|
- // ** UseJWT import to get config
- import axios from "axios";
- import {isUserLoggedIn} from "../utils/Utils";
- import jwtApplicationConfig from "auth/jwtApplicationConfig";
- import jwt_decode from "jwt-decode";
- import {apiPath} from "./utils";
-
- //import axios from "axios";
- export const refreshIntervalName = 'refreshInterval'
- export const predictProductionQty = 'predictProductionQty'
- export const predictUsageCount = 'predictUsageCount'
- export const windowCount = 'windowCount'
- import {useNavigate} from "react-router-dom";
- import {useDispatch} from "react-redux";
-
- // ** Handle User Login
- export const handleLogin = data => {
- return dispatch => {
-
- dispatch({
- type: 'LOGIN',
- data,
- jwtApplicationConfig,
- accessToken: data['accessToken'],
- refreshToken: data['refreshToken']
- })
-
- const loginDate = new Date()
- loginDate.setSeconds(loginDate.getSeconds() + 10)
-
- console.log(data)
- // ** Add to user, accessToken & refreshToken to localStorage
- localStorage.setItem('userData', JSON.stringify(data))
- localStorage.setItem('accessToken', data.accessToken)
- localStorage.setItem('refreshToken', data.refreshToken)
- localStorage.setItem('axiosToken', "Bearer " + data.accessToken)
- //localStorage.setItem(config.storageUserRoleKeyName, JSON.stringify(data.role).slice(1).slice(0, -1))
- localStorage.setItem(refreshIntervalName, "60")
- localStorage.setItem('refreshTokenExpirationTime', loginDate)
- // for demo only
- localStorage.setItem(windowCount, '0')
- localStorage.setItem(predictProductionQty, '0')
- localStorage.setItem(predictUsageCount, '0')
- }
- }
-
- 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 = () =>{
- 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
- export const handleLogoutFunction = () => {
- return dispatch => {
- dispatch({
- type: 'LOGOUT',
- accessToken: null,
- refreshToken: null
- }
- )
-
- // console.log("logout");
- // ** Remove user, accessToken & refreshToken from localStorage
- localStorage.removeItem('userData')
- localStorage.removeItem('accessToken')
- localStorage.removeItem('refreshToken')
- //localStorage.removeItem(config.storageUserRoleKeyName)
- localStorage.removeItem(refreshIntervalName)
- localStorage.removeItem(windowCount)
- localStorage.removeItem(predictProductionQty)
- localStorage.removeItem(predictUsageCount)
- localStorage.removeItem("refreshTokenExpirationTime")
-
- }
- }
-
- // ** Handle axios token
- export const SetupAxiosInterceptors = () => {
- const navigate = useNavigate()
- const dispatch = useDispatch();
- //const updateLastRequestTime = useContext(TimerContext);
-
- axios.interceptors.request.use(
- config => {
- // ** Get token from localStorage
- const accessToken = localStorage.getItem("accessToken")
-
- // ** If token is present add it to request's Authorization Header
- if (isUserLoggedIn()) {
- config.headers.Authorization = `${jwtApplicationConfig.tokenType} ${accessToken}`
- }
- config.headers['X-Authorization'] = process.env.REACT_APP_API_KEY
-
- return config
- },
- 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)
- }
- )
- }
|