From 6add3c390cae43c285d36d75b4f275125185b03e Mon Sep 17 00:00:00 2001 From: max Date: Sun, 14 Jul 2024 14:33:50 -0700 Subject: [PATCH 1/5] feat: fix api path --- src/constants/apiPaths.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants/apiPaths.ts b/src/constants/apiPaths.ts index 1cab38745..58ebab3d6 100755 --- a/src/constants/apiPaths.ts +++ b/src/constants/apiPaths.ts @@ -1,7 +1,7 @@ const prefix = import.meta.env.VITE_API_PREFIX || ".execute-api2"; const API_PATHS = { - product: "https://o2jh3m7b57.execute-api.us-east-1.amazonaws.com/prod", + product: "https://6jeal9ve0d.execute-api.us-east-1.amazonaws.com/prod", order: `https://${prefix}.eu-west-1.amazonaws.com/dev`, import: "https://i6gsu0m0sg.execute-api.us-east-1.amazonaws.com/prod", bff: `https://${prefix}.eu-west-1.amazonaws.com/dev`, From 6a857874dcc2b3ad5594e57a622baa041cca9729 Mon Sep 17 00:00:00 2001 From: max Date: Sun, 14 Jul 2024 14:34:26 -0700 Subject: [PATCH 2/5] feat: add auth token for imort service --- .../admin/PageProductImport/components/CSVFileImport.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx b/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx index 546b24d5f..a031dcb04 100755 --- a/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx +++ b/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx @@ -32,10 +32,15 @@ export default function CSVFileImport({ url, title }: CSVFileImportProps) { return; } + const authToken = localStorage.getItem("authorization_token"); + // Get the presigned URL const response = await axios({ method: "GET", url, + headers: { + Authorization: `Basic ${authToken}`, + }, params: { name: encodeURIComponent(file.name), }, From 5b4f614bf5d0f764a37804b992d6ec500ed24036 Mon Sep 17 00:00:00 2001 From: max Date: Sun, 14 Jul 2024 17:41:20 -0700 Subject: [PATCH 3/5] feat: add axos interceptor --- src/index.tsx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index 5a3ad0b15..11906b2b7 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -7,6 +7,7 @@ import { BrowserRouter } from "react-router-dom"; import { QueryClient, QueryClientProvider } from "react-query"; import { ReactQueryDevtools } from "react-query/devtools"; import { theme } from "~/theme"; +import axios from "axios"; const queryClient = new QueryClient({ defaultOptions: { @@ -19,6 +20,25 @@ if (import.meta.env.DEV) { worker.start({ onUnhandledRequest: "bypass" }); } +axios.interceptors.response.use( + (response) => response, + (error) => { + console.error(error); + + switch (error.response.status) { + case 401: + alert("401 Unauthorized error"); + break; + case 403: + alert("403 Forbidden error"); + break; + default: + alert(error); + } + return error; + } +); + const container = document.getElementById("app"); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const root = createRoot(container!); From 254104026f080eb85f118f7f91384c1da6372b5b Mon Sep 17 00:00:00 2001 From: max Date: Mon, 15 Jul 2024 22:13:43 -0700 Subject: [PATCH 4/5] fix: error interceptor --- .../components/CSVFileImport.tsx | 48 +++++++++++-------- src/index.tsx | 6 +-- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx b/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx index a031dcb04..8189765d0 100755 --- a/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx +++ b/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx @@ -32,27 +32,35 @@ export default function CSVFileImport({ url, title }: CSVFileImportProps) { return; } - const authToken = localStorage.getItem("authorization_token"); + try { + const authToken = localStorage.getItem("authorization_token"); - // Get the presigned URL - const response = await axios({ - method: "GET", - url, - headers: { - Authorization: `Basic ${authToken}`, - }, - params: { - name: encodeURIComponent(file.name), - }, - }); - console.log("File to upload: ", file.name); - console.log("Uploading to: ", response.data); - const result = await fetch(response.data, { - method: "PUT", - body: file, - }); - console.log("Uploading result: ", result); - setFile(undefined); + // Get the presigned URL + const response = await axios({ + method: "GET", + url, + headers: { + Authorization: `Basic ${authToken}`, + }, + params: { + name: encodeURIComponent(file.name), + }, + }); + console.log("File to upload: ", file.name); + console.log("Uploading to: ", response.data); + const result = await fetch(response.data, { + method: "PUT", + body: file, + }); + console.log("Uploading result: ", result); + setFile(undefined); + } catch (error) { + if (error === "Unauthorized") { + console.log("Unauthorized. Please log in."); + } else { + console.error("An error occurred:", error); + } + } }; return ( diff --git a/src/index.tsx b/src/index.tsx index 11906b2b7..8d6fa221c 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -28,14 +28,14 @@ axios.interceptors.response.use( switch (error.response.status) { case 401: alert("401 Unauthorized error"); + return Promise.reject("Unauthorized"); break; case 403: alert("403 Forbidden error"); + return Promise.reject("Unauthorized"); break; - default: - alert(error); } - return error; + return Promise.reject(error); } ); From 27c9aa410a96943fbd35074efc2fbe8d48b78b16 Mon Sep 17 00:00:00 2001 From: max Date: Wed, 17 Jul 2024 22:44:27 -0700 Subject: [PATCH 5/5] fix: remove Auth header if auth_token is empty --- .../admin/PageProductImport/components/CSVFileImport.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx b/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx index 8189765d0..2a4a533bd 100755 --- a/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx +++ b/src/components/pages/admin/PageProductImport/components/CSVFileImport.tsx @@ -34,14 +34,17 @@ export default function CSVFileImport({ url, title }: CSVFileImportProps) { try { const authToken = localStorage.getItem("authorization_token"); + const headers = authToken + ? { + Authorization: `Basic ${authToken}`, + } + : undefined; // Get the presigned URL const response = await axios({ method: "GET", url, - headers: { - Authorization: `Basic ${authToken}`, - }, + headers, params: { name: encodeURIComponent(file.name), },