diff --git a/src/admin/UserList.tsx b/src/admin/UserList.tsx index 6224266..63db182 100644 --- a/src/admin/UserList.tsx +++ b/src/admin/UserList.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'; import { AdminData } from '@/types/admindata'; import UserCard from './UserCard'; import styled from 'styled-components'; -import { fetchAdminData } from '@/apis/admin.api'; +import { deleteUser, fetchAdminData } from '@/apis/admin.api'; // Styled Components const UserListContainer = styled.div` @@ -54,8 +54,21 @@ const UserList = () => { setOpenUserId((prev) => (prev === id ? null : id)); }; - const handleDeleteUser = (id: number) => { - alert(`회원탈퇴: 유저 ID ${id}`); + const handleDeleteUser = async (id: number) => { + const confirmed = window.confirm(`유저 ID ${id}를 삭제하시겠습니까?`); + if (!confirmed) return; + + try { + const result = await deleteUser(id); + if (result.success) { + alert('회원 탈퇴가 완료되었습니다.'); + setUsers((prevUsers) => prevUsers.filter((user) => user.id !== id)); + } else { + alert('회원 탈퇴에 실패했습니다.'); + } + } catch (error: any) { + alert(`오류 발생: ${error.message}`); + } }; useEffect(() => { diff --git a/src/apis/admin.api.ts b/src/apis/admin.api.ts index 7c2ecc4..54127f9 100644 --- a/src/apis/admin.api.ts +++ b/src/apis/admin.api.ts @@ -11,3 +11,16 @@ export const fetchAdminData = async () => { throw error; } }; + +export const deleteUser = async (id: number): Promise<{ success: boolean }> => { + try { + const response = await httpClient.delete(`/api/users/${id}/delete`); + console.log('응답 데이터:', response.data); + return response.data; + } catch (error: any) { + console.error('API 호출 실패:', error); + throw new Error( + error.response?.data?.message || '회원 탈퇴 중 오류가 발생했습니다.' + ); + } +};