fix(mongodb): support createUser shell commands

Closes #5639
This commit is contained in:
t8y2 committed 2026-08-09 15:51:04 +08:00
1 parent e7f496bf0b
commit 9e3013adf9
25 files changed
+481 -12

No files matched your search

+1
View File
@@ -632,6 +632,7 @@ async fn main() {
.route("/mongo/aggregate-documents", post(routes::mongo::aggregate_documents))
.route("/mongo/distinct", post(routes::mongo::distinct))
.route("/mongo/create-index", post(routes::mongo::create_index))
.route("/mongo/create-user", post(routes::mongo::create_user))
.route("/mongo/drop-indexes", post(routes::mongo::drop_indexes))
.route("/mongo/insert-document", post(routes::mongo::insert_document))
.route("/mongo/insert-documents", post(routes::mongo::insert_documents))
+29
View File
@@ -191,6 +191,15 @@ pub struct MongoCreateIndexRequest {
pub options_json: Option<String>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MongoCreateUserRequest {
pub connection_id: String,
pub database: String,
pub user_json: String,
pub write_concern_json: Option<String>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MongoDropIndexesRequest {
@@ -616,6 +625,26 @@ pub async fn create_index(
Ok(Json(serde_json::json!({ "name": name })))
}
pub async fn create_user(
State(state): State<Arc<WebState>>,
headers: HeaderMap,
Json(req): Json<MongoCreateUserRequest>,
) -> Result<Json<serde_json::Value>, AppError> {
super::mcp_policy::ensure_dangerous_write(&state, &headers, &req.connection_id, &req.database, "Create user")
.await?;
ensure_writable(&state.app, &req.connection_id, "Create user").await?;
let affected_rows = dbx_core::mongo_ops::mongo_create_user_core(
&state.app,
&req.connection_id,
&req.database,
&req.user_json,
req.write_concern_json.as_deref(),
)
.await
.map_err(AppError::from)?;
Ok(Json(serde_json::json!({ "affected_rows": affected_rows })))
}
pub async fn drop_indexes(
State(state): State<Arc<WebState>>,
headers: HeaderMap,