From 7c5fa44c25c12c93ab9a24378d376f1f716f321b Mon Sep 17 00:00:00 2001 From: Finley Ge Date: Sat, 12 Oct 2024 14:50:41 +0800 Subject: [PATCH] feat: dataset collaborator with group, remove default permission --- packages/global/core/dataset/type.d.ts | 9 +- packages/service/core/dataset/schema.ts | 7 +- .../service/support/permission/controller.ts | 1 - .../support/permission/dataset/auth.ts | 12 ++- .../src/pages/api/core/dataset/allDataset.ts | 72 +++++++++++----- .../pages/api/core/dataset/folder/create.ts | 32 +++---- .../app/src/pages/api/core/dataset/list.ts | 83 ++++++++++++++----- .../app/src/pages/api/core/dataset/update.ts | 73 ++-------------- .../pages/dataset/detail/components/Info.tsx | 52 +++--------- .../src/pages/dataset/list/component/List.tsx | 17 +--- projects/app/src/pages/dataset/list/index.tsx | 16 +--- .../app/src/web/core/dataset/constants.ts | 3 - 12 files changed, 159 insertions(+), 218 deletions(-) diff --git a/packages/global/core/dataset/type.d.ts b/packages/global/core/dataset/type.d.ts index b2b720dc21b..27600b5ff24 100644 --- a/packages/global/core/dataset/type.d.ts +++ b/packages/global/core/dataset/type.d.ts @@ -1,4 +1,3 @@ -import { PermissionSchemaType } from '../../support/permission/type'; import type { LLMModelItemType, VectorModelItemType } from '../../core/ai/model.d'; import { PermissionTypeEnum } from '../../support/permission/constant'; import { PushDatasetDataChunkProps } from './api'; @@ -32,8 +31,8 @@ export type DatasetSchemaType = { selector: string; }; externalReadUrl?: string; -} & PermissionSchemaType; -// } & PermissionSchemaType; + inheritPermission: boolean; +}; export type DatasetCollectionSchemaType = { _id: string; @@ -146,7 +145,9 @@ export type DatasetListItemType = { type: `${DatasetTypeEnum}`; permission: DatasetPermission; vectorModel: VectorModelItemType; -} & PermissionSchemaType; + inheritPermission: boolean; + private?: boolean; +}; export type DatasetItemType = Omit & { vectorModel: VectorModelItemType; diff --git a/packages/service/core/dataset/schema.ts b/packages/service/core/dataset/schema.ts index 99572b58577..4f4851cf5f2 100644 --- a/packages/service/core/dataset/schema.ts +++ b/packages/service/core/dataset/schema.ts @@ -9,8 +9,6 @@ import { TeamCollectionName, TeamMemberCollectionName } from '@fastgpt/global/support/user/team/constant'; -import { DatasetDefaultPermissionVal } from '@fastgpt/global/support/permission/dataset/constant'; -import { getPermissionSchema } from '@fastgpt/global/support/permission/utils'; import type { DatasetSchemaType } from '@fastgpt/global/core/dataset/type.d'; export const DatasetCollectionName = 'datasets'; @@ -88,7 +86,10 @@ const DatasetSchema = new Schema({ externalReadUrl: { type: String }, - ...getPermissionSchema(DatasetDefaultPermissionVal) + inheritPermission: { + type: Boolean, + default: true + } }); try { diff --git a/packages/service/support/permission/controller.ts b/packages/service/support/permission/controller.ts index 807b35e27bc..f8dbb696e38 100644 --- a/packages/service/support/permission/controller.ts +++ b/packages/service/support/permission/controller.ts @@ -197,7 +197,6 @@ export const delResourcePermission = ({ resourceType: PerResourceTypeEnum; teamId: string; resourceId: string; - tmbId: string; session?: ClientSession; } & RequireOnlyOne<{ tmbId: string; diff --git a/packages/service/support/permission/dataset/auth.ts b/packages/service/support/permission/dataset/auth.ts index 97259f7aaf2..b893405ac4c 100644 --- a/packages/service/support/permission/dataset/auth.ts +++ b/packages/service/support/permission/dataset/auth.ts @@ -20,6 +20,7 @@ import { MongoDatasetData } from '../../../core/dataset/data/schema'; import { AuthModeType, AuthResponseType } from '../type'; import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants'; import { ParentIdType } from '@fastgpt/global/common/parentFolder/type'; +import { DatasetDefaultPermissionVal } from '@fastgpt/global/support/permission/dataset/constant'; export const authDatasetByTmbId = async ({ tmbId, @@ -62,7 +63,7 @@ export const authDatasetByTmbId = async ({ const isOwner = tmbPer.isOwner || String(dataset.tmbId) === String(tmbId); // get dataset permission or inherit permission from parent folder. - const { Per, defaultPermission } = await (async () => { + const { Per } = await (async () => { if ( dataset.type === DatasetTypeEnum.folder || dataset.inheritPermission === false || @@ -78,12 +79,11 @@ export const authDatasetByTmbId = async ({ resourceType: PerResourceTypeEnum.dataset }); const Per = new DatasetPermission({ - per: rp ?? dataset.defaultPermission, + per: rp ?? DatasetDefaultPermissionVal, isOwner }); return { - Per, - defaultPermission: dataset.defaultPermission + Per }; } else { // is not folder and inheritPermission is true and is not root folder. @@ -100,8 +100,7 @@ export const authDatasetByTmbId = async ({ }); return { - Per, - defaultPermission: parent.defaultPermission + Per }; } })(); @@ -112,7 +111,6 @@ export const authDatasetByTmbId = async ({ return { ...dataset, - defaultPermission, permission: Per }; })(); diff --git a/projects/app/src/pages/api/core/dataset/allDataset.ts b/projects/app/src/pages/api/core/dataset/allDataset.ts index f3ac48e33b6..56f1e3625fb 100644 --- a/projects/app/src/pages/api/core/dataset/allDataset.ts +++ b/projects/app/src/pages/api/core/dataset/allDataset.ts @@ -2,7 +2,6 @@ import type { NextApiRequest } from 'next'; import { MongoDataset } from '@fastgpt/service/core/dataset/schema'; import { getVectorModel } from '@fastgpt/service/core/ai/model'; import type { DatasetSimpleItemType } from '@fastgpt/global/core/dataset/type.d'; -import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants'; import { NextAPI } from '@/service/middleware/entry'; import { PerResourceTypeEnum, @@ -11,6 +10,9 @@ import { import { MongoResourcePermission } from '@fastgpt/service/support/permission/schema'; import { DatasetPermission } from '@fastgpt/global/support/permission/dataset/controller'; import { authUserPer } from '@fastgpt/service/support/permission/user/auth'; +import { DatasetDefaultPermissionVal } from '@fastgpt/global/support/permission/dataset/constant'; +import { getGroupsByTmbId } from '@fastgpt/service/support/permission/memberGroup/controllers'; +import { getGroupPer } from '@fastgpt/service/support/permission/controller'; /* get all dataset by teamId or tmbId */ async function handler(req: NextApiRequest): Promise { @@ -25,7 +27,14 @@ async function handler(req: NextApiRequest): Promise { per: ReadPermissionVal }); - const [myDatasets, rpList] = await Promise.all([ + const myGroupIds = ( + await getGroupsByTmbId({ + tmbId, + teamId + }) + ).map((item) => String(item._id)); + + const [myDatasets, perList] = await Promise.all([ MongoDataset.find({ teamId }) @@ -34,39 +43,56 @@ async function handler(req: NextApiRequest): Promise { }) .lean(), MongoResourcePermission.find({ - resourceType: PerResourceTypeEnum.dataset, - teamId, - tmbId + $and: [ + { + resourceType: PerResourceTypeEnum.dataset, + teamId + }, + { $or: [{ tmbId }, { groupId: { $in: myGroupIds } }] } + ] }).lean() ]); const filterDatasets = myDatasets .map((dataset) => { const perVal = (() => { - const perVal = rpList.find( - (item) => String(item.resourceId) === String(dataset._id) - )?.permission; - if (perVal) { - return perVal; - } + const parentDataset = myDatasets.find( + (item) => String(item._id) === String(dataset.parentId) + ); - if (dataset.inheritPermission && dataset.parentId) { - const parentDataset = myDatasets.find( - (item) => String(item._id) === String(dataset.parentId) + if (dataset.inheritPermission && dataset.parentId && parentDataset) { + const tmbPer = perList.find( + (item) => String(item.resourceId) === String(parentDataset._id) && !!item.tmbId + )?.permission; + const groupPer = getGroupPer( + perList + .filter( + (item) => + String(item.resourceId) === String(parentDataset._id) && + myGroupIds.includes(String(item.groupId)) + ) + .map((item) => item.permission) + ); + return tmbPer ?? groupPer ?? DatasetDefaultPermissionVal; + } else { + const tmbPer = perList.find( + (item) => String(item.resourceId) === String(dataset._id) && !!item.tmbId + )?.permission; + const groupPer = getGroupPer( + perList + .filter( + (item) => + String(item.resourceId) === String(dataset._id) && + myGroupIds.includes(String(item.groupId)) + ) + .map((item) => item.permission) ); - if (parentDataset) { - const parentPerVal = - rpList.find((item) => String(item.resourceId) === String(parentDataset._id)) - ?.permission ?? parentDataset.defaultPermission; - if (parentPerVal) { - return parentPerVal; - } - } + return tmbPer ?? groupPer ?? DatasetDefaultPermissionVal; } })(); const Per = new DatasetPermission({ - per: perVal ?? dataset.defaultPermission, + per: perVal ?? DatasetDefaultPermissionVal, isOwner: String(dataset.tmbId) === tmbId || tmbPer.isOwner }); diff --git a/projects/app/src/pages/api/core/dataset/folder/create.ts b/projects/app/src/pages/api/core/dataset/folder/create.ts index f6ca7d16a4e..d5f55d238e4 100644 --- a/projects/app/src/pages/api/core/dataset/folder/create.ts +++ b/projects/app/src/pages/api/core/dataset/folder/create.ts @@ -12,8 +12,7 @@ import { mongoSessionRun } from '@fastgpt/service/common/mongo/sessionRun'; import { parseParentIdInMongo } from '@fastgpt/global/common/parentFolder/utils'; import { FolderImgUrl } from '@fastgpt/global/common/file/image/constants'; import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants'; -import { DatasetDefaultPermissionVal } from '@fastgpt/global/support/permission/dataset/constant'; -import { getResourceAllClbs } from '@fastgpt/service/support/permission/controller'; +import { getResourceClbsAndGroups } from '@fastgpt/service/support/permission/controller'; import { syncCollaborators } from '@fastgpt/service/support/permission/inheritPermission'; export type DatasetFolderCreateQuery = {}; export type DatasetFolderCreateBody = { @@ -38,18 +37,14 @@ async function handler( authToken: true }); - const parentFolder = await (async () => { - if (parentId) { - return ( - await authDataset({ - datasetId: parentId, - per: WritePermissionVal, - req, - authToken: true - }) - ).dataset; - } - })(); + if (parentId) { + await authDataset({ + datasetId: parentId, + per: WritePermissionVal, + req, + authToken: true + }); + } await mongoSessionRun(async (session) => { const app = await MongoDataset.create({ @@ -59,14 +54,11 @@ async function handler( intro, teamId, tmbId, - type: DatasetTypeEnum.folder, - defaultPermission: !!parentFolder - ? parentFolder.defaultPermission - : DatasetDefaultPermissionVal + type: DatasetTypeEnum.folder }); if (parentId) { - const parentClbs = await getResourceAllClbs({ + const parentClbsAndGroups = await getResourceClbsAndGroups({ teamId, resourceId: parentId, resourceType: PerResourceTypeEnum.dataset, @@ -77,7 +69,7 @@ async function handler( resourceType: PerResourceTypeEnum.dataset, teamId, resourceId: app._id, - collaborators: parentClbs, + collaborators: parentClbsAndGroups, session }); } diff --git a/projects/app/src/pages/api/core/dataset/list.ts b/projects/app/src/pages/api/core/dataset/list.ts index d513063e400..1178eb9fa8d 100644 --- a/projects/app/src/pages/api/core/dataset/list.ts +++ b/projects/app/src/pages/api/core/dataset/list.ts @@ -16,6 +16,8 @@ import { parseParentIdInMongo } from '@fastgpt/global/common/parentFolder/utils' import { ApiRequestProps } from '@fastgpt/service/type/next'; import { authDataset } from '@fastgpt/service/support/permission/dataset/auth'; import { replaceRegChars } from '@fastgpt/global/common/string/tools'; +import { getGroupsByTmbId } from '@fastgpt/service/support/permission/memberGroup/controllers'; +import { getGroupPer } from '@fastgpt/service/support/permission/controller'; export type GetDatasetListBody = { parentId: ParentIdType; @@ -30,7 +32,7 @@ async function handler(req: ApiRequestProps) { dataset: parentDataset, teamId, tmbId, - permission: tmbPer + permission: myPer } = await (async () => { if (parentId) { return await authDataset({ @@ -76,44 +78,81 @@ async function handler(req: ApiRequestProps) { }; })(); - const [myDatasets, rpList] = await Promise.all([ + const myGroupIds = ( + await getGroupsByTmbId({ + tmbId, + teamId + }) + ).map((item) => String(item._id)); + + const [myDatasets, perList] = await Promise.all([ MongoDataset.find(findDatasetQuery) .sort({ updateTime: -1 }) .lean(), MongoResourcePermission.find({ - resourceType: PerResourceTypeEnum.dataset, - teamId, - tmbId + $and: [ + { + resourceType: PerResourceTypeEnum.dataset, + teamId + }, + { $or: [{ tmbId }, { groupId: { $in: myGroupIds } }] } + ] }).lean() ]); const filterDatasets = myDatasets .map((dataset) => { - const Per = (() => { + const { Per, privateDataset } = (() => { + // inherit if (dataset.inheritPermission && parentDataset && dataset.type !== DatasetTypeEnum.folder) { - dataset.defaultPermission = parentDataset.defaultPermission; - const perVal = rpList.find( - (item) => String(item.resourceId) === String(parentDataset._id) + const tmbPer = perList.find( + (item) => String(item.resourceId) === String(parentDataset._id) && !!item.tmbId )?.permission; - return new DatasetPermission({ - per: perVal ?? parentDataset.defaultPermission, - isOwner: String(parentDataset.tmbId) === tmbId || tmbPer.isOwner - }); + const groupPer = getGroupPer( + perList + .filter( + (item) => + String(item.resourceId) === String(parentDataset._id) && + myGroupIds.includes(String(item.groupId)) + ) + .map((item) => item.permission) + ); + return { + Per: new DatasetPermission({ + per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal, + isOwner: String(parentDataset.tmbId) === tmbId || myPer.isOwner + }), + privateDataset: !tmbPer && !groupPer + }; } else { - const perVal = rpList.find( - (item) => String(item.resourceId) === String(dataset._id) + const tmbPer = perList.find( + (item) => + String(item.resourceId) === String(dataset._id) && !!item.tmbId && !!item.permission )?.permission; - return new DatasetPermission({ - per: perVal ?? dataset.defaultPermission, - isOwner: String(dataset.tmbId) === tmbId || tmbPer.isOwner - }); + const groupPer = getGroupPer( + perList + .filter( + (item) => + String(item.resourceId) === String(dataset._id) && + myGroupIds.includes(String(item.groupId)) + ) + .map((item) => item.permission) + ); + return { + Per: new DatasetPermission({ + per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal, + isOwner: String(dataset.tmbId) === tmbId || myPer.isOwner + }), + privateDataset: !tmbPer && !groupPer + }; } })(); return { ...dataset, - permission: Per + permission: Per, + privateDataset }; }) .filter((app) => app.permission.hasReadPer); @@ -127,10 +166,10 @@ async function handler(req: ApiRequestProps) { type: item.type, permission: item.permission, vectorModel: getVectorModel(item.vectorModel), - defaultPermission: item.defaultPermission ?? DatasetDefaultPermissionVal, inheritPermission: item.inheritPermission, tmbId: item.tmbId, - updateTime: item.updateTime + updateTime: item.updateTime, + private: item.privateDataset })) ); diff --git a/projects/app/src/pages/api/core/dataset/update.ts b/projects/app/src/pages/api/core/dataset/update.ts index 427d340bc6a..b5e6c102598 100644 --- a/projects/app/src/pages/api/core/dataset/update.ts +++ b/projects/app/src/pages/api/core/dataset/update.ts @@ -11,12 +11,10 @@ import { CommonErrEnum } from '@fastgpt/global/common/error/code/common'; import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next'; import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants'; import { ClientSession } from 'mongoose'; -import { PermissionValueType } from '@fastgpt/global/support/permission/type'; import { parseParentIdInMongo } from '@fastgpt/global/common/parentFolder/utils'; import { mongoSessionRun } from '@fastgpt/service/common/mongo/sessionRun'; -import { DatasetDefaultPermissionVal } from '@fastgpt/global/support/permission/dataset/constant'; import { DatasetSchemaType } from '@fastgpt/global/core/dataset/type'; -import { getResourceAllClbs } from '@fastgpt/service/support/permission/controller'; +import { getResourceClbsAndGroups } from '@fastgpt/service/support/permission/controller'; import { syncChildrenPermission, syncCollaborators @@ -54,14 +52,9 @@ async function handler( } })()) as { dataset: DatasetSchemaType }; - const isDefaultPermissionChanged = - defaultPermission !== undefined && dataset.defaultPermission !== defaultPermission; const isFolder = dataset.type === DatasetTypeEnum.folder; - const onUpdate = async ( - session?: ClientSession, - updatedDefaultPermission?: PermissionValueType - ) => { + const onUpdate = async (session?: ClientSession) => { await MongoDataset.findByIdAndUpdate( id, { @@ -72,13 +65,7 @@ async function handler( ...(websiteConfig && { websiteConfig }), ...(status && { status }), ...(intro !== undefined && { intro }), - ...(externalReadUrl !== undefined && { externalReadUrl }), - // move - ...(updatedDefaultPermission !== undefined && { - defaultPermission: updatedDefaultPermission - }), - // update the defaultPermission - ...(dataset.parentId && isDefaultPermissionChanged && { inheritPermission: false }) + ...(externalReadUrl !== undefined && { externalReadUrl }) }, { session } ); @@ -87,21 +74,8 @@ async function handler( // move if (parentId !== undefined) { await mongoSessionRun(async (session) => { - const parentDefaultPermission = await (async () => { - if (parentId) { - const { dataset: parentDataset } = await authDataset({ - req, - authToken: true, - datasetId: parentId, - per: WritePermissionVal - }); - return parentDataset.defaultPermission; - } - return DatasetDefaultPermissionVal; - })(); - if (isFolder && dataset.inheritPermission) { - const parentClbs = await getResourceAllClbs({ + const parentClbsAndGroups = await getResourceClbsAndGroups({ teamId: dataset.teamId, resourceId: parentId, resourceType: PerResourceTypeEnum.dataset, @@ -112,7 +86,7 @@ async function handler( teamId: dataset.teamId, resourceId: id, resourceType: PerResourceTypeEnum.dataset, - collaborators: parentClbs, + collaborators: parentClbsAndGroups, session }); @@ -121,46 +95,13 @@ async function handler( resourceType: PerResourceTypeEnum.dataset, resourceModel: MongoDataset, folderTypeList: [DatasetTypeEnum.folder], - collaborators: parentClbs, + collaborators: parentClbsAndGroups, session }); - return onUpdate(session, parentDefaultPermission); + return onUpdate(session); } return onUpdate(session); }); - } else if (isDefaultPermissionChanged) { - await mongoSessionRun(async (session) => { - if (isFolder) { - await syncChildrenPermission({ - resource: { - _id: dataset._id, - type: dataset.type, - teamId: dataset.teamId, - parentId: dataset.parentId - }, - resourceType: PerResourceTypeEnum.dataset, - resourceModel: MongoDataset, - folderTypeList: [DatasetTypeEnum.folder], - session - }); - } else if (dataset.inheritPermission && dataset.parentId) { - const parentClbs = await getResourceAllClbs({ - teamId: dataset.teamId, - resourceId: parentId, - resourceType: PerResourceTypeEnum.dataset, - session - }); - - await syncCollaborators({ - teamId: dataset.teamId, - resourceId: id, - resourceType: PerResourceTypeEnum.dataset, - collaborators: parentClbs, - session - }); - } - return onUpdate(session, defaultPermission); - }); } else { return onUpdate(); } diff --git a/projects/app/src/pages/dataset/detail/components/Info.tsx b/projects/app/src/pages/dataset/detail/components/Info.tsx index fca5b693a02..4911709a90c 100644 --- a/projects/app/src/pages/dataset/detail/components/Info.tsx +++ b/projects/app/src/pages/dataset/detail/components/Info.tsx @@ -1,7 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { useRouter } from 'next/router'; import { Box, Flex, Input } from '@chakra-ui/react'; -import { delDatasetById } from '@/web/core/dataset/api'; import { useSelectFile } from '@/web/common/file/hooks/useSelectFile'; import { useConfirm } from '@fastgpt/web/hooks/useConfirm'; import { useForm } from 'react-hook-form'; @@ -10,7 +8,7 @@ import type { DatasetItemType } from '@fastgpt/global/core/dataset/type.d'; import Avatar from '@fastgpt/web/components/common/Avatar'; import { useTranslation } from 'next-i18next'; import { useSystemStore } from '@/web/common/system/useSystemStore'; -import { useRequest, useRequest2 } from '@fastgpt/web/hooks/useRequest'; +import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { MongoImageTypeEnum } from '@fastgpt/global/common/file/image/constants'; import AIModelSelector from '@/components/Select/AIModelSelector'; import { postRebuildEmbedding } from '@/web/core/dataset/api'; @@ -21,12 +19,8 @@ import MyDivider from '@fastgpt/web/components/common/MyDivider/index'; import { DatasetTypeEnum, DatasetTypeMap } from '@fastgpt/global/core/dataset/constants'; import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel'; -import DefaultPermissionList from '@/components/support/permission/DefaultPerList'; import MyIcon from '@fastgpt/web/components/common/Icon'; -import { - DatasetDefaultPermissionVal, - DatasetPermissionList -} from '@fastgpt/global/support/permission/dataset/constant'; +import { DatasetPermissionList } from '@fastgpt/global/support/permission/dataset/constant'; import MemberManager from '../../component/MemberManager'; import { getCollaboratorList, @@ -39,7 +33,6 @@ import { EditResourceInfoFormType } from '@/components/common/Modal/EditResource const EditResourceModal = dynamic(() => import('@/components/common/Modal/EditResourceModal')); const Info = ({ datasetId }: { datasetId: string }) => { - const router = useRouter(); const [openBaseConfig, setOpenBaseConfig] = useState(true); const [openPermissionConfig, setOpenPermissionConfig] = useState(true); const { t } = useTranslation(); @@ -56,7 +49,6 @@ const Info = ({ datasetId }: { datasetId: string }) => { const vectorModel = watch('vectorModel'); const agentModel = watch('agentModel'); - const defaultPermission = watch('defaultPermission'); const { datasetModelList, vectorModelList } = useSystemStore(); const { ConfirmModal: ConfirmDelModal } = useConfirm({ @@ -69,30 +61,17 @@ const Info = ({ datasetId }: { datasetId: string }) => { type: 'delete' }); - const { File, onOpen: onOpenSelectFile } = useSelectFile({ + const { File } = useSelectFile({ fileType: '.jpg,.png', multiple: false }); - /* 点击删除 */ - const { mutate: onclickDelete, isLoading: isDeleting } = useRequest({ - mutationFn: () => { - return delDatasetById(datasetId); - }, - onSuccess() { - router.replace(`/dataset/list`); - }, - successToast: t('common:common.Delete Success'), - errorToast: t('common:common.Delete Failed') - }); - - const { runAsync: onSave, loading: isSaving } = useRequest2( + const { runAsync: onSave } = useRequest2( (data: DatasetItemType) => { return updateDataset({ id: datasetId, agentModel: data.agentModel, - externalReadUrl: data.externalReadUrl, - defaultPermission: data.defaultPermission + externalReadUrl: data.externalReadUrl }); }, { @@ -101,7 +80,7 @@ const Info = ({ datasetId }: { datasetId: string }) => { } ); - const { runAsync: onSelectFile, loading: isSelecting } = useRequest2( + const { runAsync: onSelectFile } = useRequest2( (e: File[]) => { const file = e[0]; if (!file) return Promise.resolve(null); @@ -122,7 +101,7 @@ const Info = ({ datasetId }: { datasetId: string }) => { } ); - const { runAsync: onRebuilding, loading: isRebuilding } = useRequest2( + const { runAsync: onRebuilding } = useRequest2( (vectorModel: VectorModelItemType) => { return postRebuildEmbedding({ datasetId, @@ -242,10 +221,9 @@ const Info = ({ datasetId }: { datasetId: string }) => { onchange={(e) => { const vectorModel = vectorModelList.find((item) => item.model === e); if (!vectorModel) return; - return onOpenConfirmRebuild(() => { - return onRebuilding(vectorModel).then(() => { - setValue('vectorModel', vectorModel); - }); + return onOpenConfirmRebuild(async () => { + await onRebuilding(vectorModel); + setValue('vectorModel', vectorModel); })(); }} /> @@ -326,20 +304,12 @@ const Info = ({ datasetId }: { datasetId: string }) => { {t('common:permission.Default permission')} - { - setValue('defaultPermission', v); - return handleSubmit((data) => onSave({ ...data, defaultPermission: v }))(); - }} - /> getCollaboratorList(datasetId), permissionList: DatasetPermissionList, diff --git a/projects/app/src/pages/dataset/list/component/List.tsx b/projects/app/src/pages/dataset/list/component/List.tsx index f677b7882a4..72eeffb1ad5 100644 --- a/projects/app/src/pages/dataset/list/component/List.tsx +++ b/projects/app/src/pages/dataset/list/component/List.tsx @@ -18,10 +18,7 @@ import MyTooltip from '@fastgpt/web/components/common/MyTooltip'; import dynamic from 'next/dynamic'; import { useContextSelector } from 'use-context-selector'; import { DatasetsContext } from '../context'; -import { - DatasetDefaultPermissionVal, - DatasetPermissionList -} from '@fastgpt/global/support/permission/dataset/constant'; +import { DatasetPermissionList } from '@fastgpt/global/support/permission/dataset/constant'; import ConfigPerModal from '@/components/support/permission/ConfigPerModal'; import { deleteDatasetCollaborators, @@ -278,7 +275,7 @@ function List() { )} @@ -426,16 +423,8 @@ function List() { } avatar={editPerDataset.avatar} name={editPerDataset.name} - defaultPer={{ - value: editPerDataset.defaultPermission, - defaultValue: DatasetDefaultPermissionVal, - onChange: (e) => - onUpdateDataset({ - id: editPerDataset._id, - defaultPermission: e - }) - }} managePer={{ + mode: 'all', permission: editPerDataset.permission, onGetCollaboratorList: () => getCollaboratorList(editPerDataset._id), permissionList: DatasetPermissionList, diff --git a/projects/app/src/pages/dataset/list/index.tsx b/projects/app/src/pages/dataset/list/index.tsx index 985b6f86710..1658dda82a8 100644 --- a/projects/app/src/pages/dataset/list/index.tsx +++ b/projects/app/src/pages/dataset/list/index.tsx @@ -17,10 +17,7 @@ import { EditFolderFormType } from '@fastgpt/web/components/common/MyModal/EditF import dynamic from 'next/dynamic'; import { postCreateDatasetFolder, resumeInheritPer } from '@/web/core/dataset/api'; import FolderSlideCard from '@/components/common/folder/SlideCard'; -import { - DatasetDefaultPermissionVal, - DatasetPermissionList -} from '@fastgpt/global/support/permission/dataset/constant'; +import { DatasetPermissionList } from '@fastgpt/global/support/permission/dataset/constant'; import { postUpdateDatasetCollaborators, deleteDatasetCollaborators, @@ -227,17 +224,8 @@ const Dataset = () => { }); }) } - defaultPer={{ - value: folderDetail.defaultPermission, - defaultValue: DatasetDefaultPermissionVal, - onChange: (e) => { - return onUpdateDataset({ - id: folderDetail._id, - defaultPermission: e - }); - } - }} managePer={{ + mode: 'all', permission: folderDetail.permission, onGetCollaboratorList: () => getCollaboratorList(folderDetail._id), permissionList: DatasetPermissionList, diff --git a/projects/app/src/web/core/dataset/constants.ts b/projects/app/src/web/core/dataset/constants.ts index cf94ceba575..9a815d013c6 100644 --- a/projects/app/src/web/core/dataset/constants.ts +++ b/projects/app/src/web/core/dataset/constants.ts @@ -8,7 +8,6 @@ import type { DatasetCollectionItemType, DatasetItemType } from '@fastgpt/global/core/dataset/type.d'; -import { DatasetDefaultPermissionVal } from '@fastgpt/global/support/permission/dataset/constant'; import { DatasetPermission } from '@fastgpt/global/support/permission/dataset/controller'; export const defaultDatasetDetail: DatasetItemType = { @@ -26,7 +25,6 @@ export const defaultDatasetDetail: DatasetItemType = { permission: new DatasetPermission(), vectorModel: defaultVectorModels[0], agentModel: defaultQAModels[0], - defaultPermission: DatasetDefaultPermissionVal, inheritPermission: true }; @@ -48,7 +46,6 @@ export const defaultCollectionDetail: DatasetCollectionItemType = { status: 'active', vectorModel: defaultVectorModels[0].model, agentModel: defaultQAModels[0].model, - defaultPermission: DatasetDefaultPermissionVal, inheritPermission: true }, tags: [],