feat: add interceptor to axiosClient to redirect to login page if the user is logged out

This commit is contained in:
ValdiANS
2025-11-25 09:24:46 +07:00
parent 334202569c
commit b616f28c95
+13 -1
View File
@@ -1,10 +1,22 @@
import axios from 'axios'; import axios from 'axios';
import type { AxiosRequestConfig } from 'axios'; import type { AxiosError, AxiosRequestConfig } from 'axios';
import { RequestOptions } from '@/services/http/base'; import { RequestOptions } from '@/services/http/base';
const BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? ''; const BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? '';
const axiosClient = axios.create({ baseURL: BASE_URL, timeout: 10_000 }); const axiosClient = axios.create({ baseURL: BASE_URL, timeout: 10_000 });
axiosClient.interceptors.response.use(
(response) => response,
(error: AxiosError) => {
if (error.response?.status === 401) {
const ssoLoginUrl = `${process.env.NEXT_PUBLIC_SSO_LOGIN_URL as string}?redirect_url=${window.location.href}`;
window.location.href = ssoLoginUrl;
}
return Promise.reject(error);
}
);
export async function httpClient<T, B = unknown>( export async function httpClient<T, B = unknown>(
path: string, path: string,
opts: RequestOptions<B> = {} opts: RequestOptions<B> = {}