base_ui/plugins/api.ts

51 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-02-01 09:34:55 +00:00
import { useAuthStore } from "~/stores/authStore";
import { useStorage } from "@vueuse/core";
// let lsToken = useStorage("token", "GuestAccess");
// if (lsToken == null || lsToken == "" || lsToken == undefined)
// lsToken = "GuestAccess";
export default defineNuxtPlugin((nuxtApp) => {
// const { session } = useUserSession();
// const authStore = useAuthStore();
let token = useStorage("id_token", "GuestAccess").value;
const api = $fetch.create({
onRequest({ request, options, error }) {
options.baseURL =
import.meta.env.VITE_BASE_URL +
import.meta.env.VITE_API_NAME +
options.baseURL;
if (token) {
const headers = (options.headers ||= {});
if (Array.isArray(headers)) {
headers.push(["Authorization", token]);
} else if (headers instanceof Headers) {
headers.set("Authorization", token);
} else {
headers.Authorization = token;
}
}
},
async onResponseError({ response }) {
if (response.status === 401) {
await nuxtApp.runWithContext(() => navigateTo("/login"));
}
},
onRequestError({ request, options, error }) {
// Handle the request errors
},
onResponse({ request, response, options }) {
// Process the response data
// localStorage.setItem('token', response._data.token)
},
});
// Expose to useNuxtApp().$api
return {
provide: {
api,
},
};
});