From c53a56b2af8a3db76f67adc77c57e43839515a0f Mon Sep 17 00:00:00 2001 From: yeonddori Date: Sun, 12 Jan 2025 16:20:40 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20DocumentList=EC=97=90=20teamId=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #371 --- src/app/team/[teamId]/study/[studyId]/page.tsx | 1 + src/containers/document/Documents/index.tsx | 1 + src/containers/team/DocumentGridView/index.tsx | 1 + src/types.ts | 1 + 4 files changed, 4 insertions(+) diff --git a/src/app/team/[teamId]/study/[studyId]/page.tsx b/src/app/team/[teamId]/study/[studyId]/page.tsx index 1e7a3b4..42df1a7 100644 --- a/src/app/team/[teamId]/study/[studyId]/page.tsx +++ b/src/app/team/[teamId]/study/[studyId]/page.tsx @@ -144,6 +144,7 @@ const Page = ({ params }: { params: { teamId: number; studyId: number } }) => { {documentArray.map((data) => ( {currentData.map((data) => ( {} }: DocumentGridV {documentArray?.map((document) => { return ( Date: Sun, 12 Jan 2025 16:24:37 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EB=B9=84=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=EB=B0=8F=20=ED=8C=80=EC=9B=90=EC=9D=B4=20=EC=95=84=EB=8B=8C=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=EC=9D=B4=20=EC=A0=91=EA=B7=BC=20=EC=8B=9C=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=20=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #371 --- src/containers/study/DocumentModal/index.tsx | 25 ++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/containers/study/DocumentModal/index.tsx b/src/containers/study/DocumentModal/index.tsx index 5015b51..59d4ad7 100644 --- a/src/containers/study/DocumentModal/index.tsx +++ b/src/containers/study/DocumentModal/index.tsx @@ -2,17 +2,20 @@ import { Box, Flex, Text, Image } from '@chakra-ui/react'; import Link from 'next/link'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { BiFile, BiLink } from 'react-icons/bi'; import { deleteDocument, getDocument } from '@/app/api/document'; +import { getTeamMembers } from '@/app/api/team'; import IconBox from '@/components/IconBox'; import ActionModal from '@/components/Modal/ActionModal'; +import AlertModal from '@/components/Modal/AlertModal'; import S3_URL from '@/constants/s3Url'; import CreateDocumentModal from '@/containers/study/CreateDocumentModal'; import { useGetFetchWithToken, useMutateWithToken } from '@/hooks/useFetchWithToken'; +import useGetUser from '@/hooks/useGetUser'; import colors from '@/theme/foundations/colors'; -import { DocumentDetail } from '@/types'; +import { DocumentDetail, Member } from '@/types'; import { DocumentModalProps } from './types'; @@ -39,6 +42,24 @@ const DocumentModal = ({ id, isOpen, setIsDocsModalOpen, setReload }: DocumentMo setReload((prev: boolean) => !prev); }; + const user = useGetUser(); + const [isMember, setIsMember] = useState(false); + const { result: teamMembers } = useGetFetchWithToken(getTeamMembers, [document?.teamId], user); + + useEffect(() => { + if (user?.isLogin) { + setIsMember(teamMembers?.some((member: Member) => member.id === user.memberId)); + } + }, [teamMembers, user]); + + if (!isMember) { + return ( + setIsDocsModalOpen(false)} title="접근 권한이 없습니다." size="sm"> + {user?.isLogin ? '팀원만 접근 가능합니다.' : '로그인 후 접근 가능합니다.'} + + ); + } + return ( Date: Sun, 12 Jan 2025 16:44:56 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20mock=20data=20build=20error=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mocks/documentCard.ts | 8 ++++++++ src/mocks/documentCardAll.ts | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/mocks/documentCard.ts b/src/mocks/documentCard.ts index 90070cf..0908674 100644 --- a/src/mocks/documentCard.ts +++ b/src/mocks/documentCard.ts @@ -2,6 +2,7 @@ import { DocumentList } from '@/types'; const documentCardData: DocumentList[] = [ { + teamId: 1, id: 1, title: '자료이름1', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -18,6 +19,7 @@ const documentCardData: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 2, title: '자료이름2', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -34,6 +36,7 @@ const documentCardData: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 3, title: '자료이름3', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -51,6 +54,7 @@ const documentCardData: DocumentList[] = [ }, { + teamId: 1, id: 4, title: '자료이름4', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -67,6 +71,7 @@ const documentCardData: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 5, title: '자료이름5', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -84,6 +89,7 @@ const documentCardData: DocumentList[] = [ }, { + teamId: 1, id: 6, title: '자료이름6', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -100,6 +106,7 @@ const documentCardData: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 7, title: '자료이름7', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -116,6 +123,7 @@ const documentCardData: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 8, title: '자료이름8', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', diff --git a/src/mocks/documentCardAll.ts b/src/mocks/documentCardAll.ts index 3273134..40a0e3e 100644 --- a/src/mocks/documentCardAll.ts +++ b/src/mocks/documentCardAll.ts @@ -2,6 +2,7 @@ import { DocumentList } from '@/types'; const documentCardDataAll: DocumentList[] = [ { + teamId: 1, id: 1, title: '자료이름1', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -17,6 +18,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 2, title: '자료이름2', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -32,6 +34,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 3, title: '자료이름3', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -47,6 +50,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 4, title: '자료이름4', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -62,6 +66,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 5, title: '자료이름5', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -77,6 +82,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 6, title: '자료이름6', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -92,6 +98,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 7, title: '자료이름7', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -107,6 +114,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 8, title: '자료이름8', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -122,6 +130,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 9, title: '자료이름9', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -137,6 +146,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 10, title: '자료이름10', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -152,6 +162,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 11, title: '자료이름11', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.', @@ -167,6 +178,7 @@ const documentCardDataAll: DocumentList[] = [ type: 'IMAGE', }, { + teamId: 1, id: 12, title: '자료이름12', description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',