diff --git a/src/util/api.js b/src/util/api.js index f7668c7..eff5386 100644 --- a/src/util/api.js +++ b/src/util/api.js @@ -1,4 +1,6 @@ import axios from "axios" +import { useAuthStore } from "@/stores/auth"; + const api = axios.create({ baseURL: process.env.VUE_APP_BASE_URL, clientId : process.env.VUE_APP_CLIENT_ID, @@ -22,26 +24,25 @@ api.interceptors.request.use( api.interceptors.response.use( response => response, async error => { - if(error.response && error.response.status === 401){ - const refresh_token = localStorage.getItem('refresh_token') - if(refresh_token){ - try { - const res = await axios.post(`${this.baseURL}` + "/oauth/token/refresh/", { - refresh: refresh_token, - }); + const originalRequest = error.config; + const auth = useAuthStore(); + + if(error.response && error.response.status === 401 && !originalRequest._retry){ + originalRequest._retry =true; + try { + const res = await axios.post(`${this.baseURL}` + "/oauth/token/refresh/", {},{withCredentials:true}); - localStorage.setItem("access_token", res.data.access); - error.config.headers.Authorization = `Bearer ${res.data.access}`; - return api.request(error.config); - } catch (refreshError) { + auth.token = res.data.access_token; + originalRequest.headers.Authorization = `Bearer ${auth.token}`; + // error.config.headers.Authorization = `Bearer ${res.data.access}`; + // return api.request(error.config); + return api(originalRequest) + } catch (refreshError) { // jika refresh juga gagal, logout - localStorage.removeItem("access_token"); - localStorage.removeItem("refresh_token"); window.location = "/login"; - } + auth.logout(); + return Promise.reject(refreshError) } - localStorage.removeItem('token') - window.location.href = '/' } return Promise.reject(error) }