import { boot } from 'quasar/wrappers' import axios from 'axios' import JwtToken from '../services/jwt-token' import { Notify } from 'quasar' import Router from '../router/index.js' import qs from 'qs' const api = axios.create({ baseURL: 'http://localhost/api-sistema/v1' }) export default boot(({ app,redirect }) => { // for use inside Vue files (Options API) through this.$axios and this.$api app.config.globalProperties.$axios = axios // ^ ^ ^ this will allow you to use this.$axios (for Vue Options API form) // so you won't necessarily have to import axios in each vue file app.config.globalProperties.$api = api // ^ ^ ^ this will allow you to use this.$api (for Vue Options API form) // so you can easily perform requests against your app's API }) api.interceptors.request.use( (config) => { config.headers.Authorization = JwtToken.getAuthorizationHeader() config.headers.Identification = JwtToken.getTerminalToken() if (config.url !== 'aaa') { if (!config.headers.Accept) { config.headers.common['Accept'] = 'application/vnd.api+json' config.headers.common['Response-Type'] = 'application/vnd.api+json' config.headers.common['Content-Type'] = 'application/vnd.api+json' config.headers['Accept'] = 'application/vnd.api+json' config.headers['Response-Type'] = 'application/vnd.api+json' config.headers['Content-Type'] = 'application/vnd.api+json' } } else { config.headers.set('Content-Type', 'application/zip') config.headers.set('Response-Type', 'application/zip') config.headers.set('Accept', 'application/zip') } config.paramsSerializer = function (params) { return qs.stringify(params) } return config }, (error) => { return Promise.reject(error) } ) api.interceptors.response.use( (response) => { if (response.status !== 200) { if (response.data.errors) { if (response.data.errors[0]) { if (response.data.errors[0].detail !== undefined) { if (response.data.errors[0].detail === 'Expired token') { Notify.create('Sua sessão expirou, entre com suas credenciais!') setTimeout(() => { // store.commit('app/unauthenticated') redirect('/login') }, 3500) } else if (response.data.errors[0].detail === 'Limited user access') { debugger Notify.create('Este usuário fez o login em outro terminal, se quiser acessar por aqui favor identicar-se novamente!') setTimeout(() => { // store.commit('app/unauthenticated') // Router().go({ name: 'auth.login' }) }, 3500) } else if (response.data.errors[0].detail.includes('This XML is not valid') || response.data.errors[0].detail.includes('Erros de preenchimento')) { console.log('teste') } else if (response.data.errors[0].detail.includes('!.')) { Notify.create({ message: response.data.errors[0].detail, html: true, timeout: 14000 }) } else { Notify.create({ message: response.data.errors[0].detail, html: true, timeout: 7000 }) } } else { Notify.create({ message: response.data.errors[0].title, html: true, timeout: 7000 }) } } else { Notify.create({ message: 'Erro inesperado, entre em contato com a DWMS' }) } } } return response }, (error) => { if (error.response.status !== 200) { if (error.response.data.errors) { if (error.response.data.errors[0]) { if (error.response.data.errors[0].detail !== undefined) { if (error.response.data.errors[0].detail === 'Expired token') { Notify.create('Sua sessão expirou, entre com suas credenciais!') setTimeout(() => { redirect('/login') }, 3500) } else if (error.response.data.errors[0].detail === 'Limited user access') { Notify.create('Este usuário fez o login em outro terminal, se quiser acessar por aqui favor identicar-se novamente!') setTimeout(() => { redirect('/login') }, 3500) } else if (error.response.data.errors[0].detail.includes('This XML is not valid') || error.response.data.errors[0].detail.includes('Erros de preenchimento')) { console.log('teste') } else if (error.response.data.errors[0].detail.includes('!.')) { Notify.create({ message: error.response.data.errors[0].detail, html: true, timeout: 14000 }) } else { Notify.create({ message: error.response.data.errors[0].detail, html: true, timeout: 7000 }) } } else { Notify.create({ message: error.response.data.errors[0].title, html: true, timeout: 7000 }) Notify.create({ message: error.response.data.errors[0].title, html: true, timeout: 7000 }) } } else { Notify.create({ message: 'Erro inesperado, entre em contato com a DWMS' }) } } } return Promise.reject(error) } ) export { api }