diff --git a/frontend/src/modules/agent/api/agent.api.service.ts b/frontend/src/modules/agent/api/agent.api.service.ts index db258e8..906371e 100644 --- a/frontend/src/modules/agent/api/agent.api.service.ts +++ b/frontend/src/modules/agent/api/agent.api.service.ts @@ -22,14 +22,14 @@ class AgentApiService { async getAgents(): Promise { const response = await apiClient.get(this.basePath); - return response.data; + return Array.isArray(response.data) ? response.data : []; } async getUsers(): Promise { const response = await apiClient.get( `${this.authBasePath}/tokens`, ); - return response.data; + return Array.isArray(response.data) ? response.data : []; } async createUser(data: TokenCreate): Promise { @@ -47,15 +47,25 @@ class AgentApiService { async searchLogs(filters?: LogFilters): Promise { const response = await apiClient.get(this.logsBasePath, { params: { - level: filters?.level, - service: filters?.service, - agent: filters?.agent, - date_from: filters?.date_from, - date_to: filters?.date_to, + level: filters?.level || undefined, + service: filters?.service || undefined, + agent: filters?.agent || undefined, + date_from: filters?.date_from || undefined, + date_to: filters?.date_to || undefined, limit: filters?.limit ?? 100, offset: filters?.offset ?? 0, }, }); + + if (!Array.isArray(response.data)) { + console.error( + "[Logs] Unexpected response format:", + typeof response.data, + response.data, + ); + return []; + } + return response.data; } @@ -71,21 +81,21 @@ class AgentApiService { const response = await apiClient.get( `${this.logsBasePath}/agents`, ); - return response.data; + return Array.isArray(response.data) ? response.data : []; } async getDistinctLevels(): Promise { const response = await apiClient.get( `${this.logsBasePath}/levels`, ); - return response.data; + return Array.isArray(response.data) ? response.data : []; } async getDistinctServices(): Promise { const response = await apiClient.get( `${this.logsBasePath}/services`, ); - return response.data; + return Array.isArray(response.data) ? response.data : []; } // User management methods @@ -93,6 +103,9 @@ class AgentApiService { const response = await apiClient.get( `${this.authBasePath}/users/${login}`, ); + if (!response.data || typeof response.data !== "object") { + throw new Error(`User not found: ${login}`); + } return response.data; } @@ -100,7 +113,7 @@ class AgentApiService { const response = await apiClient.get( `${this.authBasePath}/users/inactive`, ); - return response.data; + return Array.isArray(response.data) ? response.data : []; } async updateUser(login: string, data: TokenUpdate): Promise { diff --git a/frontend/src/shared/api/axios.instance.ts b/frontend/src/shared/api/axios.instance.ts index d61f9fe..afd5aa1 100644 --- a/frontend/src/shared/api/axios.instance.ts +++ b/frontend/src/shared/api/axios.instance.ts @@ -22,7 +22,7 @@ class ApiClient { "Content-Type": "application/json", }, validateStatus: (status) => { - return status >= 200 && status < 500; + return status >= 200 && status < 400; }, });