@@ -9,6 +9,7 @@ import { getTmbInfoByTmbId } from '../../user/team/controller';
9
9
import { MongoDataset } from '../../../core/dataset/schema' ;
10
10
import {
11
11
NullPermissionVal ,
12
+ NullRoleVal ,
12
13
PerResourceTypeEnum
13
14
} from '@fastgpt/global/support/permission/constant' ;
14
15
import { DatasetErrEnum } from '@fastgpt/global/common/error/code/dataset' ;
@@ -22,6 +23,7 @@ import { DataSetDefaultRoleVal } from '@fastgpt/global/support/permission/datase
22
23
import { getDatasetImagePreviewUrl } from '../../../core/dataset/image/utils' ;
23
24
import { i18nT } from '../../../../web/i18n/utils' ;
24
25
import { parseHeaderCert } from '../auth/common' ;
26
+ import { sumPer } from '@fastgpt/global/support/permission/utils' ;
25
27
26
28
export const authDatasetByTmbId = async ( {
27
29
tmbId,
@@ -65,16 +67,24 @@ export const authDatasetByTmbId = async ({
65
67
const isGetParentClb =
66
68
dataset . inheritPermission && dataset . type !== DatasetTypeEnum . folder && ! ! dataset . parentId ;
67
69
68
- // get dataset permission or inherit permission from parent folder.
69
- const Per = new DatasetPermission ( {
70
- role : await getTmbPermission ( {
70
+ const [ folderPer = NullRoleVal , myPer = NullRoleVal ] = await Promise . all ( [
71
+ isGetParentClb
72
+ ? getTmbPermission ( {
73
+ teamId,
74
+ tmbId,
75
+ resourceId : dataset . parentId ! ,
76
+ resourceType : PerResourceTypeEnum . dataset
77
+ } )
78
+ : NullRoleVal ,
79
+ getTmbPermission ( {
71
80
teamId,
72
81
tmbId,
73
- resourceId : isGetParentClb ? dataset . parentId ! : datasetId ,
82
+ resourceId : datasetId ,
74
83
resourceType : PerResourceTypeEnum . dataset
75
- } ) ,
76
- isOwner
77
- } ) ;
84
+ } )
85
+ ] ) ;
86
+
87
+ const Per = new DatasetPermission ( { role : sumPer ( folderPer , myPer ) , isOwner } ) ;
78
88
79
89
if ( ! Per . checkPer ( per ) ) {
80
90
return Promise . reject ( DatasetErrEnum . unAuthDataset ) ;
0 commit comments