mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-28 00:56:26 +00:00
fix/group (#3012)
* fix: app/dataset list private resource bug * fix: auth owner
This commit is contained in:
@@ -72,6 +72,12 @@ export const authAppByTmbId = async ({
|
|||||||
const isOwner = tmbPer.isOwner || String(app.tmbId) === String(tmbId);
|
const isOwner = tmbPer.isOwner || String(app.tmbId) === String(tmbId);
|
||||||
|
|
||||||
const { Per } = await (async () => {
|
const { Per } = await (async () => {
|
||||||
|
if (isOwner) {
|
||||||
|
return {
|
||||||
|
Per: new AppPermission({ isOwner: true })
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
AppFolderTypeList.includes(app.type) ||
|
AppFolderTypeList.includes(app.type) ||
|
||||||
app.inheritPermission === false ||
|
app.inheritPermission === false ||
|
||||||
|
@@ -64,6 +64,11 @@ export const authDatasetByTmbId = async ({
|
|||||||
|
|
||||||
// get dataset permission or inherit permission from parent folder.
|
// get dataset permission or inherit permission from parent folder.
|
||||||
const { Per } = await (async () => {
|
const { Per } = await (async () => {
|
||||||
|
if (isOwner) {
|
||||||
|
return {
|
||||||
|
Per: new DatasetPermission({ isOwner: true })
|
||||||
|
};
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
dataset.type === DatasetTypeEnum.folder ||
|
dataset.type === DatasetTypeEnum.folder ||
|
||||||
dataset.inheritPermission === false ||
|
dataset.inheritPermission === false ||
|
||||||
|
@@ -107,16 +107,11 @@ async function handler(req: ApiRequestProps<ListAppBody>): Promise<AppListItemTy
|
|||||||
.limit(searchKey ? 20 : 1000)
|
.limit(searchKey ? 20 : 1000)
|
||||||
.lean(),
|
.lean(),
|
||||||
MongoResourcePermission.find({
|
MongoResourcePermission.find({
|
||||||
$and: [
|
resourceType: PerResourceTypeEnum.app,
|
||||||
{
|
teamId,
|
||||||
resourceType: PerResourceTypeEnum.app,
|
resourceId: {
|
||||||
teamId,
|
$exists: true
|
||||||
resourceId: {
|
}
|
||||||
$exists: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ $or: [{ tmbId }, { groupId: { $in: myGroupIds } }] }
|
|
||||||
]
|
|
||||||
}).lean()
|
}).lean()
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -143,7 +138,8 @@ async function handler(req: ApiRequestProps<ListAppBody>): Promise<AppListItemTy
|
|||||||
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: !tmbPer && !groupPer
|
privateApp:
|
||||||
|
perList.filter((item) => String(item.resourceId) === String(app._id)).length <= 1
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
const tmbPer = perList.find(
|
const tmbPer = perList.find(
|
||||||
@@ -160,14 +156,16 @@ async function handler(req: ApiRequestProps<ListAppBody>): Promise<AppListItemTy
|
|||||||
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: !tmbPer && !groupPer
|
privateApp:
|
||||||
|
perList.filter((item) => String(item.resourceId) === String(app._id)).length <= 1
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...app,
|
...app,
|
||||||
permission: Per,
|
permission: Per,
|
||||||
privateApp: privateApp
|
privateApp
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
.filter((app) => app.permission.hasReadPer);
|
.filter((app) => app.permission.hasReadPer);
|
||||||
|
@@ -92,16 +92,11 @@ async function handler(req: ApiRequestProps<GetDatasetListBody>) {
|
|||||||
})
|
})
|
||||||
.lean(),
|
.lean(),
|
||||||
MongoResourcePermission.find({
|
MongoResourcePermission.find({
|
||||||
$and: [
|
resourceType: PerResourceTypeEnum.dataset,
|
||||||
{
|
teamId,
|
||||||
resourceType: PerResourceTypeEnum.dataset,
|
resourceId: {
|
||||||
teamId,
|
$exists: true
|
||||||
resourceId: {
|
}
|
||||||
$exists: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ $or: [{ tmbId }, { groupId: { $in: myGroupIds } }] }
|
|
||||||
]
|
|
||||||
}).lean()
|
}).lean()
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -127,7 +122,8 @@ async function handler(req: ApiRequestProps<GetDatasetListBody>) {
|
|||||||
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
||||||
isOwner: String(parentDataset.tmbId) === tmbId || myPer.isOwner
|
isOwner: String(parentDataset.tmbId) === tmbId || myPer.isOwner
|
||||||
}),
|
}),
|
||||||
privateDataset: !tmbPer && !groupPer
|
privateDataset:
|
||||||
|
perList.filter((item) => String(item.resourceId) === String(dataset._id)).length <= 1
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
const tmbPer = perList.find(
|
const tmbPer = perList.find(
|
||||||
@@ -148,10 +144,12 @@ async function handler(req: ApiRequestProps<GetDatasetListBody>) {
|
|||||||
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
||||||
isOwner: String(dataset.tmbId) === tmbId || myPer.isOwner
|
isOwner: String(dataset.tmbId) === tmbId || myPer.isOwner
|
||||||
}),
|
}),
|
||||||
privateDataset: !tmbPer && !groupPer
|
privateDataset:
|
||||||
|
perList.filter((item) => String(item.resourceId) === String(dataset._id)).length <= 1
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...dataset,
|
...dataset,
|
||||||
permission: Per,
|
permission: Per,
|
||||||
|
Reference in New Issue
Block a user