feat: gate code runs by user whitelist
This commit is contained in:
@@ -4,10 +4,20 @@ function envFlag(value) {
|
||||
return ['1', 'true', 'yes', 'on'].includes(String(value ?? '').trim().toLowerCase());
|
||||
}
|
||||
|
||||
function parseUserIdSet(value) {
|
||||
return new Set(
|
||||
String(value ?? '')
|
||||
.split(',')
|
||||
.map((item) => item.trim())
|
||||
.filter(Boolean),
|
||||
);
|
||||
}
|
||||
|
||||
export function createPostAgentRunsHandler({
|
||||
userAuth,
|
||||
agentRunGateway,
|
||||
codeRunsEnabled = envFlag(process.env.MEMIND_AGENT_CODE_RUNS_ENABLED),
|
||||
codeRunUserIds = parseUserIdSet(process.env.MEMIND_AGENT_CODE_RUNS_USER_IDS),
|
||||
}) {
|
||||
return async function postAgentRuns(request, response) {
|
||||
try {
|
||||
@@ -37,6 +47,14 @@ export function createPostAgentRunsHandler({
|
||||
response.status(403).json({ message: '代码任务灰度未开启' });
|
||||
return;
|
||||
}
|
||||
if (
|
||||
toolMode === 'code' &&
|
||||
codeRunUserIds.size > 0 &&
|
||||
!codeRunUserIds.has(request.currentUser.id)
|
||||
) {
|
||||
response.status(403).json({ message: '当前用户未开启代码任务灰度' });
|
||||
return;
|
||||
}
|
||||
if (sessionId) {
|
||||
const owns = await userAuth.ownsSession(request.currentUser.id, sessionId);
|
||||
if (!owns) {
|
||||
|
||||
Reference in New Issue
Block a user