Adds access token refreshing.

This commit is contained in:
2025-04-17 01:43:28 -04:00
parent 9d2a00a928
commit c19e2eb493
2 changed files with 62 additions and 8 deletions

View File

@@ -19,6 +19,34 @@ export function useClient() {
api.interceptors.request.use(requestInterceptor);
// Add response interceptor for token refresh
api.interceptors.response.use(
(response) => response,
async (error) => {
const originalRequest = error.config;
// If error is 401 and we haven't tried to refresh the token yet
if (error.response?.status === 401 && !originalRequest._retry) {
originalRequest._retry = true;
try {
// Attempt to refresh the token
await authStore.refresh();
// Retry the original request with the new token
originalRequest.headers["Authorization"] = `Bearer ${authStore.accessToken}`;
return api(originalRequest);
} catch (refreshError) {
// If refresh fails, logout the user
await authStore.logout();
return Promise.reject(refreshError);
}
}
return Promise.reject(error);
}
);
return api;
}