dataset inheritance permission (#2151)

* refactor: dataset create and update api

* chore: defaultpermission & resume fe

* refactor: database auth

* fix(ts): add inheritPermission into default data types

* chore: adjust the code

* fix: list api type filter

* fix: query condition
This commit is contained in:
Finley Ge
2024-07-25 19:03:24 +08:00
committed by GitHub
parent 5906daff9f
commit 65515e7952
20 changed files with 481 additions and 199 deletions

View File

@@ -5,7 +5,6 @@ import PageContainer from '@/components/PageContainer';
import { useTranslation } from 'next-i18next';
import { serviceSideProps } from '@/web/common/utils/i18n';
import ParentPaths from '@/components/common/folder/Path';
import { useDatasetStore } from '@/web/core/dataset/store/dataset';
import List from './component/List';
import { DatasetsContext } from './context';
import DatasetContextProvider from './context';
@@ -14,13 +13,11 @@ import MyMenu from '@fastgpt/web/components/common/MyMenu';
import { AddIcon } from '@chakra-ui/icons';
import { useUserStore } from '@/web/support/user/useUserStore';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { FolderIcon, FolderImgUrl } from '@fastgpt/global/common/file/image/constants';
import { FolderIcon } from '@fastgpt/global/common/file/image/constants';
import { EditFolderFormType } from '@fastgpt/web/components/common/MyModal/EditFolderModal';
import dynamic from 'next/dynamic';
import { postCreateDataset, putDatasetById } from '@/web/core/dataset/api';
import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants';
import { postCreateDatasetFolder, resumeInheritPer } from '@/web/core/dataset/api';
import FolderSlideCard from '@/components/common/folder/SlideCard';
import { useSystemStore } from '@/web/common/system/useSystemStore';
import {
DatasetDefaultPermissionVal,
DatasetPermissionList
@@ -44,17 +41,18 @@ const Dataset = () => {
const router = useRouter();
const { parentId } = router.query as { parentId: string };
const { myDatasets } = useDatasetStore();
const {
myDatasets,
paths,
isFetchingDatasets,
refetchPaths,
refetchDatasets,
loadMyDatasets,
refetchFolderDetail,
folderDetail,
setEditedDataset,
setMoveDatasetId,
onDelDataset
onDelDataset,
onUpdateDataset
} = useContextSelector(DatasetsContext, (v) => v);
const { userInfo } = useUserStore();
@@ -139,7 +137,11 @@ const Dataset = () => {
{!!folderDetail && isPc && (
<Box ml="6">
<FolderSlideCard
refreshDeps={[folderDetail._id]}
resumeInheritPermission={() => resumeInheritPer(folderDetail._id)}
isInheritPermission={folderDetail.inheritPermission}
hasParent={!!folderDetail.parentId}
refetchResource={() => Promise.all([refetchFolderDetail(), loadMyDatasets()])}
refreshDeps={[folderDetail._id, folderDetail.inheritPermission]}
name={folderDetail.name}
intro={folderDetail.intro}
onEdit={() => {
@@ -165,7 +167,7 @@ const Dataset = () => {
value: folderDetail.defaultPermission,
defaultValue: DatasetDefaultPermissionVal,
onChange: (e) => {
return putDatasetById({
return onUpdateDataset({
id: folderDetail._id,
defaultPermission: e
});
@@ -192,7 +194,8 @@ const Dataset = () => {
deleteDatasetCollaborators({
datasetId: folderDetail._id,
tmbId
})
}),
refreshDeps: [folderDetail._id, folderDetail.inheritPermission]
}}
/>
</Box>
@@ -202,16 +205,14 @@ const Dataset = () => {
{!!editFolderData && (
<EditFolderModal
onClose={() => setEditFolderData(undefined)}
onCreate={async ({ name }) => {
onCreate={async ({ name, intro }) => {
try {
await postCreateDataset({
await postCreateDatasetFolder({
parentId: parentId || undefined,
name,
type: DatasetTypeEnum.folder,
avatar: FolderImgUrl,
intro: ''
intro: intro ?? ''
});
refetchDatasets();
loadMyDatasets();
refetchPaths();
} catch (error) {
return Promise.reject(error);
@@ -219,13 +220,11 @@ const Dataset = () => {
}}
onEdit={async ({ name, intro, id }) => {
try {
await putDatasetById({
await onUpdateDataset({
id,
name,
intro
});
refetchDatasets();
refetchPaths();
} catch (error) {
return Promise.reject(error);
}