axios.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import axios from "axios";
  2. import { refreshToken } from "@/actions/auth";
  3. // import jwt_decode from "jwt-decode";
  4. const axiosJWT = axios.create({
  5. baseURL: "http://localhost:5000",
  6. withCredentials: true,
  7. });
  8. axiosJWT.interceptors.request.use(
  9. async (config) => {
  10. // const response = await refreshToken();
  11. // const decoded = jwt_decode(response.access_token);
  12. // const expire = decoded.exp;
  13. // const currentDate = Date.now();
  14. // if (expire * 1000 < currentDate) {
  15. const response = await refreshToken();
  16. // console.log(response);
  17. if (response.success) config.headers.Authorization = `Bearer ${response.access_token}`;
  18. // config.withCredentials = true;
  19. return config;
  20. // }
  21. },
  22. async (error) => {
  23. const originalConfig = err.config;
  24. // if (error.response.status === 403 || error.response.status === 401) {
  25. try {
  26. const response = await refreshToken();
  27. if (response.success) {
  28. // axiosJWT.defaults.headers.Authorization = `Bearer ${response.access_token}`;
  29. originalConfig.headers.Authorization = `Bearer ${response.access_token}`;
  30. return axiosJWT(originalConfig);
  31. }
  32. } catch (error) {
  33. return Promise.reject(error);
  34. }
  35. // }
  36. return Promise.reject(error);
  37. }
  38. );
  39. export default axiosJWT;