feat: gate code runs by user whitelist

This commit is contained in:
John
2026-07-02 08:42:44 +08:00
parent 8a53dff856
commit c7d8140a69
7 changed files with 117 additions and 2 deletions
+18
View File
@@ -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) {