Init project
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import axios from '../../../axios/index.js'
|
||||
import store from '../../../../store/store.js'
|
||||
|
||||
// Token Refresh
|
||||
let isAlreadyFetchingAccessToken = false
|
||||
let subscribers = []
|
||||
|
||||
function onAccessTokenFetched (access_token) {
|
||||
subscribers = subscribers.filter(callback => callback(access_token))
|
||||
}
|
||||
|
||||
function addSubscriber (callback) {
|
||||
subscribers.push(callback)
|
||||
}
|
||||
|
||||
export default {
|
||||
init () {
|
||||
axios.interceptors.response.use(function (response) {
|
||||
return response
|
||||
}, function (error) {
|
||||
// const { config, response: { status } } = error
|
||||
const { config, response } = error
|
||||
const originalRequest = config
|
||||
|
||||
// if (status === 401) {
|
||||
if (response && response.status === 401) {
|
||||
if (!isAlreadyFetchingAccessToken) {
|
||||
isAlreadyFetchingAccessToken = true
|
||||
store.dispatch('auth/fetchAccessToken')
|
||||
.then((access_token) => {
|
||||
isAlreadyFetchingAccessToken = false
|
||||
onAccessTokenFetched(access_token)
|
||||
})
|
||||
}
|
||||
|
||||
const retryOriginalRequest = new Promise((resolve) => {
|
||||
addSubscriber(access_token => {
|
||||
originalRequest.headers.Authorization = `Bearer ${access_token}`
|
||||
resolve(axios(originalRequest))
|
||||
})
|
||||
})
|
||||
return retryOriginalRequest
|
||||
}
|
||||
return Promise.reject(error)
|
||||
})
|
||||
},
|
||||
login (email, pwd) {
|
||||
return axios.post('/api/auth/login', {
|
||||
email,
|
||||
password: pwd
|
||||
})
|
||||
},
|
||||
registerUser (name, email, pwd) {
|
||||
return axios.post('/api/auth/register', {
|
||||
displayName: name,
|
||||
email,
|
||||
password: pwd
|
||||
})
|
||||
},
|
||||
refreshToken () {
|
||||
return axios.post('/api/auth/refresh-token', {accessToken: localStorage.getItem('access_toKen')})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user