refresh token qoshildi
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { auth_pai } from "@/features/auth/lib/api";
|
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 { Button } from "@/shared/ui/button";
|
||||||
import {
|
import {
|
||||||
Card,
|
Card,
|
||||||
@@ -41,6 +41,7 @@ const AuthLogin = () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
saveToken(res.data.data.access);
|
saveToken(res.data.data.access);
|
||||||
|
saveRefToken(res.data.data.refresh);
|
||||||
navigate("dashboard");
|
navigate("dashboard");
|
||||||
},
|
},
|
||||||
onError: (err: AxiosError) => {
|
onError: (err: AxiosError) => {
|
||||||
|
|||||||
@@ -33,4 +33,5 @@ export const API_URLS = {
|
|||||||
DeleteProdut: (id: string) => `${API_V}admin/product/${id}/delete/`,
|
DeleteProdut: (id: string) => `${API_V}admin/product/${id}/delete/`,
|
||||||
QuestionnaireList: `${API_V}admin/questionnaire/list/`,
|
QuestionnaireList: `${API_V}admin/questionnaire/list/`,
|
||||||
Import_User: `${API_V}admin/user/import_users/`,
|
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 i18n from "@/shared/config/i18n";
|
||||||
import { getToken } from "@/shared/lib/cookie";
|
import {
|
||||||
import axios from "axios";
|
getRefToken,
|
||||||
|
getToken,
|
||||||
|
removeRefToken,
|
||||||
|
removeToken,
|
||||||
|
saveRefToken,
|
||||||
|
saveToken,
|
||||||
|
} from "@/shared/lib/cookie";
|
||||||
|
import axios, { AxiosError } from "axios";
|
||||||
import { API_URLS } from "./URLs";
|
import { API_URLS } from "./URLs";
|
||||||
|
|
||||||
const httpClient = axios.create({
|
const httpClient = axios.create({
|
||||||
@@ -24,9 +31,48 @@ httpClient.interceptors.request.use(
|
|||||||
);
|
);
|
||||||
|
|
||||||
httpClient.interceptors.response.use(
|
httpClient.interceptors.response.use(
|
||||||
(response) => response,
|
async (response) => response,
|
||||||
(error) => {
|
async (error) => {
|
||||||
console.error("API error:", 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);
|
return Promise.reject(error);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import cookie from "js-cookie";
|
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) => {
|
export const saveToken = (value: string) => {
|
||||||
cookie.set(token, value);
|
cookie.set(token, value);
|
||||||
@@ -13,3 +14,15 @@ export const getToken = () => {
|
|||||||
export const removeToken = () => {
|
export const removeToken = () => {
|
||||||
cookie.remove(token);
|
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