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 9, 2025
1 parent 7f5e4f7 commit 7fab73c
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 10 deletions.
34 changes: 34 additions & 0 deletions src/api/patchUserManagement.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import axios from 'axios';

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

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 {
const queryParam = userIds.map((id) => `userId=${id}`).join('&');
const url = `${BASE_URL}${PATH}/reset?${queryParam}`;
console.log(`API 요청 URL: ${url}`);
const response = await axios.patch(
url,
{},
{
headers: {
Authorization: `Bearer ${accessToken}`,
Authorization_refresh: `Bearer ${refreshToken}`,
},
},
);
console.log('API 응답: ', response);
return response.data;
} catch (error: any) {
throw new Error(error.response?.data?.message || '비밀번호 초기화 실패');
}
};

export default resetPwdApi;
11 changes: 7 additions & 4 deletions src/components/Admin/MemberListTableRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,14 @@ const MemberListTableRow: React.FC<TableRowProps> = ({ data, columns }) => {
const isChecked = selectedMembers.includes(data.id.toString());

const onClickToCheckBox = () => {
setSelectedMembers((prevSelected) =>
isChecked
setSelectedMembers((prevSelected) => {
const updatedSelected = isChecked
? prevSelected.filter((id) => id !== String(data.id))
: [...prevSelected, String(data.id)],
);
: [...prevSelected, String(data.id)];

console.log('선택된 멤버 id :', updatedSelected);
return updatedSelected;
});
};

const openModal = () => setIsModalOpen(true);
Expand Down
29 changes: 23 additions & 6 deletions src/components/Admin/Modal/MemberDetailModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dropdownIcon from '@/assets/images/ic_admin_column_meatball.svg';
import ButtonGroup from '@/components/Admin/ButtonGroup';
import StatusIndicator from '@/components/Admin/StatusIndicator';
import CommonModal from '@/components/Admin/Modal/CommonModal';
import resetPwdApi from '@/api/patchUserManagement';

interface MemberDetailModalProps {
data: MemberData;
Expand Down Expand Up @@ -78,22 +79,38 @@ const MemberDetailModal: React.FC<MemberDetailModalProps> = ({
data,
onClose,
}) => {
const handleAction = async (action: string) => {
if (
!window.confirm(`"${data.name}" 멤버의 ${action}을(를) 진행하시겠습니까?`)
)
return;

try {
console.log(`${action} API 요청 시작...`);
if (action === '비밀번호 초기화') await resetPwdApi(data.id);
console.log(` 비밀번호 초기화 요청 대상 ID: ${data.id}`);

alert('비밀번호 초기화가 완료되었습니다.');
} catch (error: any) {
console.error('오류 발생 : ', error.message);
}
};
const buttons = [
{
label: '가입 승인',
onClick: () => alert('1명의 멤버 가입을 승인하시겠습니까?'),
onClick: () => handleAction('가입 승인'),
},
{
label: '관리자로 변경',
onClick: () => alert('1명의 멤버 역할을 관리자로 변경하시겠습니까?'),
onClick: () => handleAction('관리자로 변경'),
},
{
label: '비밀번호 초기화',
onClick: () => alert('1명의 멤버 비밀번호를 초기화 시키시겠습니까?'),
onClick: () => handleAction('비밀번호 초기화'),
},
{
label: '유저 추방',
onClick: () => alert('1명의 멤버를 추방하시겠습니까?'),
onClick: () => handleAction('유저 추방'),
},
{
label: '직접 입력',
Expand All @@ -104,8 +121,8 @@ const MemberDetailModal: React.FC<MemberDetailModalProps> = ({
];

const memberInfo = [
{ label: '직급', value: data.position },
{ label: '역할', value: data.role },
{ label: '직급', value: data.role },
{ label: '역할', value: data.position },
{ label: '학과', value: data.department },
{ label: '전화번호', value: data.tel },
{ label: '학번', value: data.studentId },
Expand Down

0 comments on commit 7fab73c

Please sign in to comment.