Untitled
unknown
plain_text
a year ago
1.2 kB
8
Indexable
import axios, { type InternalAxiosRequestConfig } from "axios";
import { throttle } from "radash";
export default defineNuxtPlugin((nuxtApp) => {
// Set subdomain for multi-tenant
const subdomain = window.location.hostname.split(".")[0] ?? "app";
// Get runtime config
const config = useRuntimeConfig();
const cookie = useCookie("XSRF-TOKEN");
const api = axios.create({
baseURL: config.public.apiBase,
withCredentials: true,
withXSRFToken: true,
headers: {
Accept: "application/json",
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
"X-Tenant": subdomain,
},
});
const debounced = throttle({ interval: 10000 }, function () {
api.get("/sanctum/csrf-cookie");
});
function sanctum_cookie(config: InternalAxiosRequestConfig<any>) {
if (
config.method &&
["post", "put", "delete"].includes(config.method) &&
!config.url?.includes("login") &&
!config.url?.includes("register") &&
!cookie.value
) {
debounced();
}
return config;
}
api.interceptors.request.use(sanctum_cookie, null);
return {
provide: {
axios: api,
},
};
});
Editor is loading...
Leave a Comment