From f99d9645f108d4d734ddd4a703272e6e8caaa1f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=9C=EB=8F=99=ED=98=84?= <hando1220@ajou.ac.kr> Date: Fri, 14 Mar 2025 22:22:51 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20API=20=EC=9A=94=EC=B2=AD=EC=8B=9C=20?= =?UTF-8?q?=ED=86=A0=ED=81=B0=EC=9D=84=20=EC=A0=84=EB=8B=AC=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/forwarding/Create.tsx | 4 ++-- src/pages/forwarding/List.tsx | 8 ++++---- src/stores/authStore.ts | 6 ++++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/pages/forwarding/Create.tsx b/src/pages/forwarding/Create.tsx index c90353f..a1d9a56 100644 --- a/src/pages/forwarding/Create.tsx +++ b/src/pages/forwarding/Create.tsx @@ -25,7 +25,7 @@ const formSchema = z.object({ export default function ForwardingCreate() { const navigate = useNavigate(); - const { selectedProject } = useAuthStore(); + const { authFetch, selectedProject } = useAuthStore(); const form = useForm<z.infer<typeof formSchema>>({ resolver: zodResolver(formSchema), defaultValues: { @@ -38,7 +38,7 @@ export default function ForwardingCreate() { async function onSubmit(values: z.infer<typeof formSchema>) { const { name, serverPort, instanceIp } = values; - const response = await fetch(`/api/forwarding?projectId=${selectedProject?.id}`, { + const response = await authFetch(`/api/forwarding?projectId=${selectedProject?.id}`, { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/src/pages/forwarding/List.tsx b/src/pages/forwarding/List.tsx index 5855dfc..3fa1999 100644 --- a/src/pages/forwarding/List.tsx +++ b/src/pages/forwarding/List.tsx @@ -22,12 +22,12 @@ import { } from '@/components/ui/alert-dialog'; export default function ForwardingList() { - const { selectedProject } = useAuthStore(); + const { authFetch, selectedProject } = useAuthStore(); const [forwardings, setForwardings] = useState<Forwarding[] | null>(null); const [selectedForwarding, setSelectedForwarding] = useState<Forwarding | null>(null); useEffect(() => { - fetch(`/api/forwardings?projectId=${selectedProject?.id}`) + authFetch(`/api/forwardings?projectId=${selectedProject?.id}`) .then((response) => { if (!response.ok) { toast.error('포트포워딩 정보를 조회할 수 없습니다.'); @@ -39,12 +39,12 @@ export default function ForwardingList() { .then(({ contents }) => { setForwardings(contents); }); - }, [selectedProject]); + }, [authFetch, selectedProject]); const handleDelete = () => { if (selectedForwarding === null) throw Error('selectedForwarding is null'); - fetch(`/api/forwarding?forwardingId=${selectedForwarding.id}`, { + authFetch(`/api/forwarding?forwardingId=${selectedForwarding.id}`, { method: 'DELETE', }).then((response) => { if (!response.ok) { diff --git a/src/stores/authStore.ts b/src/stores/authStore.ts index ff8324c..a44616f 100644 --- a/src/stores/authStore.ts +++ b/src/stores/authStore.ts @@ -9,6 +9,7 @@ export interface AuthStore { projects: Project[]; selectedProject: (Project & { role?: string }) | null; setSelectedProject: (project: Project) => Promise<void>; + authFetch: (input: RequestInfo, init?: RequestInit) => Promise<Response>; login: (username: string, password: string) => void; logout: () => void; } @@ -38,6 +39,11 @@ export const useAuthStore = create<AuthStore>()( console.log(role); }, + authFetch: async (input, init) => + fetch(input, { + ...init, + headers: { ...init?.headers, 'X-Subject-Token': get().token! }, + }), login: async (username, password) => { const response = await fetch('/api/auth/login', { method: 'POST', -- GitLab