Select Git revision

Remi PLANEL authored
api.ts 1.75 KiB
export default defineNuxtPlugin(() => {
const sessionExpiryDate = useState<string | null>('sessionExpiryDate', () => null)
const runtimeConfig = useRuntimeConfig()
const $api = $fetch.create({
baseURL: "/api",
async onRequest({ request, options, error }) {
// login
if (process.server) {
const url = `${runtimeConfig.serverSideApiBaseUrl}api/analysis/login`
const { data: session } = await useFetch<{ session: 'ok', expire_date: string }>(url)
if (session.value !== null) sessionExpiryDate.value = session.value?.expire_date
} else {
const { data: session } = await useFetch<{ session: 'ok', expire_date: string }>("/api/analysis/login")
console.log(session)
if (session.value !== null) sessionExpiryDate.value = session.value?.expire_date
}
const { csrfToken } = useCsrfToken()
// const { csrf: csrfToken } = useCsrf()
const toValToken = toValue(csrfToken)
if (toValToken !== undefined) {
// Add Authorization header
if (Array.isArray(options.headers)) {
options.headers = options.headers || []
options.headers = [...options.headers, ["X-CSRFToken", toValToken]]
}
else {
options.headers = options.headers || {}
options.headers = { ...options.headers, "X-CSRFToken": toValToken }
}
}
},
onResponseError({ response }) {
console.log(response)
}
})
// Expose to useNuxtApp().$api
return {
provide: {
api: $api
}
}
})