refresh token

This commit is contained in:
hamid zarghami
2025-04-17 17:31:38 +03:30
parent d3031e5557
commit 5666e05dd8
16 changed files with 685 additions and 301 deletions
+2 -7
View File
@@ -1,4 +1,5 @@
import axios from "axios";
import { getToken } from "./func";
const axiosInstance = axios.create({
baseURL: import.meta.env.VITE_BASE_URL,
@@ -7,18 +8,12 @@ const axiosInstance = axios.create({
axiosInstance.interceptors.response.use(
(response) => response,
(error) => {
if (error.response.status === 401) {
localStorage.removeItem(import.meta.env.VITE_TOKEN_NAME);
window.location.href = "/auth/login";
}
return Promise.reject(error);
}
);
axiosInstance.interceptors.request.use(async function (config) {
const token = localStorage.getItem(import.meta.env.VITE_TOKEN_NAME)
? localStorage.getItem(import.meta.env.VITE_TOKEN_NAME)
: "";
const token = getToken();
config.headers.Authorization = "Bearer " + token;
return config;
+29
View File
@@ -1,3 +1,5 @@
import Cookie from "js-cookie";
export function isEmail(input: string): boolean {
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return emailRegex.test(input);
@@ -6,3 +8,30 @@ export function isEmail(input: string): boolean {
export function NumberFormat(number: number): string {
return Intl.NumberFormat("fa-IR").format(number);
}
export const getToken = () => {
return Cookie.get(import.meta.env.VITE_TOKEN_NAME);
};
export const getRefreshToken = () => {
return Cookie.get(import.meta.env.VITE_REFRESH_TOKEN_NAME);
};
const isProduction = import.meta.env.MODE === "production";
const domain = isProduction ? ".danakcorp.com" : undefined;
export const setToken = (token: string) => {
Cookie.set(import.meta.env.VITE_TOKEN_NAME, token, { domain });
};
export const setRefreshToken = (refreshToken: string) => {
Cookie.set(import.meta.env.VITE_REFRESH_TOKEN_NAME, refreshToken, { domain });
};
export const removeToken = () => {
Cookie.remove(import.meta.env.VITE_TOKEN_NAME, { domain, path: "/" });
};
export const removeRefreshToken = () => {
Cookie.remove(import.meta.env.VITE_REFRESH_TOKEN_NAME, { domain, path: "/" });
};