diff --git a/src/components/admin/AdminMember/AdminMember.jsx b/src/components/admin/AdminMember/AdminMember.jsx index bea31569..6dd398f1 100644 --- a/src/components/admin/AdminMember/AdminMember.jsx +++ b/src/components/admin/AdminMember/AdminMember.jsx @@ -4,6 +4,7 @@ import { MENU } from '../../../constants/menus'; import useInput from '../../../hooks/useInput'; import { notEmptyValidation } from '../../../lib/utils/validation'; import { WhiteNarrowBlock } from '../../../styles/common/Block.styles'; +import { StyledDeleteButton } from '../../activity/ActivityCard/ActivityCard.styles'; import Input from '../../common/Input/Input'; import { StyledSearchActionButton } from '../AdminProjectForm/AdminProjectForm.styles'; import { @@ -145,6 +146,7 @@ const AdminMember = ({ onUpdateMemberRole, onSearchMember, searchMembers, + onDeleteUnacceptedMembers, roles, history, }) => { @@ -154,18 +156,32 @@ const AdminMember = ({ e.preventDefault(); onWithdrawMember(loginID); }; + const handleAcceptMember = (e, loginID) => { e.preventDefault(); onAcceptMember(loginID); }; + const handleToggleAdmin = (e, loginID, isAdmin) => { e.preventDefault(); onToggleAdmin({ loginID, isAdmin }); }; + const handleUpdateMemberRole = (e, loginID, role) => { e.preventDefault(); onUpdateMemberRole({ loginID, role }); }; + + const handleDeleteUnacceptedMembers = (e) => { + e.preventDefault(); + let result = window.confirm( + `[주의] 승인 전 회원들을 모두 탈퇴 처리 하시겠습니까? 정보는 모두 DB에서 삭제되며 복구할 수 없습니다.`, + ); + if (result) { + onDeleteUnacceptedMembers(); + } + } + const onClickSearch = (e) => { e.preventDefault(); onSearchMember(searchMember); @@ -173,6 +189,7 @@ const AdminMember = ({ onChangeSearchMember(e); }; + return ( 회원 관리 @@ -211,7 +228,7 @@ const AdminMember = ({ )} - 승인 전 회원 목록 + 승인 전 회원 목록전체 삭제 diff --git a/src/containers/admin/AdminMemberContainer/AdminMemberContainer.jsx b/src/containers/admin/AdminMemberContainer/AdminMemberContainer.jsx index 1158f441..b76cb87c 100644 --- a/src/containers/admin/AdminMemberContainer/AdminMemberContainer.jsx +++ b/src/containers/admin/AdminMemberContainer/AdminMemberContainer.jsx @@ -2,7 +2,8 @@ import AdminMember from '../../../components/admin/AdminMember/AdminMember'; import React, { useEffect, useState } from 'react'; import * as memberAPI from '../../../lib/api/member'; import Spinner from '../../../components/common/Spinner/Spinner'; -import { SUCCESS } from '../../../constants/statusCode'; +import { CLIENT_ERROR, SUCCESS } from '../../../constants/statusCode'; +import { MEMBER_ROLE } from '../../../constants/memberRoles'; const AdminMemberContainer = ({ history }) => { const [memberLoading, setMemberLoading] = useState(true); @@ -108,6 +109,23 @@ const AdminMemberContainer = ({ history }) => { }); }; + const onDeleteUnacceptedMembers = () => { + memberAPI.deleteUnacceptedMembers().then((res) => { + if (res.status === SUCCESS.OK) { + alert('승인 전 회원들을 모두 탈퇴 처리 하였습니다.'); + setMembers( + members.filter(m => m.role !== MEMBER_ROLE.UNACCEPTED) + ); + } else if (res.status === CLIENT_ERROR.FORBIDDEN) { + alert('권한이 없습니다.'); + } else { + alert('오류가 발생하여 요청을 수행할 수 없습니다.'); + } + }); + }; + + + const onSearchMember = (name) => { setSearchMembers(members.filter((member) => member.name.includes(name))); }; @@ -128,6 +146,7 @@ const AdminMemberContainer = ({ history }) => { onUpdateMemberRole={onUpdateMemberRole} onSearchMember={onSearchMember} searchMembers={searchMembers} + onDeleteUnacceptedMembers={onDeleteUnacceptedMembers} roles={roles} /> )}