first commit

This commit is contained in:
javad committed 2024-02-07 14:37:21 +03:30
1 parent b27f4f2f23
commit db10146ecd
58 files changed
+3684 -202

No files matched your search

+72
View File
@@ -0,0 +1,72 @@
'use client'
import axios from 'axios'
import { error } from 'console';
import { cookies, headers } from 'next/headers'
//let accessToken = localStorage.getItem('access') ? localStorage.getItem('access') : null
function setCookieFn(name:string, value:string, daysToExpire:number) {
const expires = new Date();
expires.setTime(expires.getTime() + (daysToExpire * 24 * 60 * 60 * 1000));
document.cookie = `${name}=${value};expires=${expires.toUTCString()};path=/`;
}
const axiosInstance = axios.create({
baseURL: 'http://127.0.0.1:8000/',
timeout: 2000,
headers: {
'Content-Type': 'application/json',
//'Authorization': `Bearer ${accessToken}`,
}
});
axiosInstance.interceptors.request.use(async req => {
const accessT = await localStorage.getItem('access')
req.headers.Authorization = `Bearer ${accessT}`
return req
})
axiosInstance.interceptors.response.use((response)=> {
return response
}, async (error) =>{
const originalRequest = error.config;
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true; // Prevent infinite loops
try {
const res = await fetch("http://127.0.0.1:8000/auth/token/refresh/", {
method: "POST",
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
body: JSON.stringify({
'refresh': localStorage.getItem('refresh')
})
});
if(res.status==200){
setCookieFn('isAuth', 'true', 365)
const tokenData = await res.json()
localStorage.setItem('access', tokenData.access)
localStorage.setItem('refresh',tokenData.refresh)
originalRequest.headers.Authorization = `Bearer ${tokenData.access}`
return axiosInstance(originalRequest)
}else{
}
} catch(refreshError) {
throw refreshError;
}
}
});
export default axiosInstance