2
2
3
3
import { Box , Flex , Text , Image } from '@chakra-ui/react' ;
4
4
import Link from 'next/link' ;
5
- import { useState } from 'react' ;
5
+ import { useEffect , useState } from 'react' ;
6
6
import { BiFile , BiLink } from 'react-icons/bi' ;
7
7
8
8
import { deleteDocument , getDocument } from '@/app/api/document' ;
9
+ import { getTeamMembers } from '@/app/api/team' ;
9
10
import IconBox from '@/components/IconBox' ;
10
11
import ActionModal from '@/components/Modal/ActionModal' ;
12
+ import AlertModal from '@/components/Modal/AlertModal' ;
11
13
import S3_URL from '@/constants/s3Url' ;
12
14
import CreateDocumentModal from '@/containers/study/CreateDocumentModal' ;
13
15
import { useGetFetchWithToken , useMutateWithToken } from '@/hooks/useFetchWithToken' ;
16
+ import useGetUser from '@/hooks/useGetUser' ;
14
17
import colors from '@/theme/foundations/colors' ;
15
- import { DocumentDetail } from '@/types' ;
18
+ import { DocumentDetail , Member } from '@/types' ;
16
19
17
20
import { DocumentModalProps } from './types' ;
18
21
@@ -39,6 +42,24 @@ const DocumentModal = ({ id, isOpen, setIsDocsModalOpen, setReload }: DocumentMo
39
42
setReload ( ( prev : boolean ) => ! prev ) ;
40
43
} ;
41
44
45
+ const user = useGetUser ( ) ;
46
+ const [ isMember , setIsMember ] = useState < boolean > ( false ) ;
47
+ const { result : teamMembers } = useGetFetchWithToken ( getTeamMembers , [ document ?. teamId ] , user ) ;
48
+
49
+ useEffect ( ( ) => {
50
+ if ( user ?. isLogin ) {
51
+ setIsMember ( teamMembers ?. some ( ( member : Member ) => member . id === user . memberId ) ) ;
52
+ }
53
+ } , [ teamMembers , user ] ) ;
54
+
55
+ if ( ! isMember ) {
56
+ return (
57
+ < AlertModal isOpen = { isOpen } onClose = { ( ) => setIsDocsModalOpen ( false ) } title = "접근 권한이 없습니다." size = "sm" >
58
+ < Text > { user ?. isLogin ? '팀원만 접근 가능합니다.' : '로그인 후 접근 가능합니다.' } </ Text >
59
+ </ AlertModal >
60
+ ) ;
61
+ }
62
+
42
63
return (
43
64
< ActionModal
44
65
isOpen = { isOpen }
0 commit comments