| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import axios from "axios";
- import jwt from "jsonwebtoken";
- import { JWT_REFRESH_TOKEN, JWT_TOKEN } from "../../constants/localStorage";
- import {
- // addHeaderToken,
- attachBeforeRequestListener,
- } from "../../request/index";
- import {
- authScopeStringGetHelper,
- // authScopeSetHelper,
- } from "../../util/helpers/authScopeHelpers";
- import { logoutUser, refreshUserToken } from "../actions/login/loginActions";
- // import { setUserAccessToken } from "../actions/user/userActions";
-
- //Change URL with .env
- const baseURL = "https://trampa-api.dilig.net/";
- // const baseURL = "http://192.168.88.175:3005/";
- // const baseURL = "http://192.168.88.175:3005/";
-
- //Interceptor unique name
- export const accessTokensMiddlewareInterceptorName = "ACCESS_TOKEN_INTERCEPTOR";
-
- export default ({ dispatch }) =>
- (next) =>
- (action) => {
- attachBeforeRequestListener(async (response) => {
- const jwtToken = authScopeStringGetHelper(JWT_TOKEN);
- const refresh = authScopeStringGetHelper(JWT_REFRESH_TOKEN);
- if (!jwtToken || !refresh) return Promise.resolve(response);
- const jwtTokenDecoded = jwt.decode(jwtToken);
- const refreshTokenDecoded = jwt.decode(refresh);
- if (!response.headers?.Authorization) {
- response.headers.Authorization = `Bearer ${jwtToken}`;
- }
-
- // If refresh token is expired, log out user
- if (new Date() > new Date(refreshTokenDecoded?.exp * 1000)) {
- dispatch(logoutUser());
- }
- // If access token is expired, refresh access token
- if (new Date() > new Date(jwtTokenDecoded.exp * 1000)) {
- const axiosResponse = await axios.post(`${baseURL}auth/refresh`, {
- token: refresh,
- });
- const newToken = axiosResponse.data.token;
- response.headers.Authorization = `Bearer ${newToken}`;
- dispatch(refreshUserToken(newToken));
- }
-
- return Promise.resolve(response);
- }, accessTokensMiddlewareInterceptorName);
-
- next(action);
- };
|