import { useLocation, useNavigate } from 'react-router-dom'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { useRecoilValue } from 'recoil'; import { useTranslation } from 'react-i18next'; import { authList } from '../../store/authList'; import { authType, modalTypes } from '../../assets/data'; import { menuConfig } from '../../assets/data/menuConfig'; import { Title, FormWrapper, BtnWrapper, TableStyle } from '../../styles/Components'; import { GroupDetailViewList, GroupModify } from '../../apis'; import Button from '../../components/common/button/Button'; import AuthModal from '../../components/common/modal/AuthModal'; import DynamicModal from '../../components/common/modal/DynamicModal'; import { AuthGroupRows } from '../../components/UserManage'; const AuthSettingUpdate = () => { const location = useLocation(); const navigate = useNavigate(); const userInfo = useRecoilValue(authList); const { t } = useTranslation(); const id = location.pathname.split('/')[3]; const [msg, setMsg] = useState(''); const { authGroups, selectedPermissions, modalState, setSelectedPermissions, setModalState } = useAuthSetting(id); if (!userInfo.auth_list?.some(auth => auth.id === authType.authoritySettingUpdate)) { return ; } const handlePermissionChange = (groupId, permissionId) => { setSelectedPermissions(prev => { const newPermissions = { ...prev }; if (permissionId === 'all') { const group = authGroups.find(g => g.id === groupId); const allPermissions = group.items.flatMap(item => Object.values(item.permissions) ); newPermissions[groupId] = allPermissions; } else if (permissionId === 'none') { newPermissions[groupId] = []; } else { const currentGroupPermissions = newPermissions[groupId] || []; if (currentGroupPermissions.includes(Number(permissionId))) { newPermissions[groupId] = currentGroupPermissions.filter(id => id !== Number(permissionId) ); } else { newPermissions[groupId] = [...currentGroupPermissions, Number(permissionId)]; } } return newPermissions; }); }; const handleModalView = (type) => { setModalState((prevState) => ({ ...prevState, [`${type}Modal`]: 'view', })); } const handleModalClose = (type) => { setModalState((prevState) => ({ ...prevState, [`${type}Modal`]: 'hidden', })); } const handleSubmit = async (type, param = null) => { switch (type) { case "cancelConfirm": setMsg(t('CANCEL_COMPLETED')); handleModalClose('cancelConfirm'); handleModalView('complete'); break; case "registConfirm": const token = sessionStorage.getItem('token'); const resultList = Object.values(selectedPermissions) .flat() .map(permissionId => ({ auth_id: permissionId })); await GroupModify(token, id, resultList); setMsg(t('SAVE_COMPLETED')); handleModalClose('registConfirm'); handleModalView('complete'); break; case "complete": handleModalClose('complete'); setMsg(''); navigate('/usermanage/authsetting'); // window.location.reload(); break; } } return ( <> {userInfo.auth_list && !userInfo.auth_list.some(auth => auth.id === authType.authoritySettingUpdate) ? ( ) : ( <> 권한 설정 메뉴 조회 승인 등록/수정 삭제 {authGroups.map((group) => ( ))}