Skip to content

Commit cc45f47

Browse files
committed
fix: Fix MCP oid missing validation
1 parent 5b94406 commit cc45f47

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

backend/apps/mcp/mcp.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,14 @@ async def ws_list(session: SessionDep, trans: Trans, token: str):
105105

106106

107107
@router.post("/mcp_ds_list", operation_id="mcp_datasource_list")
108-
async def datasource_list(session: SessionDep, mcp_ds: McpDs):
108+
async def datasource_list(session: SessionDep, trans: Trans, mcp_ds: McpDs):
109109
session_user = get_user(session, mcp_ds.token)
110110
if mcp_ds.oid:
111+
w_list = await user_ws_options(session, session_user.id, trans)
112+
oid_list = [item.id for item in w_list]
113+
if int(mcp_ds.oid) not in oid_list:
114+
raise HTTPException(status_code=400, detail="This user not in current workspace")
115+
111116
session_user.oid = int(mcp_ds.oid)
112117
ds_list = get_datasource_list(session=session, user=session_user)
113118
result = []
@@ -129,12 +134,17 @@ async def datasource_list(session: SessionDep, mcp_ds: McpDs):
129134

130135

131136
@router.post("/mcp_question", operation_id="mcp_question")
132-
async def mcp_question(session: SessionDep, chat: McpQuestion):
137+
async def mcp_question(session: SessionDep, trans: Trans, chat: McpQuestion):
133138
session_user = get_user(session, chat.token)
134139
lang = chat.lang
135140
if lang in ["zh-CN", "zh-TW", "en", "ko-KR"]:
136141
session_user.language = lang
137142
if chat.oid:
143+
w_list = await user_ws_options(session, session_user.id, trans)
144+
oid_list = [item.id for item in w_list]
145+
if int(chat.oid) not in oid_list:
146+
raise HTTPException(status_code=400, detail="This user not in current workspace")
147+
138148
session_user.oid = int(chat.oid)
139149
ds_id: Optional[int] = None
140150
if chat.datasource_id:

0 commit comments

Comments
 (0)