import { NavLink, useNavigate } from 'react-router-dom'; import arrowIcon from '../../../assets/img/icon/icon-tab.png'; import styled from 'styled-components'; import { useRecoilValue } from 'recoil'; import { authList } from '../../../store/authList'; import Modal from '../modal/Modal'; import { BtnWrapper, ButtonClose, ModalText } from '../../../styles/Components'; import { useEffect, useState } from 'react'; import Button from '../button/Button'; import { useLocation } from 'react-router-dom'; import { AuthInfo } from '../../../apis'; import { getMenuConfig } from '../../../utils'; import { adminAuthLevel } from '../../../assets/data/types'; const Navi = () => { const token = sessionStorage.getItem('token'); const userInfo = useRecoilValue(authList); const menu = getMenuConfig(userInfo); const [modalClose, setModalClose] = useState('hidden'); const [logoutModalClose, setLogoutModalClose] = useState('hidden'); const location = useLocation(); const navigate = useNavigate(); const handleToken = async () => { const tokenStatus = await AuthInfo(token); tokenStatus.message === '잘못된 타입의 토큰입니다.' && setLogoutModalClose('view'); }; useEffect(() => { handleToken(); }, [token]); const handleTopMenu = e => { e.preventDefault(); e.target.classList.toggle('active'); }; const handleLink = e => { let topActive = document.querySelectorAll('nav .active'); let currentTopMenu = e.target.closest('ul').previousSibling; for (let i = 0; i < topActive.length; i++) { if (topActive[i] !== currentTopMenu) { topActive[i].classList.remove('active'); } } handleToken(); }; // 등록 완료 모달 const handleModalClose = () => { if (modalClose === 'hidden') { setModalClose('view'); } else { setModalClose('hidden'); } }; // 로그아웃 안내 모달 const handleConfirmClose = () => { if (logoutModalClose === 'hidden') { setLogoutModalClose('view'); } else { setLogoutModalClose('hidden'); sessionStorage.removeItem('token'); navigate('/'); } }; const isClickable = (submenu) => { switch (userInfo.auth_level_type) { case adminAuthLevel.DEVELOPER: case adminAuthLevel.READER: case adminAuthLevel.MASTER: return true; default: return submenu.authLevel === adminAuthLevel.NONE && userInfo.auth_list && userInfo.auth_list.some(auth => auth.id === submenu.id); } } return ( <> {/* 접근 불가 모달 */} 해당 메뉴에 대한 조회 권한이 없습니다.
권한 등급을 변경 후 다시 이용해주세요.