import config from "~/opnform.config.js"; function addAuthHeader(request, options) { const authStore = useAuthStore() if (authStore.token) { options.headers = {Authorization: `Bearer ${authStore.token}`, ...options.headers} } } function addPasswordToFormRequest(request, options) { const url = request.url if (!url || !url.startsWith('/api/forms/')) return const slug = url.split('/')[3] const passwordCookie = useCookie('password-' + slug, {maxAge: 60 * 60 * 24 * 30}) // 30 days if (slug !== undefined && slug !== '' && passwordCookie.value !== undefined) { options.headers['form-password'] = passwordCookie.value } } export function getOpnRequestsOptions(request, opts) { opts.headers = {accept: 'application/json', ...opts.headers} addAuthHeader(request, opts) addPasswordToFormRequest(request, opts) return { baseURL: config.api_url, onResponseError({response}) { const authStore = useAuthStore() const {status} = response if (status === 401 && authStore.check) { console.log("Logging out due to 401") authStore.logout() useRouter().push({name: 'login'}) } if (status >= 500) { console.error('Request error', status) } }, ...opts } } export const opnFetch = (request, opts = {}) => { return $fetch(request, getOpnRequestsOptions(request, opts)) } export const useOpnApi = (request, opts = {}) => { return useFetch(request, getOpnRequestsOptions(request, opts)) }