Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
658 stevensc 1
import Axios from 'axios'
5 stevensc 2
 
658 stevensc 3
const BASE_URL = 'https://dev-services.leaderslinked.com'
5 stevensc 4
 
658 stevensc 5
const axiosInstance = Axios.create()
510 stevensc 6
 
658 stevensc 7
axiosInstance.all = Axios.all
8
axiosInstance.spread = Axios.spread
510 stevensc 9
 
507 stevensc 10
axiosInstance.get = (_url, params = {}) => {
508 stevensc 11
  const headers = {
658 stevensc 12
    Accept: 'application/json',
13
    Vary: 'Accept',
14
    'Cache-Control': 'no-cache, no-store',
15
    'Content-Type': 'application/json'
16
  }
510 stevensc 17
 
658 stevensc 18
  const token = window.localStorage.getItem('jwt')
510 stevensc 19
 
20
  if (token) {
658 stevensc 21
    headers.Authorization = 'Bearer ' + token
508 stevensc 22
  }
23
 
507 stevensc 24
  return Axios({
25
    baseURL: BASE_URL,
26
    url: _url,
508 stevensc 27
    params,
658 stevensc 28
    headers
29
  })
30
}
67 stevensc 31
 
511 stevensc 32
axiosInstance.interceptors.request.use(
5 stevensc 33
  async (request) => {
658 stevensc 34
    request.baseURL = BASE_URL
35
    const token = window.localStorage.getItem('jwt')
509 stevensc 36
 
37
    if (token) {
658 stevensc 38
      request.headers.Authorization = 'Bearer ' + token
509 stevensc 39
    }
40
 
658 stevensc 41
    if (['post', 'put', 'delete'].includes(request.method)) {
509 stevensc 42
      try {
658 stevensc 43
        const { data: responseData } = await axiosInstance.get('/csrf')
44
        const { data, success } = responseData
515 stevensc 45
 
513 stevensc 46
        if (success) {
658 stevensc 47
          request.headers['X-CSRF-TOKEN'] = data
48
          return request
509 stevensc 49
        }
50
      } catch (err) {
51
        throw new Error(
52
          `Axios problem with request during pre-flight phase: ${err}.`
658 stevensc 53
        )
509 stevensc 54
      }
55
    }
5 stevensc 56
  },
57
  (error) => {
658 stevensc 58
    return Promise.reject(error)
5 stevensc 59
  }
658 stevensc 60
)
5 stevensc 61
 
515 stevensc 62
Axios.interceptors.response.use(
511 stevensc 63
  async (response) => {
64
    const { fatal } = response.data
65
 
66
    if (fatal) {
516 stevensc 67
      window.localStorage.removeItem('jwt')
782 stevensc 68
      window.localStorage.removeItem('aes')
658 stevensc 69
      window.location.reload()
70
      return
511 stevensc 71
    }
72
 
73
    return response
74
  },
75
  (error) => {
658 stevensc 76
    return Promise.reject(error)
77
  }
78
)
511 stevensc 79
 
658 stevensc 80
export default axiosInstance