refresh token qoshildi
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { auth_pai } from "@/features/auth/lib/api";
|
||||
import { saveToken } from "@/shared/lib/cookie";
|
||||
import { saveRefToken, saveToken } from "@/shared/lib/cookie";
|
||||
import { Button } from "@/shared/ui/button";
|
||||
import {
|
||||
Card,
|
||||
@@ -41,6 +41,7 @@ const AuthLogin = () => {
|
||||
});
|
||||
|
||||
saveToken(res.data.data.access);
|
||||
saveRefToken(res.data.data.refresh);
|
||||
navigate("dashboard");
|
||||
},
|
||||
onError: (err: AxiosError) => {
|
||||
|
||||
@@ -33,4 +33,5 @@ export const API_URLS = {
|
||||
DeleteProdut: (id: string) => `${API_V}admin/product/${id}/delete/`,
|
||||
QuestionnaireList: `${API_V}admin/questionnaire/list/`,
|
||||
Import_User: `${API_V}admin/user/import_users/`,
|
||||
Refresh_Token: `${API_V}accounts/refresh/token/`,
|
||||
};
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
import i18n from "@/shared/config/i18n";
|
||||
import { getToken } from "@/shared/lib/cookie";
|
||||
import axios from "axios";
|
||||
import {
|
||||
getRefToken,
|
||||
getToken,
|
||||
removeRefToken,
|
||||
removeToken,
|
||||
saveRefToken,
|
||||
saveToken,
|
||||
} from "@/shared/lib/cookie";
|
||||
import axios, { AxiosError } from "axios";
|
||||
import { API_URLS } from "./URLs";
|
||||
|
||||
const httpClient = axios.create({
|
||||
@@ -24,9 +31,48 @@ httpClient.interceptors.request.use(
|
||||
);
|
||||
|
||||
httpClient.interceptors.response.use(
|
||||
(response) => response,
|
||||
(error) => {
|
||||
async (response) => response,
|
||||
async (error) => {
|
||||
console.error("API error:", error);
|
||||
if ((error as AxiosError)?.status === 403) {
|
||||
try {
|
||||
const refToken = getRefToken();
|
||||
if (!refToken) {
|
||||
removeToken();
|
||||
removeRefToken();
|
||||
window.location.href = "/";
|
||||
}
|
||||
const { data } = await axios.post(
|
||||
`${API_URLS.BASE_URL}${API_URLS.Refresh_Token}`,
|
||||
{ refresh: refToken },
|
||||
);
|
||||
saveToken(data.access);
|
||||
saveRefToken(data.refresh);
|
||||
} catch {
|
||||
removeToken();
|
||||
removeRefToken();
|
||||
window.location.href = "/";
|
||||
}
|
||||
} else if ((error as AxiosError)?.status === 401) {
|
||||
try {
|
||||
const refToken = getRefToken();
|
||||
if (!refToken) {
|
||||
removeToken();
|
||||
removeRefToken();
|
||||
window.location.href = "/";
|
||||
}
|
||||
const { data } = await axios.post(
|
||||
`${API_URLS.BASE_URL}${API_URLS.Refresh_Token}`,
|
||||
{ refresh: refToken },
|
||||
);
|
||||
saveToken(data.access);
|
||||
saveRefToken(data.refresh);
|
||||
} catch {
|
||||
removeToken();
|
||||
removeRefToken();
|
||||
window.location.href = "/";
|
||||
}
|
||||
}
|
||||
return Promise.reject(error);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import cookie from "js-cookie";
|
||||
|
||||
const token = "access_meridyn_admin";
|
||||
const token = "gastro_admin_token";
|
||||
const refToken = "gastro_admin_refresh_token";
|
||||
|
||||
export const saveToken = (value: string) => {
|
||||
cookie.set(token, value);
|
||||
@@ -13,3 +14,15 @@ export const getToken = () => {
|
||||
export const removeToken = () => {
|
||||
cookie.remove(token);
|
||||
};
|
||||
|
||||
export const saveRefToken = (value: string) => {
|
||||
cookie.set(refToken, value);
|
||||
};
|
||||
|
||||
export const getRefToken = () => {
|
||||
return cookie.get(refToken);
|
||||
};
|
||||
|
||||
export const removeRefToken = () => {
|
||||
cookie.remove(refToken);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user