From 96fb44c770f7bf8529799698cbf9b237fe8c3230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=A1=D0=B0?= =?UTF-8?q?=D0=B1=D0=B8=D0=BB=D0=B8=D0=BD?= Date: Mon, 13 Jul 2026 17:19:26 +0300 Subject: [PATCH] =?UTF-8?q?fix(login):=20=D0=BD=D0=B5=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D1=85=D0=B2=D0=B0=D1=82=D1=8B=D0=B2=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?401=20=D0=BD=D0=B0=20/v1/admin/login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исключает refresh/reload формы при неверном пароле. Refs EventHub/EventHubFrontAdmin#12 Co-authored-by: Cursor --- src/api/client.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/api/client.ts b/src/api/client.ts index 056f63e..e615fb3 100644 --- a/src/api/client.ts +++ b/src/api/client.ts @@ -10,6 +10,9 @@ const apiClient = axios.create({ type RetryConfig = InternalAxiosRequestConfig & { _retry?: boolean }; +const isLoginRequest = (config?: InternalAxiosRequestConfig) => + Boolean(config?.url?.includes('/v1/admin/login')); + let isRefreshing = false; let pendingRequests: Array<{ resolve: (token: string) => void; @@ -45,7 +48,12 @@ apiClient.interceptors.response.use( (response) => response, async (error: AxiosError) => { const originalRequest = error.config as RetryConfig | undefined; - if (!originalRequest || error.response?.status !== 401 || originalRequest._retry) { + if ( + !originalRequest || + error.response?.status !== 401 || + originalRequest._retry || + isLoginRequest(originalRequest) + ) { return Promise.reject(error); }