From 895795d279307fbc723dabb62fce4b99a9131848 Mon Sep 17 00:00:00 2001 From: marzban-dev Date: Mon, 13 Jan 2025 21:12:24 +0330 Subject: [PATCH] Define validation for response error --- frontend/plugins/axios.ts | 44 ++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/frontend/plugins/axios.ts b/frontend/plugins/axios.ts index b9d4a67..072c83b 100644 --- a/frontend/plugins/axios.ts +++ b/frontend/plugins/axios.ts @@ -1,23 +1,43 @@ -import axios from "axios"; +import axiosOriginal from "axios"; +import { API_ENDPOINTS } from "~/constants"; export default defineNuxtPlugin(() => { - const config = useRuntimeConfig() + const config = useRuntimeConfig(); + const { logout } = useAuth(); - const axiosInstance = axios.create({ - baseURL: config.public.API_BASE_URL, - timeout: 20000, - timeoutErrorMessage: 'خطای سرور', - headers: { - 'Content-Type': 'application/json' - } + const axios = axiosOriginal.create({ + baseURL: config.public.API_BASE_URL }); - axiosInstance.interceptors.response.use() + + axios.interceptors.request.use((config) => { + if ( + !config.url?.includes(API_ENDPOINTS.auth.signin) && + !config.url?.includes(API_ENDPOINTS.account.send_otp) + ) { + const { token } = useAuth(); + config.headers.Authorization = `Bearer ${token.value}`; + } + + return config; + }); + + axios.interceptors.response.use((response) => { + return response; + }, function(error) { + + if (error.status === 401) { + logout(); + } + + return Promise.reject(error); + }); return { provide: { - axios: axiosInstance, - }, + axios + } }; + }); \ No newline at end of file