diff --git a/src/App.vue b/src/App.vue index 8a495f2..1c53cae 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,11 +16,6 @@ command:() => router.push({name:'home'}), icon: 'pi pi-home', }, - { - label:'Logout', - command:() => logout(), - icon:'pi pi-sign-out', - }, { label:userInfo.value ? userInfo.value.username : 'Profil', command:() => router.push({name:'login'}), @@ -31,6 +26,11 @@ command:() => router.push({name:'swagger'}), icon:'pi pi-cog', }, + { + label:'Logout', + command:() => logout(), + icon:'pi pi-sign-out', + }, ]; } else { return [ diff --git a/src/api.js b/src/api.js index 38784da..d732617 100644 --- a/src/api.js +++ b/src/api.js @@ -40,37 +40,41 @@ export const getuserinfo = async () => { return response.data; }; const refreshAccessToken = async () => { - try { - const response = await api.post('/token/refresh', {'refresh': Cookies.get('refresh')}, { - withCredentials: true, - }); - - const { access, refresh } = response.data; - - return [access, refresh]; - } catch (error) { - console.error('Refresh token request failed:', error); - return null; - } - }; + try { + const response = await api.post('/token/refresh', {'refresh': Cookies.get('refresh')}, { + withCredentials: true, + }); + + const { access, refresh } = response.data; + + return [access, refresh]; + } catch (error) { + console.error('Refresh token request failed:', error); + return null; + } +}; api.interceptors.response.use( - (response) => response, - async (error) => { - if (error.response && error.response.status === 401) { - const [newAccessToken,newRefreshToken] = await refreshAccessToken(); - if (newAccessToken) { - Cookies.set('refresh', newRefreshToken,{ - expires: 1, - secure: true, - sameSite: 'strict', - }); + (response) => response, + async (error) => { + if (error.response && error.response.status === 401) { + const errorMessage = error.response.data.detail; + if (errorMessage === "No active account found with the given credentials") { + return Promise.reject(error); + } else { + const tokens = await refreshAccessToken(); + if (tokens) { + const [newAccessToken, newRefreshToken] = tokens; + Cookies.set('refresh', newRefreshToken, { + expires: 1, + secure: true, + sameSite: 'strict', + }); error.config.headers['Authorization'] = `Bearer ${newAccessToken}`; return api(error.config); } } - return Promise.reject(error); } - ); -// const response = await api.post('/users', userData, { -// headers: {Authorization: `Bearer ${sessionStorage.getItem('access_token')}`},); \ No newline at end of file + return Promise.reject(error); + } +); \ No newline at end of file diff --git a/src/views/Login.vue b/src/views/Login.vue index 303636b..d3db098 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -1,6 +1,6 @@