mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-24 05:23:57 +00:00
perf: private app check (#3376)
* perf: private app check * perf: clb count
This commit is contained in:
@@ -157,26 +157,30 @@ async function handler(req: ApiRequestProps<ListAppBody>): Promise<AppListItemTy
|
|||||||
.map((item) => item.permission)
|
.map((item) => item.permission)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Count app collaborators
|
return new AppPermission({
|
||||||
const clbCount = perList.filter(
|
per: tmbPer ?? groupPer ?? AppDefaultPermissionVal,
|
||||||
(item) => String(item.resourceId) === String(app._id)
|
isOwner: String(app.tmbId) === String(tmbId) || teamPer.isOwner
|
||||||
).length;
|
});
|
||||||
|
|
||||||
return {
|
|
||||||
Per: new AppPermission({
|
|
||||||
per: tmbPer ?? groupPer ?? AppDefaultPermissionVal,
|
|
||||||
isOwner: String(app.tmbId) === String(tmbId) || teamPer.isOwner
|
|
||||||
}),
|
|
||||||
privateApp: AppFolderTypeList.includes(app.type) ? clbCount <= 1 : clbCount === 0
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Inherit app
|
const getClbCount = (appId: string) => {
|
||||||
if (app.inheritPermission && app.parentId && !AppFolderTypeList.includes(app.type)) {
|
return perList.filter((item) => String(item.resourceId) === String(appId)).length;
|
||||||
return getPer(String(app.parentId));
|
};
|
||||||
} else {
|
|
||||||
return getPer(String(app._id));
|
// Inherit app, check parent folder clb
|
||||||
|
if (!AppFolderTypeList.includes(app.type) && app.parentId && app.inheritPermission) {
|
||||||
|
return {
|
||||||
|
Per: getPer(String(app.parentId)),
|
||||||
|
privateApp: getClbCount(String(app.parentId)) <= 1
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
Per: getPer(String(app._id)),
|
||||||
|
privateApp: AppFolderTypeList.includes(app.type)
|
||||||
|
? getClbCount(String(app._id)) <= 1
|
||||||
|
: getClbCount(String(app._id)) === 0
|
||||||
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@@ -127,29 +127,33 @@ async function handler(req: ApiRequestProps<GetDatasetListBody>) {
|
|||||||
.filter((item) => String(item.resourceId) === datasetId && !!item.groupId)
|
.filter((item) => String(item.resourceId) === datasetId && !!item.groupId)
|
||||||
.map((item) => item.permission)
|
.map((item) => item.permission)
|
||||||
);
|
);
|
||||||
|
return new DatasetPermission({
|
||||||
const clbCount = perList.filter(
|
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
||||||
(item) => String(item.resourceId) === String(dataset._id)
|
isOwner: String(dataset.tmbId) === String(tmbId) || teamPer.isOwner
|
||||||
).length;
|
});
|
||||||
|
|
||||||
return {
|
|
||||||
Per: new DatasetPermission({
|
|
||||||
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
|
||||||
isOwner: String(dataset.tmbId) === String(tmbId) || teamPer.isOwner
|
|
||||||
}),
|
|
||||||
privateDataset: dataset.type === 'folder' ? clbCount <= 1 : clbCount === 0
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
const getClbCount = (datasetId: string) => {
|
||||||
|
return perList.filter((item) => String(item.resourceId) === String(datasetId)).length;
|
||||||
|
};
|
||||||
|
|
||||||
// inherit
|
// inherit
|
||||||
if (
|
if (
|
||||||
dataset.inheritPermission &&
|
dataset.inheritPermission &&
|
||||||
dataset.parentId &&
|
dataset.parentId &&
|
||||||
dataset.type !== DatasetTypeEnum.folder
|
dataset.type !== DatasetTypeEnum.folder
|
||||||
) {
|
) {
|
||||||
return getPer(String(dataset.parentId));
|
return {
|
||||||
} else {
|
Per: getPer(String(dataset.parentId)),
|
||||||
return getPer(String(dataset._id));
|
privateDataset: getClbCount(String(dataset.parentId)) <= 1
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
return {
|
||||||
|
Per: getPer(String(dataset._id)),
|
||||||
|
privateDataset:
|
||||||
|
dataset.type === DatasetTypeEnum.folder
|
||||||
|
? getClbCount(String(dataset._id)) <= 1
|
||||||
|
: getClbCount(String(dataset._id)) === 0
|
||||||
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
Reference in New Issue
Block a user