diff --git a/client/src/lib/axios.ts b/client/src/lib/axios.ts new file mode 100644 index 0000000..45ef3bf --- /dev/null +++ b/client/src/lib/axios.ts @@ -0,0 +1,24 @@ +import type { AxiosError } from 'axios'; +import axios from 'axios'; + +export const axiosClient = axios.create({ + baseURL: '/api/', +}); + +axiosClient.interceptors.request.use((config) => { + const token = localStorage.getItem('token'); + if (token !== null) { + config.headers.Authorization = `Bearer ${token}`; + } + return config; +}); + +axiosClient.interceptors.response.use(undefined, async (error: AxiosError) => { + if (error.response && error?.response.status === 401) { + // TODO: refresh token + if (error.config) { + return axiosClient(error.config); + } + } + return Promise.reject(error); +});