Skip to content

Instantly share code, notes, and snippets.

@Strong
Forked from sidigi/axios.js
Created June 7, 2022 01:03
Show Gist options
  • Save Strong/b464f6f9f1d816461f40b423f40b0eb9 to your computer and use it in GitHub Desktop.
Save Strong/b464f6f9f1d816461f40b423f40b0eb9 to your computer and use it in GitHub Desktop.

Revisions

  1. @sidigi sidigi created this gist Jul 10, 2019.
    37 changes: 37 additions & 0 deletions axios.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,37 @@
    export default function ({$axios, app}) {
    $axios.onResponseError(error => {
    const code = parseInt(error.response && error.response.status);

    let originalRequest = error.config;

    if ([401, 403].includes(code)) {
    originalRequest.__isRetryRequest = true;

    let refresh_token = app.$auth.getRefreshToken(app.$auth.$storage.state.strategy).replace('Bearer ', '');

    return new Promise((resolve, reject) => {
    $axios
    .post(`http://bgs-auth.local/api/refresh-token`, {refresh_token})
    .then(response => {

    if (response.status == 200) {
    app.$auth.setToken(app.$auth.$storage.state.strategy,'Bearer ' + response.data.access_token);
    app.$auth.ctx.app.$axios.setHeader('Authorization', 'Bearer ' + response.data.access_token);
    app.$auth.setRefreshToken(app.$auth.$storage.state.strategy, 'Bearer ' + response.data.refresh_token);
    originalRequest.headers['Authorization'] = `Bearer ${response.data.access_token}`;
    }
    resolve(response);
    })
    })
    .then(res => {
    return $axios(originalRequest);
    }).catch(e => {
    app.$auth.logout();

    setTimeout(() => {
    app.router.push('/login');
    })
    });
    }
    })
    }