mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-28 09:03:53 +00:00
fix: app/dataset auth (#3021)
This commit is contained in:
@@ -120,47 +120,39 @@ async function handler(req: ApiRequestProps<ListAppBody>): Promise<AppListItemTy
|
|||||||
const filterApps = myApps
|
const filterApps = myApps
|
||||||
.map((app) => {
|
.map((app) => {
|
||||||
const { Per, privateApp } = (() => {
|
const { Per, privateApp } = (() => {
|
||||||
// Inherit app
|
const myPerList = perList.filter(
|
||||||
if (app.inheritPermission && ParentApp && !AppFolderTypeList.includes(app.type)) {
|
(item) =>
|
||||||
const tmbPer = perList.find(
|
String(item.tmbId) === String(tmbId) || myGroupIds.includes(String(item.groupId))
|
||||||
(item) => String(item.resourceId) === String(ParentApp._id) && !!item.tmbId
|
);
|
||||||
|
const getPer = (id: string) => {
|
||||||
|
const tmbPer = myPerList.find(
|
||||||
|
(item) => String(item.resourceId) === id && !!item.tmbId
|
||||||
)?.permission;
|
)?.permission;
|
||||||
const groupPer = getGroupPer(
|
const groupPer = getGroupPer(
|
||||||
perList
|
myPerList
|
||||||
.filter(
|
.filter(
|
||||||
(item) =>
|
(item) =>
|
||||||
String(item.resourceId) === String(ParentApp._id) &&
|
String(item.resourceId) === id && myGroupIds.includes(String(item.groupId))
|
||||||
myGroupIds.includes(String(item.groupId))
|
|
||||||
)
|
)
|
||||||
.map((item) => item.permission)
|
.map((item) => item.permission)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const clbCount = perList.filter((item) => String(item.resourceId) === id).length;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
Per: new AppPermission({
|
Per: new AppPermission({
|
||||||
per: tmbPer ?? groupPer ?? AppDefaultPermissionVal,
|
per: tmbPer ?? groupPer ?? AppDefaultPermissionVal,
|
||||||
isOwner: String(app.tmbId) === String(tmbId) || myPer.isOwner
|
isOwner: String(app.tmbId) === String(tmbId) || myPer.isOwner
|
||||||
}),
|
}),
|
||||||
privateApp:
|
privateApp: AppFolderTypeList.includes(app.type) ? clbCount <= 1 : clbCount === 0
|
||||||
perList.filter((item) => String(item.resourceId) === String(app._id)).length <= 1
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Inherit app
|
||||||
|
if (app.inheritPermission && ParentApp && !AppFolderTypeList.includes(app.type)) {
|
||||||
|
return getPer(String(ParentApp._id));
|
||||||
} else {
|
} else {
|
||||||
const tmbPer = perList.find(
|
return getPer(String(app._id));
|
||||||
(item) => String(item.resourceId) === String(app._id) && !!item.tmbId
|
|
||||||
)?.permission;
|
|
||||||
const group = perList.filter(
|
|
||||||
(item) =>
|
|
||||||
String(item.resourceId) === String(app._id) &&
|
|
||||||
myGroupIds.includes(String(item.groupId))
|
|
||||||
);
|
|
||||||
const groupPer = getGroupPer(group.map((item) => item.permission));
|
|
||||||
return {
|
|
||||||
Per: new AppPermission({
|
|
||||||
per: tmbPer ?? groupPer ?? AppDefaultPermissionVal,
|
|
||||||
isOwner: String(app.tmbId) === String(tmbId) || myPer.isOwner
|
|
||||||
}),
|
|
||||||
privateApp:
|
|
||||||
perList.filter((item) => String(item.resourceId) === String(app._id)).length <= 1
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
@@ -103,50 +103,39 @@ async function handler(req: ApiRequestProps<GetDatasetListBody>) {
|
|||||||
const filterDatasets = myDatasets
|
const filterDatasets = myDatasets
|
||||||
.map((dataset) => {
|
.map((dataset) => {
|
||||||
const { Per, privateDataset } = (() => {
|
const { Per, privateDataset } = (() => {
|
||||||
|
const myPerList = perList.filter(
|
||||||
|
(item) =>
|
||||||
|
String(item.tmbId) === String(tmbId) || myGroupIds.includes(String(item.groupId))
|
||||||
|
);
|
||||||
|
|
||||||
|
const getPer = (id: string) => {
|
||||||
|
const tmbPer = myPerList.find(
|
||||||
|
(item) => String(item.resourceId) === id && !!item.tmbId
|
||||||
|
)?.permission;
|
||||||
|
const groupPer = getGroupPer(
|
||||||
|
myPerList
|
||||||
|
.filter(
|
||||||
|
(item) =>
|
||||||
|
String(item.resourceId) === id && myGroupIds.includes(String(item.groupId))
|
||||||
|
)
|
||||||
|
.map((item) => item.permission)
|
||||||
|
);
|
||||||
|
|
||||||
|
const clbCount = perList.filter((item) => String(item.resourceId) === id).length;
|
||||||
|
|
||||||
|
return {
|
||||||
|
Per: new DatasetPermission({
|
||||||
|
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
||||||
|
isOwner: String(dataset.tmbId) === String(tmbId) || myPer.isOwner
|
||||||
|
}),
|
||||||
|
privateDataset: dataset.type === 'folder' ? clbCount <= 1 : clbCount === 0
|
||||||
|
};
|
||||||
|
};
|
||||||
// inherit
|
// inherit
|
||||||
if (dataset.inheritPermission && parentDataset && dataset.type !== DatasetTypeEnum.folder) {
|
if (dataset.inheritPermission && parentDataset && dataset.type !== DatasetTypeEnum.folder) {
|
||||||
const tmbPer = perList.find(
|
return getPer(String(parentDataset._id));
|
||||||
(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 {
|
|
||||||
Per: new DatasetPermission({
|
|
||||||
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
|
||||||
isOwner: String(parentDataset.tmbId) === tmbId || myPer.isOwner
|
|
||||||
}),
|
|
||||||
privateDataset:
|
|
||||||
perList.filter((item) => String(item.resourceId) === String(dataset._id)).length <= 1
|
|
||||||
};
|
|
||||||
} else {
|
} else {
|
||||||
const tmbPer = perList.find(
|
return getPer(String(dataset._id));
|
||||||
(item) =>
|
|
||||||
String(item.resourceId) === String(dataset._id) && !!item.tmbId && !!item.permission
|
|
||||||
)?.permission;
|
|
||||||
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:
|
|
||||||
perList.filter((item) => String(item.resourceId) === String(dataset._id)).length <= 1
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user