Skip to content

Commit

Permalink
feat:#345 유저 추방 api 연결
Browse files Browse the repository at this point in the history
  • Loading branch information
dalzzy committed Feb 11, 2025
1 parent de07ebf commit 4750dfa
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 37 deletions.
25 changes: 25 additions & 0 deletions src/api/admin/member/deleteUser.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import axios from 'axios';

const PATH = '/api/v1/admin/users';

const BASE_URL = import.meta.env.VITE_API_URL;

const deleteUserApi = async (userId: number | number[]) => {
const accessToken = localStorage.getItem('accessToken');
const userIds = Array.isArray(userId) ? userId : [userId];

try {
const queryParam = userIds.map((id) => `userId=${id}`).join('&');
const url = `${BASE_URL}${PATH}?${queryParam}`;
const response = await axios.delete(url, {
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
return response.data;
} catch (error: any) {
throw new Error(error.response?.data?.message || '유저 추방 실패');
}
};

export default deleteUserApi;
28 changes: 2 additions & 26 deletions src/api/admin/member/getAdminUser.tsx
Original file line number Diff line number Diff line change
@@ -1,40 +1,16 @@
import { useEffect, useState } from 'react';
import axios from 'axios';

const BASE_URL = import.meta.env.VITE_API_URL;

export const getAllUsers = async (orderBy = 'NAME_ASCENDING') => {
const getAllUsers = async (orderBy = 'NAME_ASCENDING') => {
const accessToken = localStorage.getItem('accessToken');
const refreshToken = localStorage.getItem('refreshToken');

return axios.get(`${BASE_URL}/api/v1/admin/users/all`, {
headers: {
Authorization: `Bearer ${accessToken}`,
Authorization_refresh: `Bearer ${refreshToken}`,
},
params: { orderBy },
});
};

export const useGetAllUsers = () => {
const [allUsers, setAllUsers] = useState<any[]>([]);
const [error, setError] = useState<string | null>(null);

useEffect(() => {
const fetchUsers = async () => {
try {
const response = await getAllUsers();
setAllUsers(response.data.data);
setError(null);
} catch (err: any) {
setError(err.response?.data?.message);
}
};

fetchUsers();
}, []);

return { allUsers, error };
};

export default useGetAllUsers;
export default getAllUsers;
6 changes: 0 additions & 6 deletions src/api/admin/member/patchUserManagement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ const BASE_URL = import.meta.env.VITE_API_URL;
// 비밀번호 초기화
const resetPwdApi = async (userId: number | number[]) => {
const accessToken = localStorage.getItem('accessToken');
const refreshToken = localStorage.getItem('refreshToken');
const userIds = Array.isArray(userId) ? userId : [userId];

try {
Expand All @@ -19,7 +18,6 @@ const resetPwdApi = async (userId: number | number[]) => {
{
headers: {
Authorization: `Bearer ${accessToken}`,
Authorization_refresh: `Bearer ${refreshToken}`,
},
},
);
Expand All @@ -32,7 +30,6 @@ const resetPwdApi = async (userId: number | number[]) => {
// 가입 신청 승인
const approveSignupApi = async (userId: number | number[]) => {
const accessToken = localStorage.getItem('accessToken');
const refreshToken = localStorage.getItem('refreshToken');
const userIds = Array.isArray(userId) ? userId : [userId];

try {
Expand All @@ -44,7 +41,6 @@ const approveSignupApi = async (userId: number | number[]) => {
{
headers: {
Authorization: `Bearer ${accessToken}`,
Authorization_refresh: `Bearer ${refreshToken}`,
},
},
);
Expand All @@ -57,7 +53,6 @@ const approveSignupApi = async (userId: number | number[]) => {
// 관리자로 승격/강등
const changeUserRoleApi = async (userId: number, role: 'ADMIN' | 'USER') => {
const accessToken = localStorage.getItem('accessToken');
const refreshToken = localStorage.getItem('refreshToken');

try {
const url = `${BASE_URL}${PATH}/role?userId=${userId}&role=${role}`;
Expand All @@ -67,7 +62,6 @@ const changeUserRoleApi = async (userId: number, role: 'ADMIN' | 'USER') => {
{
headers: {
Authorization: `Bearer ${accessToken}`,
Authorization_refresh: `Bearer ${refreshToken}`,
},
},
);
Expand Down
3 changes: 1 addition & 2 deletions src/components/Admin/SelectedTopBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,7 @@ const SelectedTopBar: React.FC = () => {
},
{
label: '유저 추방',
onClick: () =>
alert(`${selectedMembers.length}명의 멤버를 추방하시겠습니까?`),
onClick: () => handleAction('유저 추방', selectedMembers.map(Number)),
disabled: false,
},
{
Expand Down
2 changes: 1 addition & 1 deletion src/components/Admin/context/MemberContext.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { createContext, useContext, useEffect, useMemo, useState } from 'react';
import { getAllUsers } from '@/api/admin/member/getAdminUser';
import getAllUsers from '@/api/admin/member/getAdminUser';

export type MemberData = {
id: number;
Expand Down
7 changes: 5 additions & 2 deletions src/hooks/useAdminActions.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import deleteUserApi from '@/api/admin/member/deleteUser';
import {
resetPwdApi,
approveSignupApi,
Expand Down Expand Up @@ -46,13 +47,15 @@ const useAdminActions = () => {
response = await approveSignupApi(targetIds);
console.log('가입 승인 API 응답:', response);
alert('가입 승인 처리가 완료되었습니다.');
} else if (action === '관리자로 변경' || '사용자로 변경') {
} else if (action === '관리자로 변경' || action === '사용자로 변경') {
const newRole = action === '관리자로 변경' ? 'ADMIN' : 'USER';
response = await Promise.all(
targetIds.map((targetId) => changeUserRoleApi(targetId, newRole)),
);
// console.log('역할 변경 API 응답:', response);
alert(`멤버의 역할이 ${newRole}로 변경되었습니다.`);
} else if (action === '유저 추방') {
response = await deleteUserApi(targetIds);
alert('유저 추방이 완료되었습니다.');
}
} catch (error: any) {
console.error('오류 발생:', error.message);
Expand Down

0 comments on commit 4750dfa

Please sign in to comment.